\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -128.46375794518042:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{1}{x \cdot x} \cdot \frac{2}{x} + \frac{2}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 110.41034748839138:\\
\;\;\;\;\frac{x - \left(1 + x\right) \cdot 2}{x \cdot \left(1 + x\right)} + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{2}{x \cdot \left(x \cdot x\right)} + \frac{2}{{x}^{5}}\right) + \frac{2}{{x}^{7}}\\
\end{array}double f(double x) {
double r1541716 = 1.0;
double r1541717 = x;
double r1541718 = r1541717 + r1541716;
double r1541719 = r1541716 / r1541718;
double r1541720 = 2.0;
double r1541721 = r1541720 / r1541717;
double r1541722 = r1541719 - r1541721;
double r1541723 = r1541717 - r1541716;
double r1541724 = r1541716 / r1541723;
double r1541725 = r1541722 + r1541724;
return r1541725;
}
double f(double x) {
double r1541726 = x;
double r1541727 = -128.46375794518042;
bool r1541728 = r1541726 <= r1541727;
double r1541729 = 2.0;
double r1541730 = 7.0;
double r1541731 = pow(r1541726, r1541730);
double r1541732 = r1541729 / r1541731;
double r1541733 = 1.0;
double r1541734 = r1541726 * r1541726;
double r1541735 = r1541733 / r1541734;
double r1541736 = r1541729 / r1541726;
double r1541737 = r1541735 * r1541736;
double r1541738 = 5.0;
double r1541739 = pow(r1541726, r1541738);
double r1541740 = r1541729 / r1541739;
double r1541741 = r1541737 + r1541740;
double r1541742 = r1541732 + r1541741;
double r1541743 = 110.41034748839138;
bool r1541744 = r1541726 <= r1541743;
double r1541745 = r1541733 + r1541726;
double r1541746 = r1541745 * r1541729;
double r1541747 = r1541726 - r1541746;
double r1541748 = r1541726 * r1541745;
double r1541749 = r1541747 / r1541748;
double r1541750 = r1541726 - r1541733;
double r1541751 = r1541733 / r1541750;
double r1541752 = r1541749 + r1541751;
double r1541753 = r1541726 * r1541734;
double r1541754 = r1541729 / r1541753;
double r1541755 = r1541754 + r1541740;
double r1541756 = r1541755 + r1541732;
double r1541757 = r1541744 ? r1541752 : r1541756;
double r1541758 = r1541728 ? r1541742 : r1541757;
return r1541758;
}




Bits error versus x
Results
| Original | 9.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.2 |
if x < -128.46375794518042Initial program 19.2
rmApplied frac-sub52.7
Taylor expanded around inf 0.6
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied times-frac0.1
if -128.46375794518042 < x < 110.41034748839138Initial program 0.0
rmApplied frac-sub0.1
if 110.41034748839138 < x Initial program 20.4
rmApplied frac-sub53.1
Taylor expanded around inf 0.5
Simplified0.5
Final simplification0.2
herbie shell --seed 2019156
(FPCore (x)
:name "3frac (problem 3.3.3)"
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))