\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(1, e^{\left(\varepsilon - 1\right) \cdot x}, 1 \cdot \left(\left(\frac{{\left(e^{x}\right)}^{\left(\varepsilon - 1\right)}}{\varepsilon} - \frac{e^{\left(-x\right) \cdot \left(1 + \varepsilon\right)}}{\varepsilon}\right) + e^{\left(-x\right) \cdot \left(1 + \varepsilon\right)}\right)\right)}{2}double f(double x, double eps) {
double r28045 = 1.0;
double r28046 = eps;
double r28047 = r28045 / r28046;
double r28048 = r28045 + r28047;
double r28049 = r28045 - r28046;
double r28050 = x;
double r28051 = r28049 * r28050;
double r28052 = -r28051;
double r28053 = exp(r28052);
double r28054 = r28048 * r28053;
double r28055 = r28047 - r28045;
double r28056 = r28045 + r28046;
double r28057 = r28056 * r28050;
double r28058 = -r28057;
double r28059 = exp(r28058);
double r28060 = r28055 * r28059;
double r28061 = r28054 - r28060;
double r28062 = 2.0;
double r28063 = r28061 / r28062;
return r28063;
}
double f(double x, double eps) {
double r28064 = 1.0;
double r28065 = eps;
double r28066 = r28065 - r28064;
double r28067 = x;
double r28068 = r28066 * r28067;
double r28069 = exp(r28068);
double r28070 = exp(r28067);
double r28071 = pow(r28070, r28066);
double r28072 = r28071 / r28065;
double r28073 = -r28067;
double r28074 = r28064 + r28065;
double r28075 = r28073 * r28074;
double r28076 = exp(r28075);
double r28077 = r28076 / r28065;
double r28078 = r28072 - r28077;
double r28079 = r28078 + r28076;
double r28080 = r28064 * r28079;
double r28081 = fma(r28064, r28069, r28080);
double r28082 = 2.0;
double r28083 = r28081 / r28082;
return r28083;
}



Bits error versus x



Bits error versus eps
Initial program 29.4
Taylor expanded around inf 29.4
Simplified24.7
rmApplied associate--l+0.9
Simplified1.2
Final simplification1.2
herbie shell --seed 2019196 +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))