double f(double x) {
double r15583226 = x;
double r15583227 = 1.0;
double r15583228 = r15583226 + r15583227;
double r15583229 = sqrt(r15583228);
double r15583230 = sqrt(r15583226);
double r15583231 = r15583229 - r15583230;
return r15583231;
}
double f(double x) {
double r15583232 = 1.0;
double r15583233 = x;
double r15583234 = r15583232 + r15583233;
double r15583235 = sqrt(r15583234);
double r15583236 = sqrt(r15583233);
double r15583237 = r15583235 + r15583236;
double r15583238 = r15583237 * r15583237;
double r15583239 = -0.5;
double r15583240 = pow(r15583238, r15583239);
return r15583240;
}
\sqrt{x + 1} - \sqrt{x}{\left(\left(\sqrt{1 + x} + \sqrt{x}\right) \cdot \left(\sqrt{1 + x} + \sqrt{x}\right)\right)}^{\frac{-1}{2}}



Bits error versus x
| Original | 30.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 30.0
rmApplied flip--29.8
Taylor expanded around inf 0.2
rmApplied add-sqr-sqrt0.3
rmApplied pow1/20.3
Applied pow1/20.3
Applied pow-prod-down0.2
Applied pow-flip0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019102 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))