\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -103.0029928299844:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{\frac{2}{x}}{x \cdot x} + \frac{2}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 109.24087107751738:\\
\;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\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 r3052083 = 1.0;
double r3052084 = x;
double r3052085 = r3052084 + r3052083;
double r3052086 = r3052083 / r3052085;
double r3052087 = 2.0;
double r3052088 = r3052087 / r3052084;
double r3052089 = r3052086 - r3052088;
double r3052090 = r3052084 - r3052083;
double r3052091 = r3052083 / r3052090;
double r3052092 = r3052089 + r3052091;
return r3052092;
}
double f(double x) {
double r3052093 = x;
double r3052094 = -103.0029928299844;
bool r3052095 = r3052093 <= r3052094;
double r3052096 = 2.0;
double r3052097 = 7.0;
double r3052098 = pow(r3052093, r3052097);
double r3052099 = r3052096 / r3052098;
double r3052100 = r3052096 / r3052093;
double r3052101 = r3052093 * r3052093;
double r3052102 = r3052100 / r3052101;
double r3052103 = 5.0;
double r3052104 = pow(r3052093, r3052103);
double r3052105 = r3052096 / r3052104;
double r3052106 = r3052102 + r3052105;
double r3052107 = r3052099 + r3052106;
double r3052108 = 109.24087107751738;
bool r3052109 = r3052093 <= r3052108;
double r3052110 = 1.0;
double r3052111 = r3052110 + r3052093;
double r3052112 = r3052110 / r3052111;
double r3052113 = r3052112 - r3052100;
double r3052114 = r3052093 - r3052110;
double r3052115 = r3052110 / r3052114;
double r3052116 = r3052113 + r3052115;
double r3052117 = r3052109 ? r3052116 : r3052107;
double r3052118 = r3052095 ? r3052107 : r3052117;
return r3052118;
}




Bits error versus x
Results
| Original | 9.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if x < -103.0029928299844 or 109.24087107751738 < x Initial program 19.7
Taylor expanded around -inf 0.7
Simplified0.1
if -103.0029928299844 < x < 109.24087107751738Initial program 0.0
rmApplied flip-+29.4
rmApplied *-un-lft-identity29.4
Applied *-un-lft-identity29.4
Applied div-inv29.4
Applied distribute-lft-out--29.4
Applied distribute-lft-out--29.4
Applied difference-of-squares29.4
Applied times-frac0.0
Simplified0.0
Simplified0.0
Final simplification0.1
herbie shell --seed 2019132
(FPCore (x)
:name "3frac (problem 3.3.3)"
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))