\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -111.0202622422814613400987582281231880188 \lor \neg \left(x \le 109.8975046823589565292422776110470294952\right):\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\frac{x + 1}{\sqrt[3]{1}}} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\end{array}double f(double x) {
double r163942 = 1.0;
double r163943 = x;
double r163944 = r163943 + r163942;
double r163945 = r163942 / r163944;
double r163946 = 2.0;
double r163947 = r163946 / r163943;
double r163948 = r163945 - r163947;
double r163949 = r163943 - r163942;
double r163950 = r163942 / r163949;
double r163951 = r163948 + r163950;
return r163951;
}
double f(double x) {
double r163952 = x;
double r163953 = -111.02026224228146;
bool r163954 = r163952 <= r163953;
double r163955 = 109.89750468235896;
bool r163956 = r163952 <= r163955;
double r163957 = !r163956;
bool r163958 = r163954 || r163957;
double r163959 = 2.0;
double r163960 = 1.0;
double r163961 = 7.0;
double r163962 = pow(r163952, r163961);
double r163963 = r163960 / r163962;
double r163964 = 5.0;
double r163965 = pow(r163952, r163964);
double r163966 = r163960 / r163965;
double r163967 = 3.0;
double r163968 = -r163967;
double r163969 = pow(r163952, r163968);
double r163970 = r163966 + r163969;
double r163971 = r163963 + r163970;
double r163972 = r163959 * r163971;
double r163973 = 1.0;
double r163974 = cbrt(r163973);
double r163975 = r163974 * r163974;
double r163976 = r163952 + r163973;
double r163977 = r163976 / r163974;
double r163978 = r163975 / r163977;
double r163979 = r163959 / r163952;
double r163980 = r163978 - r163979;
double r163981 = r163952 - r163973;
double r163982 = r163973 / r163981;
double r163983 = r163980 + r163982;
double r163984 = r163958 ? r163972 : r163983;
return r163984;
}




Bits error versus x
Results
| Original | 9.4 |
|---|---|
| Target | 0.3 |
| Herbie | 0.0 |
if x < -111.02026224228146 or 109.89750468235896 < x Initial program 18.8
Taylor expanded around inf 0.5
Simplified0.5
rmApplied pow-flip0.0
if -111.02026224228146 < x < 109.89750468235896Initial program 0.0
rmApplied add-cube-cbrt0.0
Applied associate-/l*0.0
Final simplification0.0
herbie shell --seed 2019353
(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))))