\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\mathsf{fma}\left(\left(\sqrt{x}\right), \left(\sqrt{x + 1}\right), x\right)}}{\sqrt{x + 1}}double f(double x) {
double r20541839 = 1.0;
double r20541840 = x;
double r20541841 = sqrt(r20541840);
double r20541842 = r20541839 / r20541841;
double r20541843 = r20541840 + r20541839;
double r20541844 = sqrt(r20541843);
double r20541845 = r20541839 / r20541844;
double r20541846 = r20541842 - r20541845;
return r20541846;
}
double f(double x) {
double r20541847 = 1.0;
double r20541848 = x;
double r20541849 = sqrt(r20541848);
double r20541850 = r20541848 + r20541847;
double r20541851 = sqrt(r20541850);
double r20541852 = fma(r20541849, r20541851, r20541848);
double r20541853 = r20541847 / r20541852;
double r20541854 = r20541853 / r20541851;
return r20541854;
}




Bits error versus x
| Original | 19.2 |
|---|---|
| Target | 0.6 |
| Herbie | 0.3 |
Initial program 19.2
rmApplied frac-sub19.2
Simplified19.2
rmApplied flip--19.0
Simplified0.4
rmApplied associate-/r*0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019125 +o rules:numerics
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))