\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -75080727.03464014828205108642578125 \lor \neg \left(x \le 467.2547751661715551563247572630643844604\right):\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(1 \cdot x - \left(x + 1\right) \cdot 2\right) \cdot \left(x - 1\right) + \left(\left(x + 1\right) \cdot x\right) \cdot 1}{\left(\left(x + 1\right) \cdot x\right) \cdot \left(x - 1\right)}\\
\end{array}double f(double x) {
double r130711 = 1.0;
double r130712 = x;
double r130713 = r130712 + r130711;
double r130714 = r130711 / r130713;
double r130715 = 2.0;
double r130716 = r130715 / r130712;
double r130717 = r130714 - r130716;
double r130718 = r130712 - r130711;
double r130719 = r130711 / r130718;
double r130720 = r130717 + r130719;
return r130720;
}
double f(double x) {
double r130721 = x;
double r130722 = -75080727.03464015;
bool r130723 = r130721 <= r130722;
double r130724 = 467.25477516617156;
bool r130725 = r130721 <= r130724;
double r130726 = !r130725;
bool r130727 = r130723 || r130726;
double r130728 = 2.0;
double r130729 = 1.0;
double r130730 = 7.0;
double r130731 = pow(r130721, r130730);
double r130732 = r130729 / r130731;
double r130733 = 5.0;
double r130734 = pow(r130721, r130733);
double r130735 = r130729 / r130734;
double r130736 = 3.0;
double r130737 = -r130736;
double r130738 = pow(r130721, r130737);
double r130739 = r130735 + r130738;
double r130740 = r130732 + r130739;
double r130741 = r130728 * r130740;
double r130742 = 1.0;
double r130743 = r130742 * r130721;
double r130744 = r130721 + r130742;
double r130745 = r130744 * r130728;
double r130746 = r130743 - r130745;
double r130747 = r130721 - r130742;
double r130748 = r130746 * r130747;
double r130749 = r130744 * r130721;
double r130750 = r130749 * r130742;
double r130751 = r130748 + r130750;
double r130752 = r130749 * r130747;
double r130753 = r130751 / r130752;
double r130754 = r130727 ? r130741 : r130753;
return r130754;
}




Bits error versus x
Results
| Original | 9.5 |
|---|---|
| Target | 0.3 |
| Herbie | 0.0 |
if x < -75080727.03464015 or 467.25477516617156 < x Initial program 19.0
Taylor expanded around inf 0.5
Simplified0.5
rmApplied pow-flip0.0
if -75080727.03464015 < x < 467.25477516617156Initial program 0.4
rmApplied frac-sub0.4
Applied frac-add0.0
Final simplification0.0
herbie shell --seed 2019294
(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))))