\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 15.69605451446852306673918064916506409645:\\
\;\;\;\;\frac{\mathsf{fma}\left(0.6666666666666667406815349750104360282421, \left(x \cdot x\right) \cdot x, 2\right) - \left(x \cdot x\right) \cdot 1}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{1}{\varepsilon} + 1\right) \cdot \left(\sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot \left(-x\right)}} \cdot \left(\sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot \left(-x\right)}} \cdot \sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot \left(-x\right)}}\right)\right) - e^{\left(-\left(\varepsilon + 1\right)\right) \cdot x} \cdot \left(\frac{1}{\varepsilon} - 1\right)}{2}\\
\end{array}double f(double x, double eps) {
double r2379875 = 1.0;
double r2379876 = eps;
double r2379877 = r2379875 / r2379876;
double r2379878 = r2379875 + r2379877;
double r2379879 = r2379875 - r2379876;
double r2379880 = x;
double r2379881 = r2379879 * r2379880;
double r2379882 = -r2379881;
double r2379883 = exp(r2379882);
double r2379884 = r2379878 * r2379883;
double r2379885 = r2379877 - r2379875;
double r2379886 = r2379875 + r2379876;
double r2379887 = r2379886 * r2379880;
double r2379888 = -r2379887;
double r2379889 = exp(r2379888);
double r2379890 = r2379885 * r2379889;
double r2379891 = r2379884 - r2379890;
double r2379892 = 2.0;
double r2379893 = r2379891 / r2379892;
return r2379893;
}
double f(double x, double eps) {
double r2379894 = x;
double r2379895 = 15.696054514468523;
bool r2379896 = r2379894 <= r2379895;
double r2379897 = 0.6666666666666667;
double r2379898 = r2379894 * r2379894;
double r2379899 = r2379898 * r2379894;
double r2379900 = 2.0;
double r2379901 = fma(r2379897, r2379899, r2379900);
double r2379902 = 1.0;
double r2379903 = r2379898 * r2379902;
double r2379904 = r2379901 - r2379903;
double r2379905 = r2379904 / r2379900;
double r2379906 = eps;
double r2379907 = r2379902 / r2379906;
double r2379908 = r2379907 + r2379902;
double r2379909 = r2379902 - r2379906;
double r2379910 = -r2379894;
double r2379911 = r2379909 * r2379910;
double r2379912 = exp(r2379911);
double r2379913 = cbrt(r2379912);
double r2379914 = r2379913 * r2379913;
double r2379915 = r2379913 * r2379914;
double r2379916 = r2379908 * r2379915;
double r2379917 = r2379906 + r2379902;
double r2379918 = -r2379917;
double r2379919 = r2379918 * r2379894;
double r2379920 = exp(r2379919);
double r2379921 = r2379907 - r2379902;
double r2379922 = r2379920 * r2379921;
double r2379923 = r2379916 - r2379922;
double r2379924 = r2379923 / r2379900;
double r2379925 = r2379896 ? r2379905 : r2379924;
return r2379925;
}



Bits error versus x



Bits error versus eps
if x < 15.696054514468523Initial program 39.1
Taylor expanded around 0 1.1
Simplified1.1
if 15.696054514468523 < x Initial program 0.4
rmApplied add-cube-cbrt0.4
Final simplification0.9
herbie shell --seed 2019170 +o rules:numerics
(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))