\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 12.136437057937329:\\
\;\;\;\;\frac{\log \left(e^{\left(2 - x \cdot x\right) + \left(x \cdot \frac{2}{3}\right) \cdot \left(x \cdot x\right)}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{\left(\left(\frac{1}{\varepsilon} + 1\right) \cdot e^{\left(1 - \varepsilon\right) \cdot \left(-x\right)}\right) \cdot \left(\left(\left(\frac{1}{\varepsilon} + 1\right) \cdot e^{\left(1 - \varepsilon\right) \cdot \left(-x\right)}\right) \cdot \left(\left(\frac{1}{\varepsilon} + 1\right) \cdot e^{\left(1 - \varepsilon\right) \cdot \left(-x\right)}\right)\right)} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{\left(-x\right) \cdot \left(1 + \varepsilon\right)}}{2}\\
\end{array}double f(double x, double eps) {
double r1923548 = 1.0;
double r1923549 = eps;
double r1923550 = r1923548 / r1923549;
double r1923551 = r1923548 + r1923550;
double r1923552 = r1923548 - r1923549;
double r1923553 = x;
double r1923554 = r1923552 * r1923553;
double r1923555 = -r1923554;
double r1923556 = exp(r1923555);
double r1923557 = r1923551 * r1923556;
double r1923558 = r1923550 - r1923548;
double r1923559 = r1923548 + r1923549;
double r1923560 = r1923559 * r1923553;
double r1923561 = -r1923560;
double r1923562 = exp(r1923561);
double r1923563 = r1923558 * r1923562;
double r1923564 = r1923557 - r1923563;
double r1923565 = 2.0;
double r1923566 = r1923564 / r1923565;
return r1923566;
}
double f(double x, double eps) {
double r1923567 = x;
double r1923568 = 12.136437057937329;
bool r1923569 = r1923567 <= r1923568;
double r1923570 = 2.0;
double r1923571 = r1923567 * r1923567;
double r1923572 = r1923570 - r1923571;
double r1923573 = 0.6666666666666666;
double r1923574 = r1923567 * r1923573;
double r1923575 = r1923574 * r1923571;
double r1923576 = r1923572 + r1923575;
double r1923577 = exp(r1923576);
double r1923578 = log(r1923577);
double r1923579 = r1923578 / r1923570;
double r1923580 = 1.0;
double r1923581 = eps;
double r1923582 = r1923580 / r1923581;
double r1923583 = r1923582 + r1923580;
double r1923584 = r1923580 - r1923581;
double r1923585 = -r1923567;
double r1923586 = r1923584 * r1923585;
double r1923587 = exp(r1923586);
double r1923588 = r1923583 * r1923587;
double r1923589 = r1923588 * r1923588;
double r1923590 = r1923588 * r1923589;
double r1923591 = cbrt(r1923590);
double r1923592 = r1923582 - r1923580;
double r1923593 = r1923580 + r1923581;
double r1923594 = r1923585 * r1923593;
double r1923595 = exp(r1923594);
double r1923596 = r1923592 * r1923595;
double r1923597 = r1923591 - r1923596;
double r1923598 = r1923597 / r1923570;
double r1923599 = r1923569 ? r1923579 : r1923598;
return r1923599;
}



Bits error versus x



Bits error versus eps
Results
if x < 12.136437057937329Initial program 39.7
Taylor expanded around 0 1.2
Simplified1.2
rmApplied add-log-exp1.2
if 12.136437057937329 < x Initial program 0.4
rmApplied add-cbrt-cube0.4
Applied add-cbrt-cube42.5
Applied cbrt-unprod42.5
Simplified0.4
Final simplification1.0
herbie shell --seed 2019164
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
(/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2))