Average Error: 29.6 → 1.0
Time: 54.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}\]
\[\begin{array}{l} \mathbf{if}\;x \le 131.61593565898093:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{2}{3}, \left(x \cdot x\right) \cdot x, 2 - x \cdot x\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(e^{x \cdot \varepsilon - x} + \frac{e^{x \cdot \varepsilon - x}}{\varepsilon}\right) - e^{\left(-\left(\varepsilon + 1\right)\right) \cdot x} \cdot \left(\frac{1}{\varepsilon} - 1\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 131.61593565898093:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{2}{3}, \left(x \cdot x\right) \cdot x, 2 - x \cdot x\right)}{2}\\

\mathbf{else}:\\
\;\;\;\;\frac{\left(e^{x \cdot \varepsilon - x} + \frac{e^{x \cdot \varepsilon - x}}{\varepsilon}\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 r1344970 = 1.0;
        double r1344971 = eps;
        double r1344972 = r1344970 / r1344971;
        double r1344973 = r1344970 + r1344972;
        double r1344974 = r1344970 - r1344971;
        double r1344975 = x;
        double r1344976 = r1344974 * r1344975;
        double r1344977 = -r1344976;
        double r1344978 = exp(r1344977);
        double r1344979 = r1344973 * r1344978;
        double r1344980 = r1344972 - r1344970;
        double r1344981 = r1344970 + r1344971;
        double r1344982 = r1344981 * r1344975;
        double r1344983 = -r1344982;
        double r1344984 = exp(r1344983);
        double r1344985 = r1344980 * r1344984;
        double r1344986 = r1344979 - r1344985;
        double r1344987 = 2.0;
        double r1344988 = r1344986 / r1344987;
        return r1344988;
}

double f(double x, double eps) {
        double r1344989 = x;
        double r1344990 = 131.61593565898093;
        bool r1344991 = r1344989 <= r1344990;
        double r1344992 = 0.6666666666666666;
        double r1344993 = r1344989 * r1344989;
        double r1344994 = r1344993 * r1344989;
        double r1344995 = 2.0;
        double r1344996 = r1344995 - r1344993;
        double r1344997 = fma(r1344992, r1344994, r1344996);
        double r1344998 = r1344997 / r1344995;
        double r1344999 = eps;
        double r1345000 = r1344989 * r1344999;
        double r1345001 = r1345000 - r1344989;
        double r1345002 = exp(r1345001);
        double r1345003 = r1345002 / r1344999;
        double r1345004 = r1345002 + r1345003;
        double r1345005 = 1.0;
        double r1345006 = r1344999 + r1345005;
        double r1345007 = -r1345006;
        double r1345008 = r1345007 * r1344989;
        double r1345009 = exp(r1345008);
        double r1345010 = r1345005 / r1344999;
        double r1345011 = r1345010 - r1345005;
        double r1345012 = r1345009 * r1345011;
        double r1345013 = r1345004 - r1345012;
        double r1345014 = r1345013 / r1344995;
        double r1345015 = r1344991 ? r1344998 : r1345014;
        return r1345015;
}

Error

Bits error versus x

Bits error versus eps

Derivation

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

    1. Initial program 39.5

      \[\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 0 1.3

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

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

    if 131.61593565898093 < x

    1. Initial program 0.1

      \[\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 0.1

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

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

Reproduce

herbie shell --seed 2019142 +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))