\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 201.192235912335804:\\
\;\;\;\;\frac{\mathsf{fma}\left({x}^{3}, 0.66666666666666674, 2 - 1 \cdot {x}^{2}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{e^{-\left(1 + \varepsilon\right) \cdot x}}{2}, 1 - \frac{1}{\varepsilon}, \frac{1 + \frac{1}{\varepsilon}}{2 \cdot e^{\left(1 - \varepsilon\right) \cdot x}}\right)\\
\end{array}double f(double x, double eps) {
double r42515 = 1.0;
double r42516 = eps;
double r42517 = r42515 / r42516;
double r42518 = r42515 + r42517;
double r42519 = r42515 - r42516;
double r42520 = x;
double r42521 = r42519 * r42520;
double r42522 = -r42521;
double r42523 = exp(r42522);
double r42524 = r42518 * r42523;
double r42525 = r42517 - r42515;
double r42526 = r42515 + r42516;
double r42527 = r42526 * r42520;
double r42528 = -r42527;
double r42529 = exp(r42528);
double r42530 = r42525 * r42529;
double r42531 = r42524 - r42530;
double r42532 = 2.0;
double r42533 = r42531 / r42532;
return r42533;
}
double f(double x, double eps) {
double r42534 = x;
double r42535 = 201.1922359123358;
bool r42536 = r42534 <= r42535;
double r42537 = 3.0;
double r42538 = pow(r42534, r42537);
double r42539 = 0.6666666666666667;
double r42540 = 2.0;
double r42541 = 1.0;
double r42542 = 2.0;
double r42543 = pow(r42534, r42542);
double r42544 = r42541 * r42543;
double r42545 = r42540 - r42544;
double r42546 = fma(r42538, r42539, r42545);
double r42547 = r42546 / r42540;
double r42548 = eps;
double r42549 = r42541 + r42548;
double r42550 = r42549 * r42534;
double r42551 = -r42550;
double r42552 = exp(r42551);
double r42553 = r42552 / r42540;
double r42554 = r42541 / r42548;
double r42555 = r42541 - r42554;
double r42556 = r42541 + r42554;
double r42557 = r42541 - r42548;
double r42558 = r42557 * r42534;
double r42559 = exp(r42558);
double r42560 = r42540 * r42559;
double r42561 = r42556 / r42560;
double r42562 = fma(r42553, r42555, r42561);
double r42563 = r42536 ? r42547 : r42562;
return r42563;
}



Bits error versus x



Bits error versus eps
if x < 201.1922359123358Initial program 39.2
Taylor expanded around 0 1.4
Simplified1.4
if 201.1922359123358 < x Initial program 0.0
Simplified0.1
Final simplification1.1
herbie shell --seed 2020046 +o rules:numerics
(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))