\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 115.92419819178706:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{2}{3} \cdot x, x \cdot x, 2 - x \cdot x\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{\varepsilon}, e^{\mathsf{fma}\left(x, \varepsilon, -x\right)}, \mathsf{fma}\left(e^{\mathsf{fma}\left(\varepsilon, -x, -x\right)}, 1 - \frac{1}{\varepsilon}, {e}^{\left(\mathsf{fma}\left(x, \varepsilon, -x\right)\right)}\right)\right)}{2}\\
\end{array}double f(double x, double eps) {
double r1481704 = 1.0;
double r1481705 = eps;
double r1481706 = r1481704 / r1481705;
double r1481707 = r1481704 + r1481706;
double r1481708 = r1481704 - r1481705;
double r1481709 = x;
double r1481710 = r1481708 * r1481709;
double r1481711 = -r1481710;
double r1481712 = exp(r1481711);
double r1481713 = r1481707 * r1481712;
double r1481714 = r1481706 - r1481704;
double r1481715 = r1481704 + r1481705;
double r1481716 = r1481715 * r1481709;
double r1481717 = -r1481716;
double r1481718 = exp(r1481717);
double r1481719 = r1481714 * r1481718;
double r1481720 = r1481713 - r1481719;
double r1481721 = 2.0;
double r1481722 = r1481720 / r1481721;
return r1481722;
}
double f(double x, double eps) {
double r1481723 = x;
double r1481724 = 115.92419819178706;
bool r1481725 = r1481723 <= r1481724;
double r1481726 = 0.6666666666666666;
double r1481727 = r1481726 * r1481723;
double r1481728 = r1481723 * r1481723;
double r1481729 = 2.0;
double r1481730 = r1481729 - r1481728;
double r1481731 = fma(r1481727, r1481728, r1481730);
double r1481732 = r1481731 / r1481729;
double r1481733 = 1.0;
double r1481734 = eps;
double r1481735 = r1481733 / r1481734;
double r1481736 = -r1481723;
double r1481737 = fma(r1481723, r1481734, r1481736);
double r1481738 = exp(r1481737);
double r1481739 = fma(r1481734, r1481736, r1481736);
double r1481740 = exp(r1481739);
double r1481741 = r1481733 - r1481735;
double r1481742 = exp(1.0);
double r1481743 = pow(r1481742, r1481737);
double r1481744 = fma(r1481740, r1481741, r1481743);
double r1481745 = fma(r1481735, r1481738, r1481744);
double r1481746 = r1481745 / r1481729;
double r1481747 = r1481725 ? r1481732 : r1481746;
return r1481747;
}



Bits error versus x



Bits error versus eps
if x < 115.92419819178706Initial program 39.4
Simplified39.4
Taylor expanded around 0 1.3
Simplified1.3
if 115.92419819178706 < x Initial program 0.2
Simplified0.2
rmApplied *-un-lft-identity0.2
Applied exp-prod0.2
Simplified0.2
Final simplification1.1
herbie shell --seed 2019144 +o rules:numerics
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
(/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2))