\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1 \cdot \frac{1}{\sqrt{x + 1} + \sqrt{x}}}{\sqrt{x}}}{\sqrt{x + 1}}double f(double x) {
double r142866 = 1.0;
double r142867 = x;
double r142868 = sqrt(r142867);
double r142869 = r142866 / r142868;
double r142870 = r142867 + r142866;
double r142871 = sqrt(r142870);
double r142872 = r142866 / r142871;
double r142873 = r142869 - r142872;
return r142873;
}
double f(double x) {
double r142874 = 1.0;
double r142875 = x;
double r142876 = r142875 + r142874;
double r142877 = sqrt(r142876);
double r142878 = sqrt(r142875);
double r142879 = r142877 + r142878;
double r142880 = r142874 / r142879;
double r142881 = r142874 * r142880;
double r142882 = r142881 / r142878;
double r142883 = r142882 / r142877;
return r142883;
}




Bits error versus x
Results
| Original | 19.7 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.7
rmApplied frac-sub19.7
Simplified19.7
rmApplied flip--19.5
Simplified19.1
Taylor expanded around 0 0.4
rmApplied associate-/r*0.4
Final simplification0.4
herbie shell --seed 2019354
(FPCore (x)
:name "2isqrt (example 3.6)"
:precision binary64
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))