\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 10.81769536144251908638125314610078930855:\\
\;\;\;\;\frac{\log \left(e^{{x}^{2} \cdot \left(x \cdot 0.6666666666666667406815349750104360282421 - 1\right) + 2}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot \left(\left(\sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}} \cdot \sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}}\right) \cdot \sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}}\right) - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\\
\end{array}double f(double x, double eps) {
double r32601 = 1.0;
double r32602 = eps;
double r32603 = r32601 / r32602;
double r32604 = r32601 + r32603;
double r32605 = r32601 - r32602;
double r32606 = x;
double r32607 = r32605 * r32606;
double r32608 = -r32607;
double r32609 = exp(r32608);
double r32610 = r32604 * r32609;
double r32611 = r32603 - r32601;
double r32612 = r32601 + r32602;
double r32613 = r32612 * r32606;
double r32614 = -r32613;
double r32615 = exp(r32614);
double r32616 = r32611 * r32615;
double r32617 = r32610 - r32616;
double r32618 = 2.0;
double r32619 = r32617 / r32618;
return r32619;
}
double f(double x, double eps) {
double r32620 = x;
double r32621 = 10.817695361442519;
bool r32622 = r32620 <= r32621;
double r32623 = 2.0;
double r32624 = pow(r32620, r32623);
double r32625 = 0.6666666666666667;
double r32626 = r32620 * r32625;
double r32627 = 1.0;
double r32628 = r32626 - r32627;
double r32629 = r32624 * r32628;
double r32630 = 2.0;
double r32631 = r32629 + r32630;
double r32632 = exp(r32631);
double r32633 = log(r32632);
double r32634 = r32633 / r32630;
double r32635 = eps;
double r32636 = r32627 / r32635;
double r32637 = r32627 + r32636;
double r32638 = r32627 - r32635;
double r32639 = r32638 * r32620;
double r32640 = -r32639;
double r32641 = exp(r32640);
double r32642 = cbrt(r32641);
double r32643 = r32642 * r32642;
double r32644 = r32643 * r32642;
double r32645 = r32637 * r32644;
double r32646 = r32636 - r32627;
double r32647 = r32627 + r32635;
double r32648 = r32647 * r32620;
double r32649 = -r32648;
double r32650 = exp(r32649);
double r32651 = r32646 * r32650;
double r32652 = r32645 - r32651;
double r32653 = r32652 / r32630;
double r32654 = r32622 ? r32634 : r32653;
return r32654;
}



Bits error versus x



Bits error versus eps
Results
if x < 10.817695361442519Initial program 39.3
Taylor expanded around 0 1.2
rmApplied add-cube-cbrt1.2
rmApplied add-log-exp1.2
Applied add-log-exp1.2
Applied add-log-exp1.2
Applied sum-log1.2
Applied diff-log1.2
Simplified1.2
if 10.817695361442519 < x Initial program 0.5
rmApplied add-cube-cbrt0.5
Final simplification1.0
herbie shell --seed 2020002
(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))