Average Error: 29.4 → 0.9
Time: 8.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 179.02536135484516:\\ \;\;\;\;\frac{0.66666666666666674 \cdot {x}^{3} + \left(2 - 1 \cdot {x}^{2}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{1}{\varepsilon} + 1}{e^{\left(1 - \varepsilon\right) \cdot x}} - \frac{\frac{1}{\varepsilon} - 1}{e^{x \cdot \left(\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 179.02536135484516:\\
\;\;\;\;\frac{0.66666666666666674 \cdot {x}^{3} + \left(2 - 1 \cdot {x}^{2}\right)}{2}\\

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

\end{array}
double f(double x, double eps) {
        double r34774 = 1.0;
        double r34775 = eps;
        double r34776 = r34774 / r34775;
        double r34777 = r34774 + r34776;
        double r34778 = r34774 - r34775;
        double r34779 = x;
        double r34780 = r34778 * r34779;
        double r34781 = -r34780;
        double r34782 = exp(r34781);
        double r34783 = r34777 * r34782;
        double r34784 = r34776 - r34774;
        double r34785 = r34774 + r34775;
        double r34786 = r34785 * r34779;
        double r34787 = -r34786;
        double r34788 = exp(r34787);
        double r34789 = r34784 * r34788;
        double r34790 = r34783 - r34789;
        double r34791 = 2.0;
        double r34792 = r34790 / r34791;
        return r34792;
}

double f(double x, double eps) {
        double r34793 = x;
        double r34794 = 179.02536135484516;
        bool r34795 = r34793 <= r34794;
        double r34796 = 0.6666666666666667;
        double r34797 = 3.0;
        double r34798 = pow(r34793, r34797);
        double r34799 = r34796 * r34798;
        double r34800 = 2.0;
        double r34801 = 1.0;
        double r34802 = 2.0;
        double r34803 = pow(r34793, r34802);
        double r34804 = r34801 * r34803;
        double r34805 = r34800 - r34804;
        double r34806 = r34799 + r34805;
        double r34807 = r34806 / r34800;
        double r34808 = eps;
        double r34809 = r34801 / r34808;
        double r34810 = r34809 + r34801;
        double r34811 = r34801 - r34808;
        double r34812 = r34811 * r34793;
        double r34813 = exp(r34812);
        double r34814 = r34810 / r34813;
        double r34815 = r34809 - r34801;
        double r34816 = r34808 + r34801;
        double r34817 = r34793 * r34816;
        double r34818 = exp(r34817);
        double r34819 = r34815 / r34818;
        double r34820 = r34814 - r34819;
        double r34821 = r34820 / r34800;
        double r34822 = r34795 ? r34807 : r34821;
        return r34822;
}

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

    1. Initial program 38.9

      \[\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. Simplified38.9

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

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

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

    if 179.02536135484516 < 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. Simplified0.1

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

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

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

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

Reproduce

herbie shell --seed 2020045 
(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))