\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 121.4869422814261525900292326696217060089:\\
\;\;\;\;\frac{0.6666666666666667406815349750104360282421 \cdot \left(\left(x \cdot x\right) \cdot x\right) + \left(2 - \left(x \cdot 1\right) \cdot x\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 \cdot \left(e^{\left(\varepsilon - 1\right) \cdot x} + \frac{e^{\left(\varepsilon - 1\right) \cdot x}}{\varepsilon}\right) - e^{\left(-\left(1 + \varepsilon\right)\right) \cdot x} \cdot \left(\frac{1}{\varepsilon} - 1\right)}{2}\\
\end{array}double f(double x, double eps) {
double r2766613 = 1.0;
double r2766614 = eps;
double r2766615 = r2766613 / r2766614;
double r2766616 = r2766613 + r2766615;
double r2766617 = r2766613 - r2766614;
double r2766618 = x;
double r2766619 = r2766617 * r2766618;
double r2766620 = -r2766619;
double r2766621 = exp(r2766620);
double r2766622 = r2766616 * r2766621;
double r2766623 = r2766615 - r2766613;
double r2766624 = r2766613 + r2766614;
double r2766625 = r2766624 * r2766618;
double r2766626 = -r2766625;
double r2766627 = exp(r2766626);
double r2766628 = r2766623 * r2766627;
double r2766629 = r2766622 - r2766628;
double r2766630 = 2.0;
double r2766631 = r2766629 / r2766630;
return r2766631;
}
double f(double x, double eps) {
double r2766632 = x;
double r2766633 = 121.48694228142615;
bool r2766634 = r2766632 <= r2766633;
double r2766635 = 0.6666666666666667;
double r2766636 = r2766632 * r2766632;
double r2766637 = r2766636 * r2766632;
double r2766638 = r2766635 * r2766637;
double r2766639 = 2.0;
double r2766640 = 1.0;
double r2766641 = r2766632 * r2766640;
double r2766642 = r2766641 * r2766632;
double r2766643 = r2766639 - r2766642;
double r2766644 = r2766638 + r2766643;
double r2766645 = r2766644 / r2766639;
double r2766646 = eps;
double r2766647 = r2766646 - r2766640;
double r2766648 = r2766647 * r2766632;
double r2766649 = exp(r2766648);
double r2766650 = r2766649 / r2766646;
double r2766651 = r2766649 + r2766650;
double r2766652 = r2766640 * r2766651;
double r2766653 = r2766640 + r2766646;
double r2766654 = -r2766653;
double r2766655 = r2766654 * r2766632;
double r2766656 = exp(r2766655);
double r2766657 = r2766640 / r2766646;
double r2766658 = r2766657 - r2766640;
double r2766659 = r2766656 * r2766658;
double r2766660 = r2766652 - r2766659;
double r2766661 = r2766660 / r2766639;
double r2766662 = r2766634 ? r2766645 : r2766661;
return r2766662;
}



Bits error versus x



Bits error versus eps
Results
if x < 121.48694228142615Initial program 39.5
Taylor expanded around 0 1.4
Simplified1.4
if 121.48694228142615 < x Initial program 0.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification1.1
herbie shell --seed 2019171
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
(/ (- (* (+ 1.0 (/ 1.0 eps)) (exp (- (* (- 1.0 eps) x)))) (* (- (/ 1.0 eps) 1.0) (exp (- (* (+ 1.0 eps) x))))) 2.0))