\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 r228238 = 1.0;
double r228239 = x;
double r228240 = sqrt(r228239);
double r228241 = r228238 / r228240;
double r228242 = r228239 + r228238;
double r228243 = sqrt(r228242);
double r228244 = r228238 / r228243;
double r228245 = r228241 - r228244;
return r228245;
}
double f(double x) {
double r228246 = 1.0;
double r228247 = x;
double r228248 = sqrt(r228247);
double r228249 = r228246 / r228248;
double r228250 = r228247 + r228246;
double r228251 = sqrt(r228250);
double r228252 = fma(r228251, r228248, r228250);
double r228253 = r228246 / r228252;
double r228254 = r228249 * r228253;
return r228254;
}




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