\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{\frac{1}{\sqrt{x + 1} + \sqrt{x}}}{\sqrt{x}}}{\sqrt{x + 1}}double f(double x) {
double r5234287 = 1.0;
double r5234288 = x;
double r5234289 = sqrt(r5234288);
double r5234290 = r5234287 / r5234289;
double r5234291 = r5234288 + r5234287;
double r5234292 = sqrt(r5234291);
double r5234293 = r5234287 / r5234292;
double r5234294 = r5234290 - r5234293;
return r5234294;
}
double f(double x) {
double r5234295 = 1.0;
double r5234296 = x;
double r5234297 = r5234296 + r5234295;
double r5234298 = sqrt(r5234297);
double r5234299 = sqrt(r5234296);
double r5234300 = r5234298 + r5234299;
double r5234301 = r5234295 / r5234300;
double r5234302 = r5234301 / r5234299;
double r5234303 = r5234302 / r5234298;
return r5234303;
}




Bits error versus x
Results
| Original | 19.5 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 19.5
rmApplied frac-sub19.5
Simplified19.5
rmApplied flip--19.3
Simplified18.9
Taylor expanded around 0 0.4
rmApplied associate-/r*0.4
Final simplification0.4
herbie shell --seed 2019158 +o rules:numerics
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))