\sqrt{x + 1} - \sqrt{x}\frac{\frac{\sqrt{1}}{\sqrt{\sqrt{1}}}}{\frac{\sqrt{x + 1} + \sqrt{x}}{\sqrt{1}}}double f(double x) {
double r114225 = x;
double r114226 = 1.0;
double r114227 = r114225 + r114226;
double r114228 = sqrt(r114227);
double r114229 = sqrt(r114225);
double r114230 = r114228 - r114229;
return r114230;
}
double f(double x) {
double r114231 = 1.0;
double r114232 = sqrt(r114231);
double r114233 = 1.0;
double r114234 = sqrt(r114233);
double r114235 = sqrt(r114234);
double r114236 = r114232 / r114235;
double r114237 = x;
double r114238 = r114237 + r114231;
double r114239 = sqrt(r114238);
double r114240 = sqrt(r114237);
double r114241 = r114239 + r114240;
double r114242 = r114241 / r114232;
double r114243 = r114236 / r114242;
return r114243;
}




Bits error versus x
Results
| Original | 30.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 30.4
rmApplied flip--30.2
Simplified0.2
rmApplied add-sqr-sqrt0.4
Applied associate-/r*0.3
rmApplied *-un-lft-identity0.3
Applied sqrt-prod0.3
Applied *-un-lft-identity0.3
Applied sqrt-prod0.3
Applied distribute-lft-out0.3
Applied sqrt-prod0.3
Applied add-sqr-sqrt0.3
Applied times-frac0.3
Applied associate-/l*0.4
Simplified0.2
Final simplification0.2
herbie shell --seed 2020018
(FPCore (x)
:name "2sqrt (example 3.1)"
:precision binary64
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))