\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\sqrt{\sqrt{x + 1}}}}{\sqrt{\sqrt{x + 1}}} \cdot \frac{1}{\sqrt{x} \cdot \sqrt{x + 1} + x}double f(double x) {
double r125765 = 1.0;
double r125766 = x;
double r125767 = sqrt(r125766);
double r125768 = r125765 / r125767;
double r125769 = r125766 + r125765;
double r125770 = sqrt(r125769);
double r125771 = r125765 / r125770;
double r125772 = r125768 - r125771;
return r125772;
}
double f(double x) {
double r125773 = 1.0;
double r125774 = x;
double r125775 = r125774 + r125773;
double r125776 = sqrt(r125775);
double r125777 = sqrt(r125776);
double r125778 = r125773 / r125777;
double r125779 = r125778 / r125777;
double r125780 = sqrt(r125774);
double r125781 = r125780 * r125776;
double r125782 = r125781 + r125774;
double r125783 = r125773 / r125782;
double r125784 = r125779 * r125783;
return r125784;
}




Bits error versus x
Results
| Original | 19.7 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.7
rmApplied frac-sub19.7
Simplified19.7
Simplified19.7
rmApplied flip--19.5
Simplified0.4
rmApplied times-frac0.4
Simplified0.4
rmApplied add-sqr-sqrt0.4
Applied sqrt-prod0.4
Applied associate-/r*0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019174
(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)))))