\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\sqrt{x}}}{\frac{\sqrt{x + 1} + \sqrt{x}}{\frac{1}{\sqrt{x + 1}}}}double f(double x) {
double r12272539 = 1.0;
double r12272540 = x;
double r12272541 = sqrt(r12272540);
double r12272542 = r12272539 / r12272541;
double r12272543 = r12272540 + r12272539;
double r12272544 = sqrt(r12272543);
double r12272545 = r12272539 / r12272544;
double r12272546 = r12272542 - r12272545;
return r12272546;
}
double f(double x) {
double r12272547 = 1.0;
double r12272548 = x;
double r12272549 = sqrt(r12272548);
double r12272550 = r12272547 / r12272549;
double r12272551 = r12272548 + r12272547;
double r12272552 = sqrt(r12272551);
double r12272553 = r12272552 + r12272549;
double r12272554 = r12272547 / r12272552;
double r12272555 = r12272553 / r12272554;
double r12272556 = r12272550 / r12272555;
return r12272556;
}




Bits error versus x
Results
| Original | 19.7 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 19.7
rmApplied frac-sub19.7
Simplified19.7
rmApplied flip--19.5
Applied associate-/l/19.5
Simplified0.8
rmApplied associate-/r*0.4
rmApplied *-un-lft-identity0.4
Applied times-frac0.4
Applied associate-/l*0.4
Final simplification0.4
herbie shell --seed 2019104 +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)))))