\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 15.69605451446852306673918064916506409645:\\
\;\;\;\;\frac{\frac{1}{e^{\left(1 + \varepsilon\right) \cdot x}} - \left(\varepsilon \cdot \left(-1 \cdot x\right) - \left(1 \cdot x + 1\right)\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{\left(\varepsilon - 1\right) \cdot x} \cdot \left(1 + \frac{1}{\varepsilon}\right) + \frac{1 - \frac{1}{\varepsilon}}{\sqrt[3]{e^{\left(1 + \varepsilon\right) \cdot x}} \cdot \left(\sqrt[3]{e^{\left(1 + \varepsilon\right) \cdot x}} \cdot \sqrt[3]{e^{\left(1 + \varepsilon\right) \cdot x}}\right)}}{2}\\
\end{array}double f(double x, double eps) {
double r2546971 = 1.0;
double r2546972 = eps;
double r2546973 = r2546971 / r2546972;
double r2546974 = r2546971 + r2546973;
double r2546975 = r2546971 - r2546972;
double r2546976 = x;
double r2546977 = r2546975 * r2546976;
double r2546978 = -r2546977;
double r2546979 = exp(r2546978);
double r2546980 = r2546974 * r2546979;
double r2546981 = r2546973 - r2546971;
double r2546982 = r2546971 + r2546972;
double r2546983 = r2546982 * r2546976;
double r2546984 = -r2546983;
double r2546985 = exp(r2546984);
double r2546986 = r2546981 * r2546985;
double r2546987 = r2546980 - r2546986;
double r2546988 = 2.0;
double r2546989 = r2546987 / r2546988;
return r2546989;
}
double f(double x, double eps) {
double r2546990 = x;
double r2546991 = 15.696054514468523;
bool r2546992 = r2546990 <= r2546991;
double r2546993 = 1.0;
double r2546994 = eps;
double r2546995 = r2546993 + r2546994;
double r2546996 = r2546995 * r2546990;
double r2546997 = exp(r2546996);
double r2546998 = r2546993 / r2546997;
double r2546999 = r2546993 * r2546990;
double r2547000 = -r2546999;
double r2547001 = r2546994 * r2547000;
double r2547002 = r2546999 + r2546993;
double r2547003 = r2547001 - r2547002;
double r2547004 = r2546998 - r2547003;
double r2547005 = 2.0;
double r2547006 = r2547004 / r2547005;
double r2547007 = r2546994 - r2546993;
double r2547008 = r2547007 * r2546990;
double r2547009 = exp(r2547008);
double r2547010 = r2546993 / r2546994;
double r2547011 = r2546993 + r2547010;
double r2547012 = r2547009 * r2547011;
double r2547013 = r2546993 - r2547010;
double r2547014 = cbrt(r2546997);
double r2547015 = r2547014 * r2547014;
double r2547016 = r2547014 * r2547015;
double r2547017 = r2547013 / r2547016;
double r2547018 = r2547012 + r2547017;
double r2547019 = r2547018 / r2547005;
double r2547020 = r2546992 ? r2547006 : r2547019;
return r2547020;
}



Bits error versus x



Bits error versus eps
Results
if x < 15.696054514468523Initial program 39.1
Simplified39.1
rmApplied div-sub39.1
Applied associate-+l-32.9
Taylor expanded around 0 1.2
Simplified1.2
if 15.696054514468523 < x Initial program 0.4
Simplified0.4
rmApplied add-cube-cbrt0.4
Final simplification1.0
herbie shell --seed 2019170
(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))