\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\frac{\frac{\frac{2}{x + 1}}{x}}{x - 1}double f(double x) {
double r4004491 = 1.0;
double r4004492 = x;
double r4004493 = r4004492 + r4004491;
double r4004494 = r4004491 / r4004493;
double r4004495 = 2.0;
double r4004496 = r4004495 / r4004492;
double r4004497 = r4004494 - r4004496;
double r4004498 = r4004492 - r4004491;
double r4004499 = r4004491 / r4004498;
double r4004500 = r4004497 + r4004499;
return r4004500;
}
double f(double x) {
double r4004501 = 2.0;
double r4004502 = x;
double r4004503 = 1.0;
double r4004504 = r4004502 + r4004503;
double r4004505 = r4004501 / r4004504;
double r4004506 = r4004505 / r4004502;
double r4004507 = r4004502 - r4004503;
double r4004508 = r4004506 / r4004507;
return r4004508;
}




Bits error versus x
Results
| Original | 9.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
Initial program 9.9
rmApplied frac-sub25.4
Applied frac-add25.0
Simplified25.4
Taylor expanded around 0 0.3
rmApplied associate-/r*0.1
rmApplied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x)
:name "3frac (problem 3.3.3)"
:herbie-target
(/ 2.0 (* x (- (* x x) 1.0)))
(+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))))