\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{1 \cdot \left(\sqrt{x + 1} + \sqrt{x}\right)}}{\left(\sqrt{x} \cdot \sqrt{\sqrt{x + 1}}\right) \cdot \sqrt{\sqrt{x + 1}}}double f(double x) {
double r176239 = 1.0;
double r176240 = x;
double r176241 = sqrt(r176240);
double r176242 = r176239 / r176241;
double r176243 = r176240 + r176239;
double r176244 = sqrt(r176243);
double r176245 = r176239 / r176244;
double r176246 = r176242 - r176245;
return r176246;
}
double f(double x) {
double r176247 = 1.0;
double r176248 = x;
double r176249 = r176248 + r176247;
double r176250 = sqrt(r176249);
double r176251 = sqrt(r176248);
double r176252 = r176250 + r176251;
double r176253 = r176247 * r176252;
double r176254 = r176247 / r176253;
double r176255 = sqrt(r176250);
double r176256 = r176251 * r176255;
double r176257 = r176256 * r176255;
double r176258 = r176254 / r176257;
return r176258;
}




Bits error versus x
Results
| Original | 20.1 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 20.1
rmApplied frac-sub20.1
rmApplied flip--19.8
Simplified19.5
Simplified19.5
Taylor expanded around 0 0.4
rmApplied add-sqr-sqrt0.4
Applied sqrt-prod0.4
Applied associate-*r*0.4
Final simplification0.4
herbie shell --seed 2019209 +o rules:numerics
(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)))))