\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 130.404033395790208:\\
\;\;\;\;\frac{\mathsf{fma}\left({x}^{3}, 0.66666666666666674, 2 - 1 \cdot {x}^{2}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(1, \frac{e^{x \cdot \varepsilon - 1 \cdot x}}{\varepsilon}, 1 \cdot \left(\frac{1}{e^{\mathsf{fma}\left(x, \varepsilon, 1 \cdot x\right)}} + e^{x \cdot \varepsilon - 1 \cdot x}\right) - 1 \cdot \frac{e^{-\left(x \cdot \varepsilon + 1 \cdot x\right)}}{\varepsilon}\right)}{2}\\
\end{array}double f(double x, double eps) {
double r27556 = 1.0;
double r27557 = eps;
double r27558 = r27556 / r27557;
double r27559 = r27556 + r27558;
double r27560 = r27556 - r27557;
double r27561 = x;
double r27562 = r27560 * r27561;
double r27563 = -r27562;
double r27564 = exp(r27563);
double r27565 = r27559 * r27564;
double r27566 = r27558 - r27556;
double r27567 = r27556 + r27557;
double r27568 = r27567 * r27561;
double r27569 = -r27568;
double r27570 = exp(r27569);
double r27571 = r27566 * r27570;
double r27572 = r27565 - r27571;
double r27573 = 2.0;
double r27574 = r27572 / r27573;
return r27574;
}
double f(double x, double eps) {
double r27575 = x;
double r27576 = 130.4040333957902;
bool r27577 = r27575 <= r27576;
double r27578 = 3.0;
double r27579 = pow(r27575, r27578);
double r27580 = 0.6666666666666667;
double r27581 = 2.0;
double r27582 = 1.0;
double r27583 = 2.0;
double r27584 = pow(r27575, r27583);
double r27585 = r27582 * r27584;
double r27586 = r27581 - r27585;
double r27587 = fma(r27579, r27580, r27586);
double r27588 = r27587 / r27581;
double r27589 = eps;
double r27590 = r27575 * r27589;
double r27591 = r27582 * r27575;
double r27592 = r27590 - r27591;
double r27593 = exp(r27592);
double r27594 = r27593 / r27589;
double r27595 = 1.0;
double r27596 = fma(r27575, r27589, r27591);
double r27597 = exp(r27596);
double r27598 = r27595 / r27597;
double r27599 = r27598 + r27593;
double r27600 = r27582 * r27599;
double r27601 = r27590 + r27591;
double r27602 = -r27601;
double r27603 = exp(r27602);
double r27604 = r27603 / r27589;
double r27605 = r27582 * r27604;
double r27606 = r27600 - r27605;
double r27607 = fma(r27582, r27594, r27606);
double r27608 = r27607 / r27581;
double r27609 = r27577 ? r27588 : r27608;
return r27609;
}



Bits error versus x



Bits error versus eps
if x < 130.4040333957902Initial program 38.8
Taylor expanded around 0 1.4
Simplified1.4
if 130.4040333957902 < x Initial program 0.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification1.1
herbie shell --seed 2020060 +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))