\sqrt{x + 1} - \sqrt{x}\sqrt{\frac{1}{\sqrt{x + 1} + \sqrt{x}}} \cdot \left|\frac{\sqrt{1}}{\sqrt{\sqrt{x + 1} + \sqrt{x}}}\right|double f(double x) {
double r121260 = x;
double r121261 = 1.0;
double r121262 = r121260 + r121261;
double r121263 = sqrt(r121262);
double r121264 = sqrt(r121260);
double r121265 = r121263 - r121264;
return r121265;
}
double f(double x) {
double r121266 = 1.0;
double r121267 = x;
double r121268 = r121267 + r121266;
double r121269 = sqrt(r121268);
double r121270 = sqrt(r121267);
double r121271 = r121269 + r121270;
double r121272 = r121266 / r121271;
double r121273 = sqrt(r121272);
double r121274 = sqrt(r121266);
double r121275 = sqrt(r121271);
double r121276 = r121274 / r121275;
double r121277 = fabs(r121276);
double r121278 = r121273 * r121277;
return r121278;
}




Bits error versus x
Results
| Original | 30.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 30.2
rmApplied flip--30.0
Simplified0.2
rmApplied add-sqr-sqrt0.3
rmApplied add-sqr-sqrt0.3
Applied add-sqr-sqrt0.3
Applied times-frac0.3
Applied rem-sqrt-square0.3
Final simplification0.3
herbie shell --seed 2019308
(FPCore (x)
:name "2sqrt (example 3.1)"
:precision binary64
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))