double f(double x) {
double r8188563 = x;
double r8188564 = 1.0;
double r8188565 = r8188563 + r8188564;
double r8188566 = sqrt(r8188565);
double r8188567 = sqrt(r8188563);
double r8188568 = r8188566 - r8188567;
return r8188568;
}
double f(double x) {
double r8188569 = 1.0;
double r8188570 = x;
double r8188571 = r8188570 + r8188569;
double r8188572 = sqrt(r8188571);
double r8188573 = sqrt(r8188570);
double r8188574 = r8188572 + r8188573;
double r8188575 = r8188569 / r8188574;
return r8188575;
}
\sqrt{x + 1} - \sqrt{x}\frac{1}{\sqrt{x + 1} + \sqrt{x}}



Bits error versus x
| Original | 30.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 30.2
rmApplied flip--30.0
Taylor expanded around 0 0.2
Final simplification0.2
herbie shell --seed 2019101 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))