\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1}{\sqrt{x}} \cdot \frac{1}{\left(x + 1\right) + \sqrt{x} \cdot \sqrt{x + 1}}double f(double x) {
double r108942 = 1.0;
double r108943 = x;
double r108944 = sqrt(r108943);
double r108945 = r108942 / r108944;
double r108946 = r108943 + r108942;
double r108947 = sqrt(r108946);
double r108948 = r108942 / r108947;
double r108949 = r108945 - r108948;
return r108949;
}
double f(double x) {
double r108950 = 1.0;
double r108951 = x;
double r108952 = sqrt(r108951);
double r108953 = r108950 / r108952;
double r108954 = r108951 + r108950;
double r108955 = sqrt(r108954);
double r108956 = r108952 * r108955;
double r108957 = r108954 + r108956;
double r108958 = r108950 / r108957;
double r108959 = r108953 * r108958;
return r108959;
}




Bits error versus x
Results
| Original | 19.4 |
|---|---|
| Target | 0.8 |
| Herbie | 0.3 |
Initial program 19.4
rmApplied frac-sub19.4
Simplified19.4
rmApplied flip--19.2
Simplified18.9
Simplified18.9
Taylor expanded around 0 0.4
rmApplied times-frac0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019212
(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)))))