\sqrt{x + 1} - \sqrt{x}\frac{1}{\sqrt{\sqrt{x + 1}} \cdot \sqrt{\sqrt{x + 1}} + \sqrt{x}}double f(double x) {
double r142677 = x;
double r142678 = 1.0;
double r142679 = r142677 + r142678;
double r142680 = sqrt(r142679);
double r142681 = sqrt(r142677);
double r142682 = r142680 - r142681;
return r142682;
}
double f(double x) {
double r142683 = 1.0;
double r142684 = x;
double r142685 = r142684 + r142683;
double r142686 = sqrt(r142685);
double r142687 = sqrt(r142686);
double r142688 = r142687 * r142687;
double r142689 = sqrt(r142684);
double r142690 = r142688 + r142689;
double r142691 = r142683 / r142690;
return r142691;
}




Bits error versus x
Results
| Original | 30.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 30.0
Simplified30.0
rmApplied flip--29.9
Simplified0.2
rmApplied add-sqr-sqrt0.2
Applied sqrt-prod0.3
Final simplification0.3
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1.0 (+ (sqrt (+ x 1.0)) (sqrt x)))
(- (sqrt (+ x 1.0)) (sqrt x)))