Average Error: 29.4 → 1.2
Time: 21.3s
Precision: 64
\[\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}\]
\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;
}

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Initial program 29.4

    \[\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}\]
  2. Taylor expanded around inf 29.4

    \[\leadsto \frac{\color{blue}{\left(1 \cdot e^{x \cdot \varepsilon - 1 \cdot x} + \left(1 \cdot e^{-\left(x \cdot \varepsilon + 1 \cdot x\right)} + 1 \cdot \frac{e^{x \cdot \varepsilon - 1 \cdot x}}{\varepsilon}\right)\right) - 1 \cdot \frac{e^{-\left(x \cdot \varepsilon + 1 \cdot x\right)}}{\varepsilon}}}{2}\]
  3. Simplified24.7

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(1, e^{x \cdot \left(\varepsilon - 1\right)}, 1 \cdot \left(\left(e^{-x \cdot \left(\varepsilon + 1\right)} + \frac{e^{x \cdot \left(\varepsilon - 1\right)}}{\varepsilon}\right) - \frac{e^{-x \cdot \left(\varepsilon + 1\right)}}{\varepsilon}\right)\right)}}{2}\]
  4. Using strategy rm
  5. Applied associate--l+0.9

    \[\leadsto \frac{\mathsf{fma}\left(1, e^{x \cdot \left(\varepsilon - 1\right)}, 1 \cdot \color{blue}{\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}\]
  6. Simplified1.2

    \[\leadsto \frac{\mathsf{fma}\left(1, e^{x \cdot \left(\varepsilon - 1\right)}, 1 \cdot \left(e^{-x \cdot \left(\varepsilon + 1\right)} + \color{blue}{\left(\frac{{\left(e^{x}\right)}^{\left(\varepsilon - 1\right)}}{\varepsilon} - \frac{e^{\left(-\left(\varepsilon + 1\right)\right) \cdot x}}{\varepsilon}\right)}\right)\right)}{2}\]
  7. Final simplification1.2

    \[\leadsto \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}\]

Reproduce

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))