\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 2.8344871195921435:\\
\;\;\;\;\frac{\frac{\sqrt{\left(2.666666666666667 \cdot {x}^{3} + 4\right) - 1 \cdot {x}^{4}}}{\frac{{x}^{2} \cdot \left(0.66666666666666674 \cdot x + 1\right) + 2}{\sqrt{\left(2.666666666666667 \cdot {x}^{3} + 4\right) - 1 \cdot {x}^{4}}}}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 \cdot \left(\frac{e^{x \cdot \varepsilon - 1 \cdot x}}{\varepsilon} + e^{x \cdot \varepsilon - 1 \cdot x}\right) - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\\
\end{array}double f(double x, double eps) {
double r40579 = 1.0;
double r40580 = eps;
double r40581 = r40579 / r40580;
double r40582 = r40579 + r40581;
double r40583 = r40579 - r40580;
double r40584 = x;
double r40585 = r40583 * r40584;
double r40586 = -r40585;
double r40587 = exp(r40586);
double r40588 = r40582 * r40587;
double r40589 = r40581 - r40579;
double r40590 = r40579 + r40580;
double r40591 = r40590 * r40584;
double r40592 = -r40591;
double r40593 = exp(r40592);
double r40594 = r40589 * r40593;
double r40595 = r40588 - r40594;
double r40596 = 2.0;
double r40597 = r40595 / r40596;
return r40597;
}
double f(double x, double eps) {
double r40598 = x;
double r40599 = 2.8344871195921435;
bool r40600 = r40598 <= r40599;
double r40601 = 2.666666666666667;
double r40602 = 3.0;
double r40603 = pow(r40598, r40602);
double r40604 = r40601 * r40603;
double r40605 = 4.0;
double r40606 = r40604 + r40605;
double r40607 = 1.0;
double r40608 = 4.0;
double r40609 = pow(r40598, r40608);
double r40610 = r40607 * r40609;
double r40611 = r40606 - r40610;
double r40612 = sqrt(r40611);
double r40613 = 2.0;
double r40614 = pow(r40598, r40613);
double r40615 = 0.6666666666666667;
double r40616 = r40615 * r40598;
double r40617 = r40616 + r40607;
double r40618 = r40614 * r40617;
double r40619 = 2.0;
double r40620 = r40618 + r40619;
double r40621 = r40620 / r40612;
double r40622 = r40612 / r40621;
double r40623 = r40622 / r40619;
double r40624 = eps;
double r40625 = r40598 * r40624;
double r40626 = r40607 * r40598;
double r40627 = r40625 - r40626;
double r40628 = exp(r40627);
double r40629 = r40628 / r40624;
double r40630 = r40629 + r40628;
double r40631 = r40607 * r40630;
double r40632 = r40607 / r40624;
double r40633 = r40632 - r40607;
double r40634 = r40607 + r40624;
double r40635 = r40634 * r40598;
double r40636 = -r40635;
double r40637 = exp(r40636);
double r40638 = r40633 * r40637;
double r40639 = r40631 - r40638;
double r40640 = r40639 / r40619;
double r40641 = r40600 ? r40623 : r40640;
return r40641;
}



Bits error versus x



Bits error versus eps
Results
if x < 2.8344871195921435Initial program 38.9
Taylor expanded around 0 1.1
rmApplied flip--1.1
Simplified1.1
Simplified1.1
Taylor expanded around 0 1.1
rmApplied add-sqr-sqrt1.1
Applied associate-/l*1.1
if 2.8344871195921435 < x Initial program 0.5
Taylor expanded around inf 0.5
Simplified0.5
Final simplification1.0
herbie shell --seed 2020100
(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))