\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{2 + \left(x \cdot x\right) \cdot \left(0.66666666666666674 \cdot x - 1\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 \cdot \left(\frac{e^{-x \cdot \left(1 - \varepsilon\right)}}{\varepsilon} + e^{-x \cdot \left(1 - \varepsilon\right)}\right) - \frac{\frac{1}{\varepsilon} - 1}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}\\
\end{array}double f(double x, double eps) {
double r44670 = 1.0;
double r44671 = eps;
double r44672 = r44670 / r44671;
double r44673 = r44670 + r44672;
double r44674 = r44670 - r44671;
double r44675 = x;
double r44676 = r44674 * r44675;
double r44677 = -r44676;
double r44678 = exp(r44677);
double r44679 = r44673 * r44678;
double r44680 = r44672 - r44670;
double r44681 = r44670 + r44671;
double r44682 = r44681 * r44675;
double r44683 = -r44682;
double r44684 = exp(r44683);
double r44685 = r44680 * r44684;
double r44686 = r44679 - r44685;
double r44687 = 2.0;
double r44688 = r44686 / r44687;
return r44688;
}
double f(double x, double eps) {
double r44689 = x;
double r44690 = 179.02536135484516;
bool r44691 = r44689 <= r44690;
double r44692 = 2.0;
double r44693 = r44689 * r44689;
double r44694 = 0.6666666666666667;
double r44695 = r44694 * r44689;
double r44696 = 1.0;
double r44697 = r44695 - r44696;
double r44698 = r44693 * r44697;
double r44699 = r44692 + r44698;
double r44700 = r44699 / r44692;
double r44701 = eps;
double r44702 = r44696 - r44701;
double r44703 = r44689 * r44702;
double r44704 = -r44703;
double r44705 = exp(r44704);
double r44706 = r44705 / r44701;
double r44707 = r44706 + r44705;
double r44708 = r44696 * r44707;
double r44709 = r44696 / r44701;
double r44710 = r44709 - r44696;
double r44711 = r44696 + r44701;
double r44712 = r44711 * r44689;
double r44713 = exp(r44712);
double r44714 = r44710 / r44713;
double r44715 = r44708 - r44714;
double r44716 = r44715 / r44692;
double r44717 = r44691 ? r44700 : r44716;
return r44717;
}



Bits error versus x



Bits error versus eps
Results
if x < 179.02536135484516Initial program 38.9
Simplified38.9
Taylor expanded around 0 1.2
Simplified1.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))