\sqrt{x + 1} - \sqrt{x}{\left(\left(\sqrt{x} + \mathsf{hypot}\left(\sqrt{x}, 1\right)\right) \cdot \left(\sqrt{x} + \mathsf{hypot}\left(\sqrt{x}, 1\right)\right)\right)}^{\frac{-1}{2}}double f(double x) {
double r3604236 = x;
double r3604237 = 1.0;
double r3604238 = r3604236 + r3604237;
double r3604239 = sqrt(r3604238);
double r3604240 = sqrt(r3604236);
double r3604241 = r3604239 - r3604240;
return r3604241;
}
double f(double x) {
double r3604242 = x;
double r3604243 = sqrt(r3604242);
double r3604244 = 1.0;
double r3604245 = hypot(r3604243, r3604244);
double r3604246 = r3604243 + r3604245;
double r3604247 = r3604246 * r3604246;
double r3604248 = -0.5;
double r3604249 = pow(r3604247, r3604248);
return r3604249;
}




Bits error versus x
Results
| Original | 29.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 29.3
rmApplied flip--29.1
Simplified0.2
rmApplied *-un-lft-identity0.2
Applied add-sqr-sqrt0.2
Applied hypot-def0.2
rmApplied add-sqr-sqrt0.3
rmApplied inv-pow0.3
Applied sqrt-pow10.3
Applied inv-pow0.3
Applied sqrt-pow10.3
Applied pow-prod-down0.2
Final simplification0.2
herbie shell --seed 2019138 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))