\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 r164603 = 1.0;
double r164604 = x;
double r164605 = sqrt(r164604);
double r164606 = r164603 / r164605;
double r164607 = r164604 + r164603;
double r164608 = sqrt(r164607);
double r164609 = r164603 / r164608;
double r164610 = r164606 - r164609;
return r164610;
}
double f(double x) {
double r164611 = 1.0;
double r164612 = x;
double r164613 = sqrt(r164612);
double r164614 = r164611 / r164613;
double r164615 = r164612 + r164611;
double r164616 = sqrt(r164615);
double r164617 = fma(r164616, r164613, r164615);
double r164618 = r164611 / r164617;
double r164619 = r164614 * r164618;
return r164619;
}




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