\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 121.4869422814261525900292326696217060089:\\
\;\;\;\;\frac{2 + \left(x \cdot x\right) \cdot \left(0.6666666666666667406815349750104360282421 \cdot x - 1\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(e^{\left(\varepsilon - 1\right) \cdot x} + \frac{e^{\left(\varepsilon - 1\right) \cdot x}}{\varepsilon}\right) \cdot 1 - e^{\left(1 + \varepsilon\right) \cdot \left(-x\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)}{2}\\
\end{array}double f(double x, double eps) {
double r2496908 = 1.0;
double r2496909 = eps;
double r2496910 = r2496908 / r2496909;
double r2496911 = r2496908 + r2496910;
double r2496912 = r2496908 - r2496909;
double r2496913 = x;
double r2496914 = r2496912 * r2496913;
double r2496915 = -r2496914;
double r2496916 = exp(r2496915);
double r2496917 = r2496911 * r2496916;
double r2496918 = r2496910 - r2496908;
double r2496919 = r2496908 + r2496909;
double r2496920 = r2496919 * r2496913;
double r2496921 = -r2496920;
double r2496922 = exp(r2496921);
double r2496923 = r2496918 * r2496922;
double r2496924 = r2496917 - r2496923;
double r2496925 = 2.0;
double r2496926 = r2496924 / r2496925;
return r2496926;
}
double f(double x, double eps) {
double r2496927 = x;
double r2496928 = 121.48694228142615;
bool r2496929 = r2496927 <= r2496928;
double r2496930 = 2.0;
double r2496931 = r2496927 * r2496927;
double r2496932 = 0.6666666666666667;
double r2496933 = r2496932 * r2496927;
double r2496934 = 1.0;
double r2496935 = r2496933 - r2496934;
double r2496936 = r2496931 * r2496935;
double r2496937 = r2496930 + r2496936;
double r2496938 = r2496937 / r2496930;
double r2496939 = eps;
double r2496940 = r2496939 - r2496934;
double r2496941 = r2496940 * r2496927;
double r2496942 = exp(r2496941);
double r2496943 = r2496942 / r2496939;
double r2496944 = r2496942 + r2496943;
double r2496945 = r2496944 * r2496934;
double r2496946 = r2496934 + r2496939;
double r2496947 = -r2496927;
double r2496948 = r2496946 * r2496947;
double r2496949 = exp(r2496948);
double r2496950 = r2496934 / r2496939;
double r2496951 = r2496950 - r2496934;
double r2496952 = r2496949 * r2496951;
double r2496953 = r2496945 - r2496952;
double r2496954 = r2496953 / r2496930;
double r2496955 = r2496929 ? r2496938 : r2496954;
return r2496955;
}



Bits error versus x



Bits error versus eps
Results
if x < 121.48694228142615Initial program 39.5
Taylor expanded around 0 1.4
Simplified1.4
rmApplied sub-neg1.4
Applied associate-+l+1.4
Simplified1.4
if 121.48694228142615 < x Initial program 0.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification1.1
herbie shell --seed 2019171
(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))