\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 331.7599664969623631805006880313158035278:\\
\;\;\;\;\frac{\left(0.6666666666666667406815349750104360282421 \cdot {x}^{3} + 2\right) - 1 \cdot {x}^{2}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\left(\sqrt[3]{\frac{1}{\varepsilon} - 1} \cdot \sqrt[3]{\frac{1}{\varepsilon} - 1}\right) \cdot \sqrt[3]{\frac{1}{\varepsilon} - 1}\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\\
\end{array}double f(double x, double eps) {
double r41016 = 1.0;
double r41017 = eps;
double r41018 = r41016 / r41017;
double r41019 = r41016 + r41018;
double r41020 = r41016 - r41017;
double r41021 = x;
double r41022 = r41020 * r41021;
double r41023 = -r41022;
double r41024 = exp(r41023);
double r41025 = r41019 * r41024;
double r41026 = r41018 - r41016;
double r41027 = r41016 + r41017;
double r41028 = r41027 * r41021;
double r41029 = -r41028;
double r41030 = exp(r41029);
double r41031 = r41026 * r41030;
double r41032 = r41025 - r41031;
double r41033 = 2.0;
double r41034 = r41032 / r41033;
return r41034;
}
double f(double x, double eps) {
double r41035 = x;
double r41036 = 331.75996649696236;
bool r41037 = r41035 <= r41036;
double r41038 = 0.6666666666666667;
double r41039 = 3.0;
double r41040 = pow(r41035, r41039);
double r41041 = r41038 * r41040;
double r41042 = 2.0;
double r41043 = r41041 + r41042;
double r41044 = 1.0;
double r41045 = 2.0;
double r41046 = pow(r41035, r41045);
double r41047 = r41044 * r41046;
double r41048 = r41043 - r41047;
double r41049 = r41048 / r41042;
double r41050 = eps;
double r41051 = r41044 / r41050;
double r41052 = r41044 + r41051;
double r41053 = r41044 - r41050;
double r41054 = r41053 * r41035;
double r41055 = -r41054;
double r41056 = exp(r41055);
double r41057 = r41052 * r41056;
double r41058 = r41051 - r41044;
double r41059 = cbrt(r41058);
double r41060 = r41059 * r41059;
double r41061 = r41060 * r41059;
double r41062 = r41044 + r41050;
double r41063 = r41062 * r41035;
double r41064 = -r41063;
double r41065 = exp(r41064);
double r41066 = r41061 * r41065;
double r41067 = r41057 - r41066;
double r41068 = r41067 / r41042;
double r41069 = r41037 ? r41049 : r41068;
return r41069;
}



Bits error versus x



Bits error versus eps
Results
if x < 331.75996649696236Initial program 39.4
Taylor expanded around 0 1.4
if 331.75996649696236 < x Initial program 0.2
rmApplied add-cube-cbrt0.2
Final simplification1.1
herbie shell --seed 2019325
(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))