\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\sqrt{\frac{\frac{1}{\sqrt{x + 1} + \sqrt{x}}}{\sqrt{x + 1}}} \cdot \left(\frac{1}{\sqrt{x}} \cdot \sqrt{\frac{\frac{1}{\sqrt{x + 1} + \sqrt{x}}}{\sqrt{x + 1}}}\right)double f(double x) {
double r2137189 = 1.0;
double r2137190 = x;
double r2137191 = sqrt(r2137190);
double r2137192 = r2137189 / r2137191;
double r2137193 = r2137190 + r2137189;
double r2137194 = sqrt(r2137193);
double r2137195 = r2137189 / r2137194;
double r2137196 = r2137192 - r2137195;
return r2137196;
}
double f(double x) {
double r2137197 = 1.0;
double r2137198 = x;
double r2137199 = r2137198 + r2137197;
double r2137200 = sqrt(r2137199);
double r2137201 = sqrt(r2137198);
double r2137202 = r2137200 + r2137201;
double r2137203 = r2137197 / r2137202;
double r2137204 = r2137203 / r2137200;
double r2137205 = sqrt(r2137204);
double r2137206 = r2137197 / r2137201;
double r2137207 = r2137206 * r2137205;
double r2137208 = r2137205 * r2137207;
return r2137208;
}




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.4
Applied associate-*r*0.4
Final simplification0.4
herbie shell --seed 2019153 +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)))))