\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 99.08920999261980000483163166791200637817:\\
\;\;\;\;\frac{\frac{0.6666666666666667406815349750104360282421 \cdot \left(0.6666666666666667406815349750104360282421 \cdot {x}^{6}\right) - 2 \cdot 2}{{x}^{3} \cdot 0.6666666666666667406815349750104360282421 - 2} - 1 \cdot {x}^{2}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{e^{x \cdot \left(\varepsilon - 1\right)} \cdot 1}{\varepsilon} + 1 \cdot \left(\left(e^{-x \cdot \left(1 + \varepsilon\right)} + e^{x \cdot \left(\varepsilon - 1\right)}\right) - \frac{e^{-x \cdot \left(1 + \varepsilon\right)}}{\varepsilon}\right)}{2}\\
\end{array}double f(double x, double eps) {
double r39054 = 1.0;
double r39055 = eps;
double r39056 = r39054 / r39055;
double r39057 = r39054 + r39056;
double r39058 = r39054 - r39055;
double r39059 = x;
double r39060 = r39058 * r39059;
double r39061 = -r39060;
double r39062 = exp(r39061);
double r39063 = r39057 * r39062;
double r39064 = r39056 - r39054;
double r39065 = r39054 + r39055;
double r39066 = r39065 * r39059;
double r39067 = -r39066;
double r39068 = exp(r39067);
double r39069 = r39064 * r39068;
double r39070 = r39063 - r39069;
double r39071 = 2.0;
double r39072 = r39070 / r39071;
return r39072;
}
double f(double x, double eps) {
double r39073 = x;
double r39074 = 99.0892099926198;
bool r39075 = r39073 <= r39074;
double r39076 = 0.6666666666666667;
double r39077 = 6.0;
double r39078 = pow(r39073, r39077);
double r39079 = r39076 * r39078;
double r39080 = r39076 * r39079;
double r39081 = 2.0;
double r39082 = r39081 * r39081;
double r39083 = r39080 - r39082;
double r39084 = 3.0;
double r39085 = pow(r39073, r39084);
double r39086 = r39085 * r39076;
double r39087 = r39086 - r39081;
double r39088 = r39083 / r39087;
double r39089 = 1.0;
double r39090 = 2.0;
double r39091 = pow(r39073, r39090);
double r39092 = r39089 * r39091;
double r39093 = r39088 - r39092;
double r39094 = r39093 / r39081;
double r39095 = eps;
double r39096 = r39095 - r39089;
double r39097 = r39073 * r39096;
double r39098 = exp(r39097);
double r39099 = r39098 * r39089;
double r39100 = r39099 / r39095;
double r39101 = r39089 + r39095;
double r39102 = r39073 * r39101;
double r39103 = -r39102;
double r39104 = exp(r39103);
double r39105 = r39104 + r39098;
double r39106 = r39104 / r39095;
double r39107 = r39105 - r39106;
double r39108 = r39089 * r39107;
double r39109 = r39100 + r39108;
double r39110 = r39109 / r39081;
double r39111 = r39075 ? r39094 : r39110;
return r39111;
}



Bits error versus x



Bits error versus eps
Results
if x < 99.0892099926198Initial program 38.8
Taylor expanded around 0 1.2
rmApplied add-sqr-sqrt1.2
Applied associate-*l*1.2
rmApplied flip-+1.2
Simplified1.2
Simplified1.2
if 99.0892099926198 < x Initial program 0.2
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.9
herbie shell --seed 2019209
(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))