\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 174.50277220888506:\\
\;\;\;\;\frac{\left(0.66666666666666674 \cdot {x}^{3} + 2\right) - 1 \cdot {x}^{2}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 \cdot \left(\left(e^{-x \cdot \left(1 + \varepsilon\right)} + e^{x \cdot \left(\varepsilon - 1\right)}\right) + \frac{e^{x \cdot \left(\varepsilon - 1\right)}}{\varepsilon}\right) - \frac{e^{-x \cdot \left(1 + \varepsilon\right)}}{\varepsilon} \cdot 1}{2}\\
\end{array}double f(double x, double eps) {
double r40883 = 1.0;
double r40884 = eps;
double r40885 = r40883 / r40884;
double r40886 = r40883 + r40885;
double r40887 = r40883 - r40884;
double r40888 = x;
double r40889 = r40887 * r40888;
double r40890 = -r40889;
double r40891 = exp(r40890);
double r40892 = r40886 * r40891;
double r40893 = r40885 - r40883;
double r40894 = r40883 + r40884;
double r40895 = r40894 * r40888;
double r40896 = -r40895;
double r40897 = exp(r40896);
double r40898 = r40893 * r40897;
double r40899 = r40892 - r40898;
double r40900 = 2.0;
double r40901 = r40899 / r40900;
return r40901;
}
double f(double x, double eps) {
double r40902 = x;
double r40903 = 174.50277220888506;
bool r40904 = r40902 <= r40903;
double r40905 = 0.6666666666666667;
double r40906 = 3.0;
double r40907 = pow(r40902, r40906);
double r40908 = r40905 * r40907;
double r40909 = 2.0;
double r40910 = r40908 + r40909;
double r40911 = 1.0;
double r40912 = 2.0;
double r40913 = pow(r40902, r40912);
double r40914 = r40911 * r40913;
double r40915 = r40910 - r40914;
double r40916 = r40915 / r40909;
double r40917 = eps;
double r40918 = r40911 + r40917;
double r40919 = r40902 * r40918;
double r40920 = -r40919;
double r40921 = exp(r40920);
double r40922 = r40917 - r40911;
double r40923 = r40902 * r40922;
double r40924 = exp(r40923);
double r40925 = r40921 + r40924;
double r40926 = r40924 / r40917;
double r40927 = r40925 + r40926;
double r40928 = r40911 * r40927;
double r40929 = r40921 / r40917;
double r40930 = r40929 * r40911;
double r40931 = r40928 - r40930;
double r40932 = r40931 / r40909;
double r40933 = r40904 ? r40916 : r40932;
return r40933;
}



Bits error versus x



Bits error versus eps
Results
if x < 174.50277220888506Initial program 39.2
Taylor expanded around 0 1.4
if 174.50277220888506 < x Initial program 0.1
Taylor expanded around inf 0.1
Simplified0.1
Final simplification1.1
herbie shell --seed 2019198
(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))