\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -133365124.473443 \lor \neg \left(x \le 472.426513921307503\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 r103719 = 1.0;
double r103720 = x;
double r103721 = r103720 + r103719;
double r103722 = r103719 / r103721;
double r103723 = 2.0;
double r103724 = r103723 / r103720;
double r103725 = r103722 - r103724;
double r103726 = r103720 - r103719;
double r103727 = r103719 / r103726;
double r103728 = r103725 + r103727;
return r103728;
}
double f(double x) {
double r103729 = x;
double r103730 = -133365124.473443;
bool r103731 = r103729 <= r103730;
double r103732 = 472.4265139213075;
bool r103733 = r103729 <= r103732;
double r103734 = !r103733;
bool r103735 = r103731 || r103734;
double r103736 = 2.0;
double r103737 = 1.0;
double r103738 = 7.0;
double r103739 = pow(r103729, r103738);
double r103740 = r103737 / r103739;
double r103741 = 5.0;
double r103742 = pow(r103729, r103741);
double r103743 = r103737 / r103742;
double r103744 = 3.0;
double r103745 = -r103744;
double r103746 = pow(r103729, r103745);
double r103747 = r103743 + r103746;
double r103748 = r103740 + r103747;
double r103749 = r103736 * r103748;
double r103750 = 1.0;
double r103751 = r103750 * r103729;
double r103752 = r103729 + r103750;
double r103753 = r103752 * r103736;
double r103754 = r103751 - r103753;
double r103755 = r103729 - r103750;
double r103756 = r103754 * r103755;
double r103757 = r103752 * r103729;
double r103758 = r103757 * r103750;
double r103759 = r103756 + r103758;
double r103760 = r103757 * r103755;
double r103761 = r103759 / r103760;
double r103762 = r103735 ? r103749 : r103761;
return r103762;
}




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