\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -117.98170921583495:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{\frac{2}{x}}{x}}{x}\right)\\
\mathbf{elif}\;x \le 111.71801060653577:\\
\;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \left(\mathsf{fma}\left(\left(-\sqrt[3]{\frac{2}{x}}\right), \left(\sqrt[3]{\frac{2}{x}} \cdot \sqrt[3]{\frac{2}{x}}\right), \left(\left(\sqrt[3]{\frac{2}{x}} \cdot \sqrt[3]{\frac{2}{x}}\right) \cdot \sqrt[3]{\frac{2}{x}}\right)\right) + \frac{1}{x - 1}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{\frac{2}{x}}{x \cdot x} + \frac{2}{{x}^{5}}\right)\\
\end{array}double f(double x) {
double r12579134 = 1.0;
double r12579135 = x;
double r12579136 = r12579135 + r12579134;
double r12579137 = r12579134 / r12579136;
double r12579138 = 2.0;
double r12579139 = r12579138 / r12579135;
double r12579140 = r12579137 - r12579139;
double r12579141 = r12579135 - r12579134;
double r12579142 = r12579134 / r12579141;
double r12579143 = r12579140 + r12579142;
return r12579143;
}
double f(double x) {
double r12579144 = x;
double r12579145 = -117.98170921583495;
bool r12579146 = r12579144 <= r12579145;
double r12579147 = 2.0;
double r12579148 = 7.0;
double r12579149 = pow(r12579144, r12579148);
double r12579150 = r12579147 / r12579149;
double r12579151 = 5.0;
double r12579152 = pow(r12579144, r12579151);
double r12579153 = r12579147 / r12579152;
double r12579154 = r12579147 / r12579144;
double r12579155 = r12579154 / r12579144;
double r12579156 = r12579155 / r12579144;
double r12579157 = r12579153 + r12579156;
double r12579158 = r12579150 + r12579157;
double r12579159 = 111.71801060653577;
bool r12579160 = r12579144 <= r12579159;
double r12579161 = 1.0;
double r12579162 = r12579161 + r12579144;
double r12579163 = r12579161 / r12579162;
double r12579164 = r12579163 - r12579154;
double r12579165 = cbrt(r12579154);
double r12579166 = -r12579165;
double r12579167 = r12579165 * r12579165;
double r12579168 = r12579167 * r12579165;
double r12579169 = fma(r12579166, r12579167, r12579168);
double r12579170 = r12579144 - r12579161;
double r12579171 = r12579161 / r12579170;
double r12579172 = r12579169 + r12579171;
double r12579173 = r12579164 + r12579172;
double r12579174 = r12579144 * r12579144;
double r12579175 = r12579154 / r12579174;
double r12579176 = r12579175 + r12579153;
double r12579177 = r12579150 + r12579176;
double r12579178 = r12579160 ? r12579173 : r12579177;
double r12579179 = r12579146 ? r12579158 : r12579178;
return r12579179;
}




Bits error versus x
| Original | 9.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if x < -117.98170921583495Initial program 19.0
Taylor expanded around inf 0.5
Simplified0.1
rmApplied associate-/r*0.1
if -117.98170921583495 < x < 111.71801060653577Initial program 0.0
rmApplied add-cube-cbrt1.3
Applied add-sqr-sqrt1.5
Applied add-cube-cbrt1.5
Applied times-frac1.5
Applied prod-diff1.5
Applied associate-+l+1.5
Simplified0.1
if 111.71801060653577 < x Initial program 19.3
Taylor expanded around inf 0.5
Simplified0.1
Final simplification0.1
herbie shell --seed 2019121 +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))))