\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{(\left(\sqrt{x}\right) \cdot \left(\sqrt{x + 1}\right) + \left(x + 1\right))_*}}{\sqrt{x}}double f(double x) {
double r18897821 = 1.0;
double r18897822 = x;
double r18897823 = sqrt(r18897822);
double r18897824 = r18897821 / r18897823;
double r18897825 = r18897822 + r18897821;
double r18897826 = sqrt(r18897825);
double r18897827 = r18897821 / r18897826;
double r18897828 = r18897824 - r18897827;
return r18897828;
}
double f(double x) {
double r18897829 = 1.0;
double r18897830 = x;
double r18897831 = sqrt(r18897830);
double r18897832 = r18897830 + r18897829;
double r18897833 = sqrt(r18897832);
double r18897834 = fma(r18897831, r18897833, r18897832);
double r18897835 = r18897829 / r18897834;
double r18897836 = r18897835 / r18897831;
return r18897836;
}




Bits error versus x
| Original | 19.8 |
|---|---|
| Target | 0.7 |
| Herbie | 0.3 |
Initial program 19.8
rmApplied frac-sub19.8
Simplified19.8
rmApplied flip--19.6
Applied associate-/l/19.6
Simplified0.8
rmApplied add-cube-cbrt0.8
Applied times-frac0.4
Simplified0.4
rmApplied associate-*l/0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019107 +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)))))