\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -104.3426691909725434470601612702012062073:\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{1}{x \cdot x} \cdot \frac{2}{x}\right) + \frac{2}{{x}^{5}}\\
\mathbf{elif}\;x \le 117.9969754864155078166731982491910457611:\\
\;\;\;\;\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{3}}\right) + \frac{2}{{x}^{5}}\\
\end{array}double f(double x) {
double r88716 = 1.0;
double r88717 = x;
double r88718 = r88717 + r88716;
double r88719 = r88716 / r88718;
double r88720 = 2.0;
double r88721 = r88720 / r88717;
double r88722 = r88719 - r88721;
double r88723 = r88717 - r88716;
double r88724 = r88716 / r88723;
double r88725 = r88722 + r88724;
return r88725;
}
double f(double x) {
double r88726 = x;
double r88727 = -104.34266919097254;
bool r88728 = r88726 <= r88727;
double r88729 = 2.0;
double r88730 = 7.0;
double r88731 = pow(r88726, r88730);
double r88732 = r88729 / r88731;
double r88733 = 1.0;
double r88734 = r88726 * r88726;
double r88735 = r88733 / r88734;
double r88736 = r88729 / r88726;
double r88737 = r88735 * r88736;
double r88738 = r88732 + r88737;
double r88739 = 5.0;
double r88740 = pow(r88726, r88739);
double r88741 = r88729 / r88740;
double r88742 = r88738 + r88741;
double r88743 = 117.99697548641551;
bool r88744 = r88726 <= r88743;
double r88745 = 1.0;
double r88746 = r88726 + r88745;
double r88747 = r88745 / r88746;
double r88748 = r88747 - r88736;
double r88749 = r88726 - r88745;
double r88750 = r88745 / r88749;
double r88751 = r88748 + r88750;
double r88752 = 3.0;
double r88753 = pow(r88726, r88752);
double r88754 = r88729 / r88753;
double r88755 = r88732 + r88754;
double r88756 = r88755 + r88741;
double r88757 = r88744 ? r88751 : r88756;
double r88758 = r88728 ? r88742 : r88757;
return r88758;
}




Bits error versus x
Results
| Original | 9.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if x < -104.34266919097254Initial program 19.4
Taylor expanded around inf 0.4
Simplified0.4
rmApplied add-cube-cbrt1.1
Applied unpow-prod-down1.1
Applied *-un-lft-identity1.1
Applied times-frac0.8
Simplified0.4
Simplified0.1
if -104.34266919097254 < x < 117.99697548641551Initial program 0.0
if 117.99697548641551 < x Initial program 19.0
Taylor expanded around inf 0.5
Simplified0.5
Final simplification0.2
herbie shell --seed 2019212
(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))))