\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\frac{2}{\left(\left(1 + x\right) \cdot \left(x - 1\right)\right) \cdot x}double f(double x) {
double r4670514 = 1.0;
double r4670515 = x;
double r4670516 = r4670515 + r4670514;
double r4670517 = r4670514 / r4670516;
double r4670518 = 2.0;
double r4670519 = r4670518 / r4670515;
double r4670520 = r4670517 - r4670519;
double r4670521 = r4670515 - r4670514;
double r4670522 = r4670514 / r4670521;
double r4670523 = r4670520 + r4670522;
return r4670523;
}
double f(double x) {
double r4670524 = 2.0;
double r4670525 = 1.0;
double r4670526 = x;
double r4670527 = r4670525 + r4670526;
double r4670528 = r4670526 - r4670525;
double r4670529 = r4670527 * r4670528;
double r4670530 = r4670529 * r4670526;
double r4670531 = r4670524 / r4670530;
return r4670531;
}




Bits error versus x
Results
| Original | 10.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 10.0
rmApplied +-commutative10.0
rmApplied associate-+r-10.1
rmApplied frac-add26.2
Applied frac-sub25.8
Taylor expanded around 0 0.3
Final simplification0.3
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))))