\sqrt{x + 1} - \sqrt{x}{\left(\frac{1 \cdot 1}{\left(\left(x + 1\right) + \sqrt{x + 1} \cdot \sqrt{x}\right) + \left(\sqrt{x + 1} \cdot \sqrt{x} + x\right)}\right)}^{\left(\frac{1}{2}\right)}double f(double x) {
double r152895 = x;
double r152896 = 1.0;
double r152897 = r152895 + r152896;
double r152898 = sqrt(r152897);
double r152899 = sqrt(r152895);
double r152900 = r152898 - r152899;
return r152900;
}
double f(double x) {
double r152901 = 1.0;
double r152902 = r152901 * r152901;
double r152903 = x;
double r152904 = r152903 + r152901;
double r152905 = sqrt(r152904);
double r152906 = sqrt(r152903);
double r152907 = r152905 * r152906;
double r152908 = r152904 + r152907;
double r152909 = r152907 + r152903;
double r152910 = r152908 + r152909;
double r152911 = r152902 / r152910;
double r152912 = 1.0;
double r152913 = 2.0;
double r152914 = r152912 / r152913;
double r152915 = pow(r152911, r152914);
return r152915;
}




Bits error versus x
Results
| Original | 30.1 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 30.1
rmApplied flip--29.8
Simplified0.2
rmApplied add-sqr-sqrt0.3
rmApplied pow10.3
Applied sqrt-pow10.3
Applied pow10.3
Applied sqrt-pow10.3
Applied pow-prod-down0.2
Simplified0.2
rmApplied distribute-lft-in0.2
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020043
(FPCore (x)
:name "2sqrt (example 3.1)"
:precision binary64
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))