\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 179.02536135484516:\\
\;\;\;\;\frac{0.66666666666666674 \cdot {x}^{3} + \left(2 - 1 \cdot {x}^{2}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{1}{\varepsilon} + 1}{e^{\left(1 - \varepsilon\right) \cdot x}} - \frac{\frac{1}{\varepsilon} - 1}{e^{x \cdot \left(\varepsilon + 1\right)}}}{2}\\
\end{array}double f(double x, double eps) {
double r34774 = 1.0;
double r34775 = eps;
double r34776 = r34774 / r34775;
double r34777 = r34774 + r34776;
double r34778 = r34774 - r34775;
double r34779 = x;
double r34780 = r34778 * r34779;
double r34781 = -r34780;
double r34782 = exp(r34781);
double r34783 = r34777 * r34782;
double r34784 = r34776 - r34774;
double r34785 = r34774 + r34775;
double r34786 = r34785 * r34779;
double r34787 = -r34786;
double r34788 = exp(r34787);
double r34789 = r34784 * r34788;
double r34790 = r34783 - r34789;
double r34791 = 2.0;
double r34792 = r34790 / r34791;
return r34792;
}
double f(double x, double eps) {
double r34793 = x;
double r34794 = 179.02536135484516;
bool r34795 = r34793 <= r34794;
double r34796 = 0.6666666666666667;
double r34797 = 3.0;
double r34798 = pow(r34793, r34797);
double r34799 = r34796 * r34798;
double r34800 = 2.0;
double r34801 = 1.0;
double r34802 = 2.0;
double r34803 = pow(r34793, r34802);
double r34804 = r34801 * r34803;
double r34805 = r34800 - r34804;
double r34806 = r34799 + r34805;
double r34807 = r34806 / r34800;
double r34808 = eps;
double r34809 = r34801 / r34808;
double r34810 = r34809 + r34801;
double r34811 = r34801 - r34808;
double r34812 = r34811 * r34793;
double r34813 = exp(r34812);
double r34814 = r34810 / r34813;
double r34815 = r34809 - r34801;
double r34816 = r34808 + r34801;
double r34817 = r34793 * r34816;
double r34818 = exp(r34817);
double r34819 = r34815 / r34818;
double r34820 = r34814 - r34819;
double r34821 = r34820 / r34800;
double r34822 = r34795 ? r34807 : r34821;
return r34822;
}



Bits error versus x



Bits error versus eps
Results
if x < 179.02536135484516Initial program 38.9
Simplified38.9
Taylor expanded around 0 1.2
rmApplied associate--l+1.2
if 179.02536135484516 < x Initial program 0.1
Simplified0.1
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.9
herbie shell --seed 2020045
(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))