\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\frac{\frac{2}{1 + x}}{\left(x - 1\right) \cdot x}double f(double x) {
double r5366645 = 1.0;
double r5366646 = x;
double r5366647 = r5366646 + r5366645;
double r5366648 = r5366645 / r5366647;
double r5366649 = 2.0;
double r5366650 = r5366649 / r5366646;
double r5366651 = r5366648 - r5366650;
double r5366652 = r5366646 - r5366645;
double r5366653 = r5366645 / r5366652;
double r5366654 = r5366651 + r5366653;
return r5366654;
}
double f(double x) {
double r5366655 = 2.0;
double r5366656 = 1.0;
double r5366657 = x;
double r5366658 = r5366656 + r5366657;
double r5366659 = r5366655 / r5366658;
double r5366660 = r5366657 - r5366656;
double r5366661 = r5366660 * r5366657;
double r5366662 = r5366659 / r5366661;
return r5366662;
}




Bits error versus x
Results
| Original | 10.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
Initial program 10.0
rmApplied associate-+l-10.0
rmApplied frac-sub26.2
Applied frac-sub25.8
Taylor expanded around 0 0.3
rmApplied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019200 +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))))