\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 468.3220261647265942883677780628204345703:\\
\;\;\;\;\left(0.3333333333333333703407674875052180141211 \cdot {x}^{3} + 1\right) - 0.5 \cdot {x}^{2}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{0.5 \cdot \left(\left(\frac{1}{e^{x \cdot \left(\varepsilon + 1\right)}} + \frac{1}{e^{x \cdot \left(1 - \varepsilon\right)}}\right) - \frac{1}{e^{x \cdot \left(\varepsilon + 1\right)} \cdot \varepsilon}\right) + \frac{\frac{0.5}{\varepsilon}}{e^{x \cdot \left(1 - \varepsilon\right)}}} \cdot \sqrt{0.5 \cdot \left(\left(\frac{1}{e^{x \cdot \left(\varepsilon + 1\right)}} + \frac{1}{e^{x \cdot \left(1 - \varepsilon\right)}}\right) - \frac{1}{e^{x \cdot \left(\varepsilon + 1\right)} \cdot \varepsilon}\right) + \frac{\frac{0.5}{\varepsilon}}{e^{x \cdot \left(1 - \varepsilon\right)}}}\\
\end{array}double f(double x, double eps) {
double r37590 = 1.0;
double r37591 = eps;
double r37592 = r37590 / r37591;
double r37593 = r37590 + r37592;
double r37594 = r37590 - r37591;
double r37595 = x;
double r37596 = r37594 * r37595;
double r37597 = -r37596;
double r37598 = exp(r37597);
double r37599 = r37593 * r37598;
double r37600 = r37592 - r37590;
double r37601 = r37590 + r37591;
double r37602 = r37601 * r37595;
double r37603 = -r37602;
double r37604 = exp(r37603);
double r37605 = r37600 * r37604;
double r37606 = r37599 - r37605;
double r37607 = 2.0;
double r37608 = r37606 / r37607;
return r37608;
}
double f(double x, double eps) {
double r37609 = x;
double r37610 = 468.3220261647266;
bool r37611 = r37609 <= r37610;
double r37612 = 0.33333333333333337;
double r37613 = 3.0;
double r37614 = pow(r37609, r37613);
double r37615 = r37612 * r37614;
double r37616 = 1.0;
double r37617 = r37615 + r37616;
double r37618 = 0.5;
double r37619 = 2.0;
double r37620 = pow(r37609, r37619);
double r37621 = r37618 * r37620;
double r37622 = r37617 - r37621;
double r37623 = 1.0;
double r37624 = eps;
double r37625 = r37624 + r37616;
double r37626 = r37609 * r37625;
double r37627 = exp(r37626);
double r37628 = r37623 / r37627;
double r37629 = r37616 - r37624;
double r37630 = r37609 * r37629;
double r37631 = exp(r37630);
double r37632 = r37623 / r37631;
double r37633 = r37628 + r37632;
double r37634 = r37627 * r37624;
double r37635 = r37623 / r37634;
double r37636 = r37633 - r37635;
double r37637 = r37618 * r37636;
double r37638 = r37618 / r37624;
double r37639 = r37638 / r37631;
double r37640 = r37637 + r37639;
double r37641 = sqrt(r37640);
double r37642 = r37641 * r37641;
double r37643 = r37611 ? r37622 : r37642;
return r37643;
}



Bits error versus x



Bits error versus eps
Results
if x < 468.3220261647266Initial program 38.9
Simplified38.9
Taylor expanded around 0 1.2
if 468.3220261647266 < x Initial program 0.0
Simplified0.0
Taylor expanded around inf 0
Simplified0.0
rmApplied add-sqr-sqrt0.0
Final simplification0.9
herbie shell --seed 2019362
(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))