\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\begin{array}{l}
\mathbf{if}\;x \le 326.026577809399043:\\
\;\;\;\;\frac{\frac{\left(\left(0.66666666666666674 \cdot {x}^{3} + 2\right) \cdot \left(0.66666666666666674 \cdot {x}^{3} + 2\right) + \left(1 \cdot {x}^{2}\right) \cdot \left(1 \cdot {x}^{2} + \left(0.66666666666666674 \cdot {x}^{3} + 2\right)\right)\right) \cdot \left(\left(0.66666666666666674 \cdot {x}^{3} + 2\right) - 1 \cdot {x}^{2}\right)}{\left({x}^{4} \cdot 1\right) \cdot 1 + \left(0.66666666666666674 \cdot {x}^{3} + 2\right) \cdot \left(2 + \left(x \cdot x\right) \cdot \left(x \cdot 0.66666666666666674 + 1\right)\right)}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}} - \frac{1}{\sqrt[3]{e^{\left(1 + \varepsilon\right) \cdot x}} \cdot \sqrt[3]{e^{\left(1 + \varepsilon\right) \cdot x}}} \cdot \frac{\frac{1}{\varepsilon} - 1}{\sqrt[3]{e^{\left(1 + \varepsilon\right) \cdot x}}}}{2}\\
\end{array}double f(double x, double eps) {
double r38912 = 1.0;
double r38913 = eps;
double r38914 = r38912 / r38913;
double r38915 = r38912 + r38914;
double r38916 = r38912 - r38913;
double r38917 = x;
double r38918 = r38916 * r38917;
double r38919 = -r38918;
double r38920 = exp(r38919);
double r38921 = r38915 * r38920;
double r38922 = r38914 - r38912;
double r38923 = r38912 + r38913;
double r38924 = r38923 * r38917;
double r38925 = -r38924;
double r38926 = exp(r38925);
double r38927 = r38922 * r38926;
double r38928 = r38921 - r38927;
double r38929 = 2.0;
double r38930 = r38928 / r38929;
return r38930;
}
double f(double x, double eps) {
double r38931 = x;
double r38932 = 326.02657780939904;
bool r38933 = r38931 <= r38932;
double r38934 = 0.6666666666666667;
double r38935 = 3.0;
double r38936 = pow(r38931, r38935);
double r38937 = r38934 * r38936;
double r38938 = 2.0;
double r38939 = r38937 + r38938;
double r38940 = r38939 * r38939;
double r38941 = 1.0;
double r38942 = 2.0;
double r38943 = pow(r38931, r38942);
double r38944 = r38941 * r38943;
double r38945 = r38944 + r38939;
double r38946 = r38944 * r38945;
double r38947 = r38940 + r38946;
double r38948 = r38939 - r38944;
double r38949 = r38947 * r38948;
double r38950 = 4.0;
double r38951 = pow(r38931, r38950);
double r38952 = r38951 * r38941;
double r38953 = r38952 * r38941;
double r38954 = r38931 * r38931;
double r38955 = r38931 * r38934;
double r38956 = r38955 + r38941;
double r38957 = r38954 * r38956;
double r38958 = r38938 + r38957;
double r38959 = r38939 * r38958;
double r38960 = r38953 + r38959;
double r38961 = r38949 / r38960;
double r38962 = r38961 / r38938;
double r38963 = eps;
double r38964 = r38941 / r38963;
double r38965 = r38941 + r38964;
double r38966 = r38941 - r38963;
double r38967 = r38966 * r38931;
double r38968 = exp(r38967);
double r38969 = r38965 / r38968;
double r38970 = 1.0;
double r38971 = r38941 + r38963;
double r38972 = r38971 * r38931;
double r38973 = exp(r38972);
double r38974 = cbrt(r38973);
double r38975 = r38974 * r38974;
double r38976 = r38970 / r38975;
double r38977 = r38964 - r38941;
double r38978 = r38977 / r38974;
double r38979 = r38976 * r38978;
double r38980 = r38969 - r38979;
double r38981 = r38980 / r38938;
double r38982 = r38933 ? r38962 : r38981;
return r38982;
}



Bits error versus x



Bits error versus eps
Results
if x < 326.02657780939904Initial program 39.5
Simplified39.5
Taylor expanded around 0 1.3
rmApplied flip3--1.3
Simplified1.3
rmApplied difference-cubes1.3
Simplified1.3
if 326.02657780939904 < x Initial program 0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Applied *-un-lft-identity0.2
Applied times-frac0.2
Final simplification1.1
herbie shell --seed 2019195
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
(/ (- (* (+ 1.0 (/ 1.0 eps)) (exp (- (* (- 1.0 eps) x)))) (* (- (/ 1.0 eps) 1.0) (exp (- (* (+ 1.0 eps) x))))) 2.0))