\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1}{\sqrt{x}} \cdot \frac{1}{\mathsf{fma}\left(\sqrt{x + 1}, \sqrt{x}, x + 1\right)}double f(double x) {
double r149848 = 1.0;
double r149849 = x;
double r149850 = sqrt(r149849);
double r149851 = r149848 / r149850;
double r149852 = r149849 + r149848;
double r149853 = sqrt(r149852);
double r149854 = r149848 / r149853;
double r149855 = r149851 - r149854;
return r149855;
}
double f(double x) {
double r149856 = 1.0;
double r149857 = x;
double r149858 = sqrt(r149857);
double r149859 = r149856 / r149858;
double r149860 = r149857 + r149856;
double r149861 = sqrt(r149860);
double r149862 = fma(r149861, r149858, r149860);
double r149863 = r149856 / r149862;
double r149864 = r149859 * r149863;
return r149864;
}




Bits error versus x
| Original | 19.5 |
|---|---|
| Target | 0.7 |
| Herbie | 0.3 |
Initial program 19.5
rmApplied frac-sub19.5
Simplified19.5
rmApplied flip--19.2
Simplified18.8
Taylor expanded around 0 0.4
rmApplied times-frac0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019362 +o rules:numerics
(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)))))