\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -3491.6129493700505 \lor \neg \left(x \le 461.08483910687289\right):\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + \frac{1}{{x}^{3}}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot x - \frac{x + 1}{\sqrt[3]{1}} \cdot 2\right) \cdot \left(x - 1\right) + \left(\frac{x + 1}{\sqrt[3]{1}} \cdot x\right) \cdot 1}{\left(\frac{x + 1}{\sqrt[3]{1}} \cdot x\right) \cdot \left(x - 1\right)}\\
\end{array}double f(double x) {
double r142913 = 1.0;
double r142914 = x;
double r142915 = r142914 + r142913;
double r142916 = r142913 / r142915;
double r142917 = 2.0;
double r142918 = r142917 / r142914;
double r142919 = r142916 - r142918;
double r142920 = r142914 - r142913;
double r142921 = r142913 / r142920;
double r142922 = r142919 + r142921;
return r142922;
}
double f(double x) {
double r142923 = x;
double r142924 = -3491.6129493700505;
bool r142925 = r142923 <= r142924;
double r142926 = 461.0848391068729;
bool r142927 = r142923 <= r142926;
double r142928 = !r142927;
bool r142929 = r142925 || r142928;
double r142930 = 2.0;
double r142931 = 1.0;
double r142932 = 7.0;
double r142933 = pow(r142923, r142932);
double r142934 = r142931 / r142933;
double r142935 = 5.0;
double r142936 = pow(r142923, r142935);
double r142937 = r142931 / r142936;
double r142938 = 3.0;
double r142939 = pow(r142923, r142938);
double r142940 = r142931 / r142939;
double r142941 = r142937 + r142940;
double r142942 = r142934 + r142941;
double r142943 = r142930 * r142942;
double r142944 = 1.0;
double r142945 = cbrt(r142944);
double r142946 = r142945 * r142945;
double r142947 = r142946 * r142923;
double r142948 = r142923 + r142944;
double r142949 = r142948 / r142945;
double r142950 = r142949 * r142930;
double r142951 = r142947 - r142950;
double r142952 = r142923 - r142944;
double r142953 = r142951 * r142952;
double r142954 = r142949 * r142923;
double r142955 = r142954 * r142944;
double r142956 = r142953 + r142955;
double r142957 = r142954 * r142952;
double r142958 = r142956 / r142957;
double r142959 = r142929 ? r142943 : r142958;
return r142959;
}




Bits error versus x
Results
| Original | 9.7 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
if x < -3491.6129493700505 or 461.0848391068729 < x Initial program 19.1
Taylor expanded around inf 0.6
Simplified0.6
if -3491.6129493700505 < x < 461.0848391068729Initial program 0.1
rmApplied add-cube-cbrt0.1
Applied associate-/l*0.1
rmApplied frac-sub0.1
Applied frac-add0.0
Final simplification0.3
herbie shell --seed 2020018
(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))))