\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{\left(0.66666666666666674 \cdot {x}^{3} + 2\right) - 1 \cdot {x}^{2}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 \cdot \left(\left(e^{-\left(x \cdot \varepsilon + 1 \cdot x\right)} + e^{x \cdot \varepsilon - 1 \cdot x}\right) - \frac{e^{-\left(x \cdot \varepsilon + 1 \cdot x\right)}}{\varepsilon}\right) + 1 \cdot \frac{e^{x \cdot \varepsilon - 1 \cdot x}}{\varepsilon}}{2}\\
\end{array}double f(double x, double eps) {
double r28553 = 1.0;
double r28554 = eps;
double r28555 = r28553 / r28554;
double r28556 = r28553 + r28555;
double r28557 = r28553 - r28554;
double r28558 = x;
double r28559 = r28557 * r28558;
double r28560 = -r28559;
double r28561 = exp(r28560);
double r28562 = r28556 * r28561;
double r28563 = r28555 - r28553;
double r28564 = r28553 + r28554;
double r28565 = r28564 * r28558;
double r28566 = -r28565;
double r28567 = exp(r28566);
double r28568 = r28563 * r28567;
double r28569 = r28562 - r28568;
double r28570 = 2.0;
double r28571 = r28569 / r28570;
return r28571;
}
double f(double x, double eps) {
double r28572 = x;
double r28573 = 130.4040333957902;
bool r28574 = r28572 <= r28573;
double r28575 = 0.6666666666666667;
double r28576 = 3.0;
double r28577 = pow(r28572, r28576);
double r28578 = r28575 * r28577;
double r28579 = 2.0;
double r28580 = r28578 + r28579;
double r28581 = 1.0;
double r28582 = 2.0;
double r28583 = pow(r28572, r28582);
double r28584 = r28581 * r28583;
double r28585 = r28580 - r28584;
double r28586 = r28585 / r28579;
double r28587 = eps;
double r28588 = r28572 * r28587;
double r28589 = r28581 * r28572;
double r28590 = r28588 + r28589;
double r28591 = -r28590;
double r28592 = exp(r28591);
double r28593 = r28588 - r28589;
double r28594 = exp(r28593);
double r28595 = r28592 + r28594;
double r28596 = r28592 / r28587;
double r28597 = r28595 - r28596;
double r28598 = r28581 * r28597;
double r28599 = r28594 / r28587;
double r28600 = r28581 * r28599;
double r28601 = r28598 + r28600;
double r28602 = r28601 / r28579;
double r28603 = r28574 ? r28586 : r28602;
return r28603;
}



Bits error versus x



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