\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 33.941483957658718:\\
\;\;\;\;\frac{\left(\left(\left(0.66666666666666674 \cdot x\right) \cdot x\right) \cdot x + 2\right) - 1 \cdot {x}^{2}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot {\left(e^{1 + \varepsilon}\right)}^{\left(-x\right)}}{2}\\
\end{array}double f(double x, double eps) {
double r53882 = 1.0;
double r53883 = eps;
double r53884 = r53882 / r53883;
double r53885 = r53882 + r53884;
double r53886 = r53882 - r53883;
double r53887 = x;
double r53888 = r53886 * r53887;
double r53889 = -r53888;
double r53890 = exp(r53889);
double r53891 = r53885 * r53890;
double r53892 = r53884 - r53882;
double r53893 = r53882 + r53883;
double r53894 = r53893 * r53887;
double r53895 = -r53894;
double r53896 = exp(r53895);
double r53897 = r53892 * r53896;
double r53898 = r53891 - r53897;
double r53899 = 2.0;
double r53900 = r53898 / r53899;
return r53900;
}
double f(double x, double eps) {
double r53901 = x;
double r53902 = 33.94148395765872;
bool r53903 = r53901 <= r53902;
double r53904 = 0.6666666666666667;
double r53905 = r53904 * r53901;
double r53906 = r53905 * r53901;
double r53907 = r53906 * r53901;
double r53908 = 2.0;
double r53909 = r53907 + r53908;
double r53910 = 1.0;
double r53911 = 2.0;
double r53912 = pow(r53901, r53911);
double r53913 = r53910 * r53912;
double r53914 = r53909 - r53913;
double r53915 = r53914 / r53908;
double r53916 = eps;
double r53917 = r53910 / r53916;
double r53918 = r53910 + r53917;
double r53919 = r53910 - r53916;
double r53920 = r53919 * r53901;
double r53921 = -r53920;
double r53922 = exp(r53921);
double r53923 = r53918 * r53922;
double r53924 = r53917 - r53910;
double r53925 = r53910 + r53916;
double r53926 = exp(r53925);
double r53927 = -r53901;
double r53928 = pow(r53926, r53927);
double r53929 = r53924 * r53928;
double r53930 = r53923 - r53929;
double r53931 = r53930 / r53908;
double r53932 = r53903 ? r53915 : r53931;
return r53932;
}



Bits error versus x



Bits error versus eps
Results
if x < 33.94148395765872Initial program 39.3
Taylor expanded around 0 1.1
rmApplied unpow31.1
Applied associate-*r*1.1
Simplified1.1
if 33.94148395765872 < x Initial program 0.2
rmApplied distribute-rgt-neg-in0.2
Applied exp-prod0.2
Final simplification0.9
herbie shell --seed 2020042
(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))