\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\left(\sqrt{x + 1} + \sqrt{x}\right) \cdot 1}}{\sqrt{x + 1} \cdot \sqrt{x}}double f(double x) {
double r107427 = 1.0;
double r107428 = x;
double r107429 = sqrt(r107428);
double r107430 = r107427 / r107429;
double r107431 = r107428 + r107427;
double r107432 = sqrt(r107431);
double r107433 = r107427 / r107432;
double r107434 = r107430 - r107433;
return r107434;
}
double f(double x) {
double r107435 = 1.0;
double r107436 = x;
double r107437 = r107436 + r107435;
double r107438 = sqrt(r107437);
double r107439 = sqrt(r107436);
double r107440 = r107438 + r107439;
double r107441 = r107440 * r107435;
double r107442 = r107435 / r107441;
double r107443 = r107438 * r107439;
double r107444 = r107442 / r107443;
return r107444;
}




Bits error versus x
Results
| Original | 19.6 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.6
rmApplied frac-sub19.6
Simplified19.6
rmApplied flip--19.5
Simplified19.1
Simplified19.1
Taylor expanded around 0 0.4
Final simplification0.4
herbie shell --seed 2019195 +o rules:numerics
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1.0 (+ (* (+ x 1.0) (sqrt x)) (* x (sqrt (+ x 1.0)))))
(- (/ 1.0 (sqrt x)) (/ 1.0 (sqrt (+ x 1.0)))))