\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1 \cdot \frac{1}{\sqrt{x + 1} + \sqrt{x}}}{\sqrt{x}}}{\sqrt{x + 1}}double f(double x) {
double r178407 = 1.0;
double r178408 = x;
double r178409 = sqrt(r178408);
double r178410 = r178407 / r178409;
double r178411 = r178408 + r178407;
double r178412 = sqrt(r178411);
double r178413 = r178407 / r178412;
double r178414 = r178410 - r178413;
return r178414;
}
double f(double x) {
double r178415 = 1.0;
double r178416 = x;
double r178417 = r178416 + r178415;
double r178418 = sqrt(r178417);
double r178419 = sqrt(r178416);
double r178420 = r178418 + r178419;
double r178421 = r178415 / r178420;
double r178422 = r178415 * r178421;
double r178423 = r178422 / r178419;
double r178424 = r178423 / r178418;
return r178424;
}




Bits error versus x
Results
| Original | 19.4 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.4
rmApplied frac-sub19.3
Simplified19.3
rmApplied flip--19.0
Simplified18.6
Taylor expanded around 0 0.4
rmApplied associate-/r*0.4
Final simplification0.4
herbie shell --seed 2020062 +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)))))