\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -1313.139082756415291441953741014003753662:\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{3}}\right) + \frac{2}{{x}^{5}}\\
\mathbf{elif}\;x \le 33013378.79688735306262969970703125:\\
\;\;\;\;\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(x + 1\right) \cdot \left(x \cdot \left(x - 1\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{\frac{2}{x \cdot x}}{x}\right) + \frac{2}{{x}^{5}}\\
\end{array}double f(double x) {
double r96059 = 1.0;
double r96060 = x;
double r96061 = r96060 + r96059;
double r96062 = r96059 / r96061;
double r96063 = 2.0;
double r96064 = r96063 / r96060;
double r96065 = r96062 - r96064;
double r96066 = r96060 - r96059;
double r96067 = r96059 / r96066;
double r96068 = r96065 + r96067;
return r96068;
}
double f(double x) {
double r96069 = x;
double r96070 = -1313.1390827564153;
bool r96071 = r96069 <= r96070;
double r96072 = 2.0;
double r96073 = 7.0;
double r96074 = pow(r96069, r96073);
double r96075 = r96072 / r96074;
double r96076 = 3.0;
double r96077 = pow(r96069, r96076);
double r96078 = r96072 / r96077;
double r96079 = r96075 + r96078;
double r96080 = 5.0;
double r96081 = pow(r96069, r96080);
double r96082 = r96072 / r96081;
double r96083 = r96079 + r96082;
double r96084 = 33013378.796887353;
bool r96085 = r96069 <= r96084;
double r96086 = 1.0;
double r96087 = r96086 * r96069;
double r96088 = r96069 + r96086;
double r96089 = r96088 * r96072;
double r96090 = r96087 - r96089;
double r96091 = r96069 - r96086;
double r96092 = r96090 * r96091;
double r96093 = r96088 * r96069;
double r96094 = r96093 * r96086;
double r96095 = r96092 + r96094;
double r96096 = r96069 * r96091;
double r96097 = r96088 * r96096;
double r96098 = r96095 / r96097;
double r96099 = r96069 * r96069;
double r96100 = r96072 / r96099;
double r96101 = r96100 / r96069;
double r96102 = r96075 + r96101;
double r96103 = r96102 + r96082;
double r96104 = r96085 ? r96098 : r96103;
double r96105 = r96071 ? r96083 : r96104;
return r96105;
}




Bits error versus x
Results
| Original | 9.7 |
|---|---|
| Target | 0.3 |
| Herbie | 0.2 |
if x < -1313.1390827564153Initial program 20.1
Taylor expanded around inf 0.6
Simplified0.6
if -1313.1390827564153 < x < 33013378.796887353Initial program 0.4
rmApplied frac-sub0.4
Applied frac-add0.0
rmApplied associate-*l*0.0
if 33013378.796887353 < x Initial program 19.1
Taylor expanded around inf 0.5
Simplified0.5
rmApplied unpow30.6
Applied associate-/r*0.1
Final simplification0.2
herbie shell --seed 2019235
(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))))