\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 117.76041323671743:\\
\;\;\;\;\frac{\mathsf{fma}\left({x}^{3}, 0.66666666666666674, 2 - 1 \cdot {x}^{2}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(1, \frac{e^{x \cdot \varepsilon - 1 \cdot x}}{\varepsilon}, 1 \cdot \left(\frac{1}{e^{\mathsf{fma}\left(x, \varepsilon, 1 \cdot x\right)}} + e^{x \cdot \varepsilon - 1 \cdot x}\right) - 1 \cdot \frac{e^{-\left(x \cdot \varepsilon + 1 \cdot x\right)}}{\varepsilon}\right)}{2}\\
\end{array}double f(double x, double eps) {
double r34072 = 1.0;
double r34073 = eps;
double r34074 = r34072 / r34073;
double r34075 = r34072 + r34074;
double r34076 = r34072 - r34073;
double r34077 = x;
double r34078 = r34076 * r34077;
double r34079 = -r34078;
double r34080 = exp(r34079);
double r34081 = r34075 * r34080;
double r34082 = r34074 - r34072;
double r34083 = r34072 + r34073;
double r34084 = r34083 * r34077;
double r34085 = -r34084;
double r34086 = exp(r34085);
double r34087 = r34082 * r34086;
double r34088 = r34081 - r34087;
double r34089 = 2.0;
double r34090 = r34088 / r34089;
return r34090;
}
double f(double x, double eps) {
double r34091 = x;
double r34092 = 117.76041323671743;
bool r34093 = r34091 <= r34092;
double r34094 = 3.0;
double r34095 = pow(r34091, r34094);
double r34096 = 0.6666666666666667;
double r34097 = 2.0;
double r34098 = 1.0;
double r34099 = 2.0;
double r34100 = pow(r34091, r34099);
double r34101 = r34098 * r34100;
double r34102 = r34097 - r34101;
double r34103 = fma(r34095, r34096, r34102);
double r34104 = r34103 / r34097;
double r34105 = eps;
double r34106 = r34091 * r34105;
double r34107 = r34098 * r34091;
double r34108 = r34106 - r34107;
double r34109 = exp(r34108);
double r34110 = r34109 / r34105;
double r34111 = 1.0;
double r34112 = fma(r34091, r34105, r34107);
double r34113 = exp(r34112);
double r34114 = r34111 / r34113;
double r34115 = r34114 + r34109;
double r34116 = r34098 * r34115;
double r34117 = r34106 + r34107;
double r34118 = -r34117;
double r34119 = exp(r34118);
double r34120 = r34119 / r34105;
double r34121 = r34098 * r34120;
double r34122 = r34116 - r34121;
double r34123 = fma(r34098, r34110, r34122);
double r34124 = r34123 / r34097;
double r34125 = r34093 ? r34104 : r34124;
return r34125;
}



Bits error versus x



Bits error versus eps
if x < 117.76041323671743Initial program 39.2
Taylor expanded around 0 1.4
Simplified1.4
if 117.76041323671743 < x Initial program 0.1
Taylor expanded around inf 0.1
Simplified0.1
Final simplification1.0
herbie shell --seed 2020035 +o rules:numerics
(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))