\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}}}{x} \cdot \frac{1}{x + 1}double f(double x) {
double r6017062 = 1.0;
double r6017063 = x;
double r6017064 = sqrt(r6017063);
double r6017065 = r6017062 / r6017064;
double r6017066 = r6017063 + r6017062;
double r6017067 = sqrt(r6017066);
double r6017068 = r6017062 / r6017067;
double r6017069 = r6017065 - r6017068;
return r6017069;
}
double f(double x) {
double r6017070 = 1.0;
double r6017071 = x;
double r6017072 = sqrt(r6017071);
double r6017073 = r6017070 / r6017072;
double r6017074 = r6017071 + r6017070;
double r6017075 = sqrt(r6017074);
double r6017076 = r6017070 / r6017075;
double r6017077 = r6017073 + r6017076;
double r6017078 = r6017070 / r6017077;
double r6017079 = r6017078 / r6017071;
double r6017080 = r6017070 / r6017074;
double r6017081 = r6017079 * r6017080;
return r6017081;
}




Bits error versus x
Results
| Original | 19.4 |
|---|---|
| Target | 0.7 |
| Herbie | 0.3 |
Initial program 19.4
rmApplied flip--19.5
rmApplied frac-times24.6
Applied frac-times19.6
Applied frac-sub19.4
Simplified19.0
Simplified19.0
Taylor expanded around 0 5.4
rmApplied *-un-lft-identity5.4
Applied add-sqr-sqrt5.4
Applied times-frac5.0
Applied times-frac0.4
Simplified0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019164
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))