\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right) \le -22.466348304101803:\\
\;\;\;\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right)\\
\mathbf{elif}\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right) \le 2.4319249413741473 \cdot 10^{-12}:\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right) + \frac{\frac{2}{x}}{x \cdot x}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right)\\
\end{array}double f(double x) {
double r2977523 = 1.0;
double r2977524 = x;
double r2977525 = r2977524 + r2977523;
double r2977526 = r2977523 / r2977525;
double r2977527 = 2.0;
double r2977528 = r2977527 / r2977524;
double r2977529 = r2977526 - r2977528;
double r2977530 = r2977524 - r2977523;
double r2977531 = r2977523 / r2977530;
double r2977532 = r2977529 + r2977531;
return r2977532;
}
double f(double x) {
double r2977533 = 1.0;
double r2977534 = x;
double r2977535 = r2977534 - r2977533;
double r2977536 = r2977533 / r2977535;
double r2977537 = r2977534 + r2977533;
double r2977538 = r2977533 / r2977537;
double r2977539 = 2.0;
double r2977540 = r2977539 / r2977534;
double r2977541 = r2977538 - r2977540;
double r2977542 = r2977536 + r2977541;
double r2977543 = -22.466348304101803;
bool r2977544 = r2977542 <= r2977543;
double r2977545 = 2.4319249413741473e-12;
bool r2977546 = r2977542 <= r2977545;
double r2977547 = 7.0;
double r2977548 = pow(r2977534, r2977547);
double r2977549 = r2977539 / r2977548;
double r2977550 = 5.0;
double r2977551 = pow(r2977534, r2977550);
double r2977552 = r2977539 / r2977551;
double r2977553 = r2977549 + r2977552;
double r2977554 = r2977534 * r2977534;
double r2977555 = r2977540 / r2977554;
double r2977556 = r2977553 + r2977555;
double r2977557 = r2977546 ? r2977556 : r2977542;
double r2977558 = r2977544 ? r2977542 : r2977557;
return r2977558;
}




Bits error versus x
Results
| Original | 9.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.2 |
if (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))) < -22.466348304101803 or 2.4319249413741473e-12 < (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))) Initial program 0.1
if -22.466348304101803 < (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))) < 2.4319249413741473e-12Initial program 19.1
Taylor expanded around inf 0.8
Simplified0.8
rmApplied associate-/r*0.4
Final simplification0.2
herbie shell --seed 2019141 +o rules:numerics
(FPCore (x)
:name "3frac (problem 3.3.3)"
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))