\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 359.4230328447739566399832256138324737549:\\
\;\;\;\;\sqrt[3]{0.3333333333333333703407674875052180141211 \cdot {x}^{6} + \left(1 \cdot {x}^{3} + 1\right)} + {x}^{2} \cdot \left(-0.5\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}}}{2} - \frac{\frac{\frac{1}{\varepsilon} - 1}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}} \cdot \sqrt[3]{\frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}}}{2} - \frac{\frac{\frac{1}{\varepsilon} - 1}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}}\right) \cdot \sqrt[3]{\frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}}}{2} - \frac{\frac{\frac{1}{\varepsilon} - 1}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}}\\
\end{array}double f(double x, double eps) {
double r35969 = 1.0;
double r35970 = eps;
double r35971 = r35969 / r35970;
double r35972 = r35969 + r35971;
double r35973 = r35969 - r35970;
double r35974 = x;
double r35975 = r35973 * r35974;
double r35976 = -r35975;
double r35977 = exp(r35976);
double r35978 = r35972 * r35977;
double r35979 = r35971 - r35969;
double r35980 = r35969 + r35970;
double r35981 = r35980 * r35974;
double r35982 = -r35981;
double r35983 = exp(r35982);
double r35984 = r35979 * r35983;
double r35985 = r35978 - r35984;
double r35986 = 2.0;
double r35987 = r35985 / r35986;
return r35987;
}
double f(double x, double eps) {
double r35988 = x;
double r35989 = 359.42303284477396;
bool r35990 = r35988 <= r35989;
double r35991 = 0.33333333333333337;
double r35992 = 6.0;
double r35993 = pow(r35988, r35992);
double r35994 = r35991 * r35993;
double r35995 = 1.0;
double r35996 = 3.0;
double r35997 = pow(r35988, r35996);
double r35998 = r35995 * r35997;
double r35999 = r35998 + r35995;
double r36000 = r35994 + r35999;
double r36001 = cbrt(r36000);
double r36002 = 2.0;
double r36003 = pow(r35988, r36002);
double r36004 = 0.5;
double r36005 = -r36004;
double r36006 = r36003 * r36005;
double r36007 = r36001 + r36006;
double r36008 = eps;
double r36009 = r35995 / r36008;
double r36010 = r35995 + r36009;
double r36011 = r35995 - r36008;
double r36012 = r36011 * r35988;
double r36013 = exp(r36012);
double r36014 = r36010 / r36013;
double r36015 = 2.0;
double r36016 = r36014 / r36015;
double r36017 = r36009 - r35995;
double r36018 = r35995 + r36008;
double r36019 = r36018 * r35988;
double r36020 = exp(r36019);
double r36021 = r36017 / r36020;
double r36022 = r36021 / r36015;
double r36023 = r36016 - r36022;
double r36024 = cbrt(r36023);
double r36025 = r36024 * r36024;
double r36026 = r36025 * r36024;
double r36027 = r35990 ? r36007 : r36026;
return r36027;
}



Bits error versus x



Bits error versus eps
Results
if x < 359.42303284477396Initial program 39.2
Simplified39.2
Taylor expanded around 0 1.3
Simplified1.3
rmApplied sub-neg1.3
Applied distribute-lft-in1.3
Applied associate-+r+1.3
Simplified1.3
rmApplied add-cbrt-cube1.3
Simplified1.3
Taylor expanded around 0 1.3
if 359.42303284477396 < x Initial program 0.0
Simplified0.0
rmApplied add-cube-cbrt0.0
Final simplification1.0
herbie shell --seed 2019294
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
:precision binary64
(/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2))