\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 162.5604579277316474872350227087736129761:\\
\;\;\;\;\frac{\mathsf{fma}\left({x}^{3}, 0.6666666666666667406815349750104360282421, 2\right) - 1 \cdot \left(x \cdot x\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{1}{\varepsilon} + 1\right) \cdot e^{\left(1 - \varepsilon\right) \cdot \left(-x\right)} - \sqrt[3]{e^{x \cdot \left(-\left(\varepsilon + 1\right)\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)} \cdot \left(\sqrt[3]{e^{x \cdot \left(-\left(\varepsilon + 1\right)\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)} \cdot \sqrt[3]{e^{x \cdot \left(-\left(\varepsilon + 1\right)\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)}\right)}{2}\\
\end{array}double f(double x, double eps) {
double r41611 = 1.0;
double r41612 = eps;
double r41613 = r41611 / r41612;
double r41614 = r41611 + r41613;
double r41615 = r41611 - r41612;
double r41616 = x;
double r41617 = r41615 * r41616;
double r41618 = -r41617;
double r41619 = exp(r41618);
double r41620 = r41614 * r41619;
double r41621 = r41613 - r41611;
double r41622 = r41611 + r41612;
double r41623 = r41622 * r41616;
double r41624 = -r41623;
double r41625 = exp(r41624);
double r41626 = r41621 * r41625;
double r41627 = r41620 - r41626;
double r41628 = 2.0;
double r41629 = r41627 / r41628;
return r41629;
}
double f(double x, double eps) {
double r41630 = x;
double r41631 = 162.56045792773165;
bool r41632 = r41630 <= r41631;
double r41633 = 3.0;
double r41634 = pow(r41630, r41633);
double r41635 = 0.6666666666666667;
double r41636 = 2.0;
double r41637 = fma(r41634, r41635, r41636);
double r41638 = 1.0;
double r41639 = r41630 * r41630;
double r41640 = r41638 * r41639;
double r41641 = r41637 - r41640;
double r41642 = r41641 / r41636;
double r41643 = eps;
double r41644 = r41638 / r41643;
double r41645 = r41644 + r41638;
double r41646 = r41638 - r41643;
double r41647 = -r41630;
double r41648 = r41646 * r41647;
double r41649 = exp(r41648);
double r41650 = r41645 * r41649;
double r41651 = r41643 + r41638;
double r41652 = -r41651;
double r41653 = r41630 * r41652;
double r41654 = exp(r41653);
double r41655 = r41644 - r41638;
double r41656 = r41654 * r41655;
double r41657 = cbrt(r41656);
double r41658 = r41657 * r41657;
double r41659 = r41657 * r41658;
double r41660 = r41650 - r41659;
double r41661 = r41660 / r41636;
double r41662 = r41632 ? r41642 : r41661;
return r41662;
}



Bits error versus x



Bits error versus eps
if x < 162.56045792773165Initial program 39.1
Taylor expanded around 0 1.4
Simplified1.4
if 162.56045792773165 < x Initial program 0.1
rmApplied add-cube-cbrt0.1
Simplified0.1
Simplified0.1
Final simplification1.1
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
(/ (- (* (+ 1.0 (/ 1.0 eps)) (exp (- (* (- 1.0 eps) x)))) (* (- (/ 1.0 eps) 1.0) (exp (- (* (+ 1.0 eps) x))))) 2.0))