\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 r156622 = 1.0;
double r156623 = x;
double r156624 = sqrt(r156623);
double r156625 = r156622 / r156624;
double r156626 = r156623 + r156622;
double r156627 = sqrt(r156626);
double r156628 = r156622 / r156627;
double r156629 = r156625 - r156628;
return r156629;
}
double f(double x) {
double r156630 = 1.0;
double r156631 = x;
double r156632 = sqrt(r156631);
double r156633 = r156630 / r156632;
double r156634 = r156631 + r156630;
double r156635 = sqrt(r156634);
double r156636 = fma(r156635, r156632, r156634);
double r156637 = r156630 / r156636;
double r156638 = r156633 * r156637;
return r156638;
}




Bits error versus x
| Original | 20.0 |
|---|---|
| Target | 0.6 |
| Herbie | 0.3 |
Initial program 20.0
rmApplied frac-sub20.0
Simplified20.0
rmApplied flip--19.8
Simplified19.4
Taylor expanded around 0 0.4
rmApplied times-frac0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2020001 +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)))))