\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}\frac{\mathsf{fma}\left(e^{-x \cdot \left(\varepsilon + 1\right)}, 1, 1 \cdot \left(e^{x \cdot \left(\varepsilon - 1\right)} + \left(\frac{e^{x \cdot \left(\varepsilon - 1\right)}}{\varepsilon} - \frac{e^{-x \cdot \left(\varepsilon + 1\right)}}{\varepsilon}\right)\right)\right)}{2}double f(double x, double eps) {
double r3161915 = 1.0;
double r3161916 = eps;
double r3161917 = r3161915 / r3161916;
double r3161918 = r3161915 + r3161917;
double r3161919 = r3161915 - r3161916;
double r3161920 = x;
double r3161921 = r3161919 * r3161920;
double r3161922 = -r3161921;
double r3161923 = exp(r3161922);
double r3161924 = r3161918 * r3161923;
double r3161925 = r3161917 - r3161915;
double r3161926 = r3161915 + r3161916;
double r3161927 = r3161926 * r3161920;
double r3161928 = -r3161927;
double r3161929 = exp(r3161928);
double r3161930 = r3161925 * r3161929;
double r3161931 = r3161924 - r3161930;
double r3161932 = 2.0;
double r3161933 = r3161931 / r3161932;
return r3161933;
}
double f(double x, double eps) {
double r3161934 = x;
double r3161935 = eps;
double r3161936 = 1.0;
double r3161937 = r3161935 + r3161936;
double r3161938 = r3161934 * r3161937;
double r3161939 = -r3161938;
double r3161940 = exp(r3161939);
double r3161941 = r3161935 - r3161936;
double r3161942 = r3161934 * r3161941;
double r3161943 = exp(r3161942);
double r3161944 = r3161943 / r3161935;
double r3161945 = r3161940 / r3161935;
double r3161946 = r3161944 - r3161945;
double r3161947 = r3161943 + r3161946;
double r3161948 = r3161936 * r3161947;
double r3161949 = fma(r3161940, r3161936, r3161948);
double r3161950 = 2.0;
double r3161951 = r3161949 / r3161950;
return r3161951;
}



Bits error versus x



Bits error versus eps
Initial program 29.0
Taylor expanded around inf 29.0
Simplified24.4
rmApplied associate--l+0.9
Final simplification0.9
herbie shell --seed 2019174 +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))