Average Error: 29.3 → 0.8
Time: 1.2m
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}\]
\[\begin{array}{l} \mathbf{if}\;x \le 23.630683338257473:\\ \;\;\;\;\frac{\mathsf{fma}\left(\left(\left(x \cdot x\right) \cdot x\right), \frac{2}{3}, 2\right) - x \cdot x}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\frac{e^{\varepsilon \cdot x - x}}{\varepsilon} + e^{\varepsilon \cdot x - x}\right) + \left(e^{\left(-1 - \varepsilon\right) \cdot x} - \frac{e^{\left(-1 - \varepsilon\right) \cdot x}}{\varepsilon}\right)}{2}\\ \end{array}\]
\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 23.630683338257473:\\
\;\;\;\;\frac{\mathsf{fma}\left(\left(\left(x \cdot x\right) \cdot x\right), \frac{2}{3}, 2\right) - x \cdot x}{2}\\

\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{e^{\varepsilon \cdot x - x}}{\varepsilon} + e^{\varepsilon \cdot x - x}\right) + \left(e^{\left(-1 - \varepsilon\right) \cdot x} - \frac{e^{\left(-1 - \varepsilon\right) \cdot x}}{\varepsilon}\right)}{2}\\

\end{array}
double f(double x, double eps) {
        double r1517900 = 1.0;
        double r1517901 = eps;
        double r1517902 = r1517900 / r1517901;
        double r1517903 = r1517900 + r1517902;
        double r1517904 = r1517900 - r1517901;
        double r1517905 = x;
        double r1517906 = r1517904 * r1517905;
        double r1517907 = -r1517906;
        double r1517908 = exp(r1517907);
        double r1517909 = r1517903 * r1517908;
        double r1517910 = r1517902 - r1517900;
        double r1517911 = r1517900 + r1517901;
        double r1517912 = r1517911 * r1517905;
        double r1517913 = -r1517912;
        double r1517914 = exp(r1517913);
        double r1517915 = r1517910 * r1517914;
        double r1517916 = r1517909 - r1517915;
        double r1517917 = 2.0;
        double r1517918 = r1517916 / r1517917;
        return r1517918;
}

double f(double x, double eps) {
        double r1517919 = x;
        double r1517920 = 23.630683338257473;
        bool r1517921 = r1517919 <= r1517920;
        double r1517922 = r1517919 * r1517919;
        double r1517923 = r1517922 * r1517919;
        double r1517924 = 0.6666666666666666;
        double r1517925 = 2.0;
        double r1517926 = fma(r1517923, r1517924, r1517925);
        double r1517927 = r1517926 - r1517922;
        double r1517928 = r1517927 / r1517925;
        double r1517929 = eps;
        double r1517930 = r1517929 * r1517919;
        double r1517931 = r1517930 - r1517919;
        double r1517932 = exp(r1517931);
        double r1517933 = r1517932 / r1517929;
        double r1517934 = r1517933 + r1517932;
        double r1517935 = -1.0;
        double r1517936 = r1517935 - r1517929;
        double r1517937 = r1517936 * r1517919;
        double r1517938 = exp(r1517937);
        double r1517939 = r1517938 / r1517929;
        double r1517940 = r1517938 - r1517939;
        double r1517941 = r1517934 + r1517940;
        double r1517942 = r1517941 / r1517925;
        double r1517943 = r1517921 ? r1517928 : r1517942;
        return r1517943;
}

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Split input into 2 regimes
  2. if x < 23.630683338257473

    1. Initial program 39.3

      \[\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. Simplified39.3

      \[\leadsto \color{blue}{\frac{\left(e^{x \cdot \left(-1 - \varepsilon\right)} - \frac{e^{x \cdot \left(-1 - \varepsilon\right)}}{\varepsilon}\right) + \left(\frac{e^{x \cdot \varepsilon - x}}{\varepsilon} + e^{x \cdot \varepsilon - x}\right)}{2}}\]
    3. Taylor expanded around 0 1.0

      \[\leadsto \frac{\color{blue}{\left(\frac{2}{3} \cdot {x}^{3} + 2\right) - {x}^{2}}}{2}\]
    4. Simplified1.0

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\frac{2}{3}, \left(\left(x \cdot x\right) \cdot x\right), 2\right) - x \cdot x}}{2}\]
    5. Taylor expanded around 0 1.0

      \[\leadsto \frac{\color{blue}{\left(\frac{2}{3} \cdot {x}^{3} + 2\right)} - x \cdot x}{2}\]
    6. Simplified1.0

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\left(\left(x \cdot x\right) \cdot x\right), \frac{2}{3}, 2\right)} - x \cdot x}{2}\]

    if 23.630683338257473 < x

    1. Initial program 0.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}\]
    2. Simplified0.2

      \[\leadsto \color{blue}{\frac{\left(e^{x \cdot \left(-1 - \varepsilon\right)} - \frac{e^{x \cdot \left(-1 - \varepsilon\right)}}{\varepsilon}\right) + \left(\frac{e^{x \cdot \varepsilon - x}}{\varepsilon} + e^{x \cdot \varepsilon - x}\right)}{2}}\]
    3. Taylor expanded around inf 0.2

      \[\leadsto \frac{\left(e^{x \cdot \left(-1 - \varepsilon\right)} - \frac{e^{x \cdot \left(-1 - \varepsilon\right)}}{\varepsilon}\right) + \left(\color{blue}{\frac{e^{x \cdot \varepsilon - x}}{\varepsilon}} + e^{x \cdot \varepsilon - x}\right)}{2}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 23.630683338257473:\\ \;\;\;\;\frac{\mathsf{fma}\left(\left(\left(x \cdot x\right) \cdot x\right), \frac{2}{3}, 2\right) - x \cdot x}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\frac{e^{\varepsilon \cdot x - x}}{\varepsilon} + e^{\varepsilon \cdot x - x}\right) + \left(e^{\left(-1 - \varepsilon\right) \cdot x} - \frac{e^{\left(-1 - \varepsilon\right) \cdot x}}{\varepsilon}\right)}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019132 +o rules:numerics
(FPCore (x eps)
  :name "NMSE Section 6.1 mentioned, A"
  (/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2))