\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\frac{1}{\left(x + 1\right) \cdot x} \cdot \frac{2}{x - 1}double f(double x) {
double r144836 = 1.0;
double r144837 = x;
double r144838 = r144837 + r144836;
double r144839 = r144836 / r144838;
double r144840 = 2.0;
double r144841 = r144840 / r144837;
double r144842 = r144839 - r144841;
double r144843 = r144837 - r144836;
double r144844 = r144836 / r144843;
double r144845 = r144842 + r144844;
return r144845;
}
double f(double x) {
double r144846 = 1.0;
double r144847 = x;
double r144848 = 1.0;
double r144849 = r144847 + r144848;
double r144850 = r144849 * r144847;
double r144851 = r144846 / r144850;
double r144852 = 2.0;
double r144853 = r144847 - r144848;
double r144854 = r144852 / r144853;
double r144855 = r144851 * r144854;
return r144855;
}




Bits error versus x
Results
| Original | 9.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
Initial program 9.8
rmApplied frac-sub26.0
Applied frac-add25.6
Simplified26.0
Taylor expanded around 0 0.2
rmApplied *-un-lft-identity0.2
Applied times-frac0.1
Final simplification0.1
herbie shell --seed 2020089 +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))))