\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 r132873 = 1.0;
double r132874 = x;
double r132875 = r132874 + r132873;
double r132876 = r132873 / r132875;
double r132877 = 2.0;
double r132878 = r132877 / r132874;
double r132879 = r132876 - r132878;
double r132880 = r132874 - r132873;
double r132881 = r132873 / r132880;
double r132882 = r132879 + r132881;
return r132882;
}
double f(double x) {
double r132883 = 1.0;
double r132884 = x;
double r132885 = 1.0;
double r132886 = r132884 + r132885;
double r132887 = r132886 * r132884;
double r132888 = r132883 / r132887;
double r132889 = 2.0;
double r132890 = r132884 - r132885;
double r132891 = r132889 / r132890;
double r132892 = r132888 * r132891;
return r132892;
}




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