\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\sqrt{x}}}{\frac{\sqrt{x + 1} + \sqrt{x}}{\frac{1}{\sqrt{x + 1}}}}double f(double x) {
double r10108864 = 1.0;
double r10108865 = x;
double r10108866 = sqrt(r10108865);
double r10108867 = r10108864 / r10108866;
double r10108868 = r10108865 + r10108864;
double r10108869 = sqrt(r10108868);
double r10108870 = r10108864 / r10108869;
double r10108871 = r10108867 - r10108870;
return r10108871;
}
double f(double x) {
double r10108872 = 1.0;
double r10108873 = x;
double r10108874 = sqrt(r10108873);
double r10108875 = r10108872 / r10108874;
double r10108876 = r10108873 + r10108872;
double r10108877 = sqrt(r10108876);
double r10108878 = r10108877 + r10108874;
double r10108879 = r10108872 / r10108877;
double r10108880 = r10108878 / r10108879;
double r10108881 = r10108875 / r10108880;
return r10108881;
}




Bits error versus x
Results
| Original | 20.3 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 20.3
rmApplied frac-sub20.3
Simplified20.3
rmApplied flip--20.0
Applied associate-/l/20.0
Simplified0.8
rmApplied associate-/r*0.4
rmApplied *-un-lft-identity0.4
Applied times-frac0.4
Applied associate-/l*0.4
Final simplification0.4
herbie shell --seed 2019124
(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)))))