\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\frac{\frac{1}{x + 1}}{x} \cdot \frac{2}{x - 1}double f(double x) {
double r90670 = 1.0;
double r90671 = x;
double r90672 = r90671 + r90670;
double r90673 = r90670 / r90672;
double r90674 = 2.0;
double r90675 = r90674 / r90671;
double r90676 = r90673 - r90675;
double r90677 = r90671 - r90670;
double r90678 = r90670 / r90677;
double r90679 = r90676 + r90678;
return r90679;
}
double f(double x) {
double r90680 = 1.0;
double r90681 = x;
double r90682 = 1.0;
double r90683 = r90681 + r90682;
double r90684 = r90680 / r90683;
double r90685 = r90684 / r90681;
double r90686 = 2.0;
double r90687 = r90681 - r90682;
double r90688 = r90686 / r90687;
double r90689 = r90685 * r90688;
return r90689;
}




Bits error versus x
Results
| Original | 9.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
Initial program 9.9
rmApplied frac-sub26.1
Applied frac-add25.8
Simplified26.1
Taylor expanded around 0 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac0.1
rmApplied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x)
:name "3frac (problem 3.3.3)"
:precision binary64
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))