\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1}{\sqrt{x + 1} + \sqrt{x}} \cdot \frac{1}{\sqrt{x + 1} \cdot \sqrt{x}}double f(double x) {
double r5675177 = 1.0;
double r5675178 = x;
double r5675179 = sqrt(r5675178);
double r5675180 = r5675177 / r5675179;
double r5675181 = r5675178 + r5675177;
double r5675182 = sqrt(r5675181);
double r5675183 = r5675177 / r5675182;
double r5675184 = r5675180 - r5675183;
return r5675184;
}
double f(double x) {
double r5675185 = 1.0;
double r5675186 = x;
double r5675187 = r5675186 + r5675185;
double r5675188 = sqrt(r5675187);
double r5675189 = sqrt(r5675186);
double r5675190 = r5675188 + r5675189;
double r5675191 = r5675185 / r5675190;
double r5675192 = r5675188 * r5675189;
double r5675193 = r5675185 / r5675192;
double r5675194 = r5675191 * r5675193;
return r5675194;
}




Bits error versus x
Results
| Original | 19.7 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.7
rmApplied frac-sub19.7
Simplified19.7
rmApplied flip--19.4
Simplified18.9
Taylor expanded around 0 0.4
rmApplied div-inv0.4
Final simplification0.4
herbie shell --seed 2019163 +o rules:numerics
(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)))))