\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1}{\sqrt{x + 1} + \sqrt{x}} \cdot \left(\frac{\sqrt{\frac{1}{\sqrt{x + 1}}}}{\sqrt{x}} \cdot \sqrt{\frac{1}{\sqrt{x + 1}}}\right)double f(double x) {
double r9219399 = 1.0;
double r9219400 = x;
double r9219401 = sqrt(r9219400);
double r9219402 = r9219399 / r9219401;
double r9219403 = r9219400 + r9219399;
double r9219404 = sqrt(r9219403);
double r9219405 = r9219399 / r9219404;
double r9219406 = r9219402 - r9219405;
return r9219406;
}
double f(double x) {
double r9219407 = 1.0;
double r9219408 = x;
double r9219409 = r9219408 + r9219407;
double r9219410 = sqrt(r9219409);
double r9219411 = sqrt(r9219408);
double r9219412 = r9219410 + r9219411;
double r9219413 = r9219407 / r9219412;
double r9219414 = r9219407 / r9219410;
double r9219415 = sqrt(r9219414);
double r9219416 = r9219415 / r9219411;
double r9219417 = r9219416 * r9219415;
double r9219418 = r9219413 * r9219417;
return r9219418;
}




Bits error versus x
Results
| Original | 19.8 |
|---|---|
| Target | 0.6 |
| Herbie | 0.5 |
Initial program 19.8
rmApplied frac-sub19.7
Simplified19.7
rmApplied flip--19.5
Applied associate-/l/19.5
Simplified0.8
rmApplied add-cube-cbrt0.8
Applied times-frac0.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied add-sqr-sqrt0.5
Applied times-frac0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019120
(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)))))