\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 r9303761 = 1.0;
double r9303762 = x;
double r9303763 = sqrt(r9303762);
double r9303764 = r9303761 / r9303763;
double r9303765 = r9303762 + r9303761;
double r9303766 = sqrt(r9303765);
double r9303767 = r9303761 / r9303766;
double r9303768 = r9303764 - r9303767;
return r9303768;
}
double f(double x) {
double r9303769 = 1.0;
double r9303770 = x;
double r9303771 = sqrt(r9303770);
double r9303772 = r9303769 / r9303771;
double r9303773 = r9303770 + r9303769;
double r9303774 = sqrt(r9303773);
double r9303775 = r9303774 + r9303771;
double r9303776 = r9303769 / r9303774;
double r9303777 = r9303775 / r9303776;
double r9303778 = r9303772 / r9303777;
return r9303778;
}




Bits error versus x
Results
| Original | 19.8 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.8
rmApplied frac-sub19.8
Simplified19.8
rmApplied flip--19.6
Applied associate-/l/19.6
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 2019121
(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)))))