\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 r131563 = 1.0;
double r131564 = x;
double r131565 = sqrt(r131564);
double r131566 = r131563 / r131565;
double r131567 = r131564 + r131563;
double r131568 = sqrt(r131567);
double r131569 = r131563 / r131568;
double r131570 = r131566 - r131569;
return r131570;
}
double f(double x) {
double r131571 = 1.0;
double r131572 = x;
double r131573 = sqrt(r131572);
double r131574 = r131571 / r131573;
double r131575 = r131572 + r131571;
double r131576 = sqrt(r131575);
double r131577 = fma(r131576, r131573, r131575);
double r131578 = r131571 / r131577;
double r131579 = r131574 * r131578;
return r131579;
}




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