\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\left(\frac{\sqrt{1}}{\sqrt{\sqrt{1 + x}}} \cdot \frac{\sqrt{1}}{\sqrt{\sqrt{1 + x}}}\right) \cdot \frac{1}{x + \sqrt{1 + x} \cdot \sqrt{x}}double f(double x) {
double r133266 = 1.0;
double r133267 = x;
double r133268 = sqrt(r133267);
double r133269 = r133266 / r133268;
double r133270 = r133267 + r133266;
double r133271 = sqrt(r133270);
double r133272 = r133266 / r133271;
double r133273 = r133269 - r133272;
return r133273;
}
double f(double x) {
double r133274 = 1.0;
double r133275 = sqrt(r133274);
double r133276 = x;
double r133277 = r133274 + r133276;
double r133278 = sqrt(r133277);
double r133279 = sqrt(r133278);
double r133280 = r133275 / r133279;
double r133281 = r133280 * r133280;
double r133282 = sqrt(r133276);
double r133283 = r133278 * r133282;
double r133284 = r133276 + r133283;
double r133285 = r133274 / r133284;
double r133286 = r133281 * r133285;
return r133286;
}




Bits error versus x
Results
| Original | 19.5 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 19.5
rmApplied frac-sub19.5
Simplified19.5
Simplified19.5
rmApplied flip--19.3
Simplified0.4
rmApplied times-frac0.4
Simplified0.4
Simplified0.3
rmApplied add-sqr-sqrt0.3
Applied sqrt-prod0.4
Applied add-sqr-sqrt0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019196
(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)))))