Average Error: 29.3 → 0.9
Time: 15.6s
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 33.941483957658718:\\ \;\;\;\;\frac{\left(\left(\left(0.66666666666666674 \cdot x\right) \cdot x\right) \cdot x + 2\right) - 1 \cdot {x}^{2}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot {\left(e^{1 + \varepsilon}\right)}^{\left(-x\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 33.941483957658718:\\
\;\;\;\;\frac{\left(\left(\left(0.66666666666666674 \cdot x\right) \cdot x\right) \cdot x + 2\right) - 1 \cdot {x}^{2}}{2}\\

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

\end{array}
double f(double x, double eps) {
        double r53882 = 1.0;
        double r53883 = eps;
        double r53884 = r53882 / r53883;
        double r53885 = r53882 + r53884;
        double r53886 = r53882 - r53883;
        double r53887 = x;
        double r53888 = r53886 * r53887;
        double r53889 = -r53888;
        double r53890 = exp(r53889);
        double r53891 = r53885 * r53890;
        double r53892 = r53884 - r53882;
        double r53893 = r53882 + r53883;
        double r53894 = r53893 * r53887;
        double r53895 = -r53894;
        double r53896 = exp(r53895);
        double r53897 = r53892 * r53896;
        double r53898 = r53891 - r53897;
        double r53899 = 2.0;
        double r53900 = r53898 / r53899;
        return r53900;
}

double f(double x, double eps) {
        double r53901 = x;
        double r53902 = 33.94148395765872;
        bool r53903 = r53901 <= r53902;
        double r53904 = 0.6666666666666667;
        double r53905 = r53904 * r53901;
        double r53906 = r53905 * r53901;
        double r53907 = r53906 * r53901;
        double r53908 = 2.0;
        double r53909 = r53907 + r53908;
        double r53910 = 1.0;
        double r53911 = 2.0;
        double r53912 = pow(r53901, r53911);
        double r53913 = r53910 * r53912;
        double r53914 = r53909 - r53913;
        double r53915 = r53914 / r53908;
        double r53916 = eps;
        double r53917 = r53910 / r53916;
        double r53918 = r53910 + r53917;
        double r53919 = r53910 - r53916;
        double r53920 = r53919 * r53901;
        double r53921 = -r53920;
        double r53922 = exp(r53921);
        double r53923 = r53918 * r53922;
        double r53924 = r53917 - r53910;
        double r53925 = r53910 + r53916;
        double r53926 = exp(r53925);
        double r53927 = -r53901;
        double r53928 = pow(r53926, r53927);
        double r53929 = r53924 * r53928;
        double r53930 = r53923 - r53929;
        double r53931 = r53930 / r53908;
        double r53932 = r53903 ? r53915 : r53931;
        return r53932;
}

Error

Bits error versus x

Bits error versus eps

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

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

    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. Taylor expanded around 0 1.1

      \[\leadsto \frac{\color{blue}{\left(0.66666666666666674 \cdot {x}^{3} + 2\right) - 1 \cdot {x}^{2}}}{2}\]
    3. Using strategy rm
    4. Applied unpow31.1

      \[\leadsto \frac{\left(0.66666666666666674 \cdot \color{blue}{\left(\left(x \cdot x\right) \cdot x\right)} + 2\right) - 1 \cdot {x}^{2}}{2}\]
    5. Applied associate-*r*1.1

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

      \[\leadsto \frac{\left(\color{blue}{\left(\left(0.66666666666666674 \cdot x\right) \cdot x\right)} \cdot x + 2\right) - 1 \cdot {x}^{2}}{2}\]

    if 33.94148395765872 < 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. Using strategy rm
    3. Applied distribute-rgt-neg-in0.2

      \[\leadsto \frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{\color{blue}{\left(1 + \varepsilon\right) \cdot \left(-x\right)}}}{2}\]
    4. Applied exp-prod0.2

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

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

Reproduce

herbie shell --seed 2020042 
(FPCore (x eps)
  :name "NMSE Section 6.1 mentioned, A"
  :precision binary64
  (/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2))