\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 r170178 = 1.0;
double r170179 = x;
double r170180 = sqrt(r170179);
double r170181 = r170178 / r170180;
double r170182 = r170179 + r170178;
double r170183 = sqrt(r170182);
double r170184 = r170178 / r170183;
double r170185 = r170181 - r170184;
return r170185;
}
double f(double x) {
double r170186 = 1.0;
double r170187 = x;
double r170188 = sqrt(r170187);
double r170189 = r170186 / r170188;
double r170190 = r170187 + r170186;
double r170191 = sqrt(r170190);
double r170192 = fma(r170191, r170188, r170190);
double r170193 = r170186 / r170192;
double r170194 = r170189 * r170193;
return r170194;
}




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)))))