\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 199.996721386793325:\\
\;\;\;\;\left(\left({1}^{\frac{1}{3}} \cdot \left(\left(0.1111111111111111 \cdot {x}^{3} + 1\right) - 0.166666666666666657 \cdot {x}^{2}\right)\right) \cdot \sqrt[3]{\left(0.33333333333333337 \cdot {x}^{3} + 1\right) - 0.5 \cdot {x}^{2}}\right) \cdot \left({1}^{\frac{1}{3}} \cdot \left(\left(0.1111111111111111 \cdot {x}^{3} + 1\right) - 0.166666666666666657 \cdot {x}^{2}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;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 r54626 = 1.0;
double r54627 = eps;
double r54628 = r54626 / r54627;
double r54629 = r54626 + r54628;
double r54630 = r54626 - r54627;
double r54631 = x;
double r54632 = r54630 * r54631;
double r54633 = -r54632;
double r54634 = exp(r54633);
double r54635 = r54629 * r54634;
double r54636 = r54628 - r54626;
double r54637 = r54626 + r54627;
double r54638 = r54637 * r54631;
double r54639 = -r54638;
double r54640 = exp(r54639);
double r54641 = r54636 * r54640;
double r54642 = r54635 - r54641;
double r54643 = 2.0;
double r54644 = r54642 / r54643;
return r54644;
}
double f(double x, double eps) {
double r54645 = x;
double r54646 = 199.99672138679333;
bool r54647 = r54645 <= r54646;
double r54648 = 1.0;
double r54649 = 0.3333333333333333;
double r54650 = pow(r54648, r54649);
double r54651 = 0.1111111111111111;
double r54652 = 3.0;
double r54653 = pow(r54645, r54652);
double r54654 = r54651 * r54653;
double r54655 = 1.0;
double r54656 = r54654 + r54655;
double r54657 = 0.16666666666666666;
double r54658 = 2.0;
double r54659 = pow(r54645, r54658);
double r54660 = r54657 * r54659;
double r54661 = r54656 - r54660;
double r54662 = r54650 * r54661;
double r54663 = 0.33333333333333337;
double r54664 = r54663 * r54653;
double r54665 = r54664 + r54648;
double r54666 = 0.5;
double r54667 = r54666 * r54659;
double r54668 = r54665 - r54667;
double r54669 = cbrt(r54668);
double r54670 = r54662 * r54669;
double r54671 = r54670 * r54662;
double r54672 = eps;
double r54673 = r54672 + r54648;
double r54674 = r54645 * r54673;
double r54675 = exp(r54674);
double r54676 = r54655 / r54675;
double r54677 = r54648 - r54672;
double r54678 = r54645 * r54677;
double r54679 = exp(r54678);
double r54680 = r54655 / r54679;
double r54681 = r54676 + r54680;
double r54682 = r54675 * r54672;
double r54683 = r54655 / r54682;
double r54684 = r54681 - r54683;
double r54685 = r54666 * r54684;
double r54686 = r54666 / r54672;
double r54687 = r54686 / r54679;
double r54688 = r54685 + r54687;
double r54689 = r54647 ? r54671 : r54688;
return r54689;
}



Bits error versus x



Bits error versus eps
Results
if x < 199.99672138679333Initial program 39.0
Simplified39.0
Taylor expanded around 0 1.1
rmApplied add-cube-cbrt1.2
Taylor expanded around 0 1.2
Simplified1.2
Taylor expanded around 0 1.2
Simplified1.2
if 199.99672138679333 < x Initial program 0.1
Simplified0.1
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.9
herbie shell --seed 2020024
(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))