\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{\frac{1}{\sqrt{x + 1} + \sqrt{x}}}{\sqrt{\sqrt{x + 1}}}}{\sqrt{\sqrt{x + 1}}} \cdot \frac{1}{\sqrt{x}}double f(double x) {
double r2364587 = 1.0;
double r2364588 = x;
double r2364589 = sqrt(r2364588);
double r2364590 = r2364587 / r2364589;
double r2364591 = r2364588 + r2364587;
double r2364592 = sqrt(r2364591);
double r2364593 = r2364587 / r2364592;
double r2364594 = r2364590 - r2364593;
return r2364594;
}
double f(double x) {
double r2364595 = 1.0;
double r2364596 = x;
double r2364597 = r2364596 + r2364595;
double r2364598 = sqrt(r2364597);
double r2364599 = sqrt(r2364596);
double r2364600 = r2364598 + r2364599;
double r2364601 = r2364595 / r2364600;
double r2364602 = sqrt(r2364598);
double r2364603 = r2364601 / r2364602;
double r2364604 = r2364603 / r2364602;
double r2364605 = r2364595 / r2364599;
double r2364606 = r2364604 * r2364605;
return r2364606;
}




Bits error versus x
Results
| Original | 19.6 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 19.6
rmApplied frac-sub19.5
Simplified19.5
rmApplied flip--19.3
Simplified18.9
rmApplied div-inv18.9
Applied times-frac18.9
Simplified0.4
rmApplied add-sqr-sqrt0.5
Applied associate-/r*0.4
Final simplification0.4
herbie shell --seed 2019153
(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)))))