\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}{x}^{\frac{-1}{2}} \cdot \frac{1}{\sqrt{1 + x} \cdot \sqrt{x} + \left(1 + x\right)}double f(double x) {
double r2865624 = 1.0;
double r2865625 = x;
double r2865626 = sqrt(r2865625);
double r2865627 = r2865624 / r2865626;
double r2865628 = r2865625 + r2865624;
double r2865629 = sqrt(r2865628);
double r2865630 = r2865624 / r2865629;
double r2865631 = r2865627 - r2865630;
return r2865631;
}
double f(double x) {
double r2865632 = x;
double r2865633 = -0.5;
double r2865634 = pow(r2865632, r2865633);
double r2865635 = 1.0;
double r2865636 = r2865635 + r2865632;
double r2865637 = sqrt(r2865636);
double r2865638 = sqrt(r2865632);
double r2865639 = r2865637 * r2865638;
double r2865640 = r2865639 + r2865636;
double r2865641 = r2865635 / r2865640;
double r2865642 = r2865634 * r2865641;
return r2865642;
}




Bits error versus x
Results
| Original | 20.1 |
|---|---|
| Target | 0.7 |
| Herbie | 0.2 |
Initial program 20.1
rmApplied frac-sub20.1
Simplified20.1
rmApplied flip--19.9
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied sqrt-prod0.4
Applied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied distribute-lft-out0.4
Applied sqrt-prod0.4
Applied distribute-lft-out0.4
Applied add-cube-cbrt0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.3
rmApplied pow10.3
Applied sqrt-pow10.3
Applied pow-flip0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019129
(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)))))