\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\frac{\sqrt{x}}{1}}}{\left(x + 1\right) + \sqrt{x} \cdot \sqrt{x + 1}}double f(double x) {
double r120619 = 1.0;
double r120620 = x;
double r120621 = sqrt(r120620);
double r120622 = r120619 / r120621;
double r120623 = r120620 + r120619;
double r120624 = sqrt(r120623);
double r120625 = r120619 / r120624;
double r120626 = r120622 - r120625;
return r120626;
}
double f(double x) {
double r120627 = 1.0;
double r120628 = x;
double r120629 = sqrt(r120628);
double r120630 = r120629 / r120627;
double r120631 = r120627 / r120630;
double r120632 = r120628 + r120627;
double r120633 = sqrt(r120632);
double r120634 = r120629 * r120633;
double r120635 = r120632 + r120634;
double r120636 = r120631 / r120635;
return r120636;
}




Bits error versus x
Results
| Original | 19.4 |
|---|---|
| Target | 0.6 |
| Herbie | 0.3 |
Initial program 19.4
rmApplied frac-sub19.4
Simplified19.4
rmApplied flip--19.2
Simplified18.8
Taylor expanded around 0 0.4
rmApplied add-sqr-sqrt0.5
Final simplification0.3
herbie shell --seed 2019303
(FPCore (x)
:name "2isqrt (example 3.6)"
:precision binary64
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))