Average Error: 29.2 → 0.9
Time: 24.2s
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 99.08920999261980000483163166791200637817:\\ \;\;\;\;\frac{\frac{0.6666666666666667406815349750104360282421 \cdot \left(0.6666666666666667406815349750104360282421 \cdot {x}^{6}\right) - 2 \cdot 2}{{x}^{3} \cdot 0.6666666666666667406815349750104360282421 - 2} - 1 \cdot {x}^{2}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{e^{x \cdot \left(\varepsilon - 1\right)} \cdot 1}{\varepsilon} + 1 \cdot \left(\left(e^{-x \cdot \left(1 + \varepsilon\right)} + e^{x \cdot \left(\varepsilon - 1\right)}\right) - \frac{e^{-x \cdot \left(1 + \varepsilon\right)}}{\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 99.08920999261980000483163166791200637817:\\
\;\;\;\;\frac{\frac{0.6666666666666667406815349750104360282421 \cdot \left(0.6666666666666667406815349750104360282421 \cdot {x}^{6}\right) - 2 \cdot 2}{{x}^{3} \cdot 0.6666666666666667406815349750104360282421 - 2} - 1 \cdot {x}^{2}}{2}\\

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

\end{array}
double f(double x, double eps) {
        double r39054 = 1.0;
        double r39055 = eps;
        double r39056 = r39054 / r39055;
        double r39057 = r39054 + r39056;
        double r39058 = r39054 - r39055;
        double r39059 = x;
        double r39060 = r39058 * r39059;
        double r39061 = -r39060;
        double r39062 = exp(r39061);
        double r39063 = r39057 * r39062;
        double r39064 = r39056 - r39054;
        double r39065 = r39054 + r39055;
        double r39066 = r39065 * r39059;
        double r39067 = -r39066;
        double r39068 = exp(r39067);
        double r39069 = r39064 * r39068;
        double r39070 = r39063 - r39069;
        double r39071 = 2.0;
        double r39072 = r39070 / r39071;
        return r39072;
}

double f(double x, double eps) {
        double r39073 = x;
        double r39074 = 99.0892099926198;
        bool r39075 = r39073 <= r39074;
        double r39076 = 0.6666666666666667;
        double r39077 = 6.0;
        double r39078 = pow(r39073, r39077);
        double r39079 = r39076 * r39078;
        double r39080 = r39076 * r39079;
        double r39081 = 2.0;
        double r39082 = r39081 * r39081;
        double r39083 = r39080 - r39082;
        double r39084 = 3.0;
        double r39085 = pow(r39073, r39084);
        double r39086 = r39085 * r39076;
        double r39087 = r39086 - r39081;
        double r39088 = r39083 / r39087;
        double r39089 = 1.0;
        double r39090 = 2.0;
        double r39091 = pow(r39073, r39090);
        double r39092 = r39089 * r39091;
        double r39093 = r39088 - r39092;
        double r39094 = r39093 / r39081;
        double r39095 = eps;
        double r39096 = r39095 - r39089;
        double r39097 = r39073 * r39096;
        double r39098 = exp(r39097);
        double r39099 = r39098 * r39089;
        double r39100 = r39099 / r39095;
        double r39101 = r39089 + r39095;
        double r39102 = r39073 * r39101;
        double r39103 = -r39102;
        double r39104 = exp(r39103);
        double r39105 = r39104 + r39098;
        double r39106 = r39104 / r39095;
        double r39107 = r39105 - r39106;
        double r39108 = r39089 * r39107;
        double r39109 = r39100 + r39108;
        double r39110 = r39109 / r39081;
        double r39111 = r39075 ? r39094 : r39110;
        return r39111;
}

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

    1. Initial program 38.8

      \[\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.2

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

      \[\leadsto \frac{\left(\color{blue}{\left(\sqrt{0.6666666666666667406815349750104360282421} \cdot \sqrt{0.6666666666666667406815349750104360282421}\right)} \cdot {x}^{3} + 2\right) - 1 \cdot {x}^{2}}{2}\]
    5. Applied associate-*l*1.2

      \[\leadsto \frac{\left(\color{blue}{\sqrt{0.6666666666666667406815349750104360282421} \cdot \left(\sqrt{0.6666666666666667406815349750104360282421} \cdot {x}^{3}\right)} + 2\right) - 1 \cdot {x}^{2}}{2}\]
    6. Using strategy rm
    7. Applied flip-+1.2

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

      \[\leadsto \frac{\frac{\color{blue}{0.6666666666666667406815349750104360282421 \cdot \left(0.6666666666666667406815349750104360282421 \cdot {x}^{6}\right) - 2 \cdot 2}}{\sqrt{0.6666666666666667406815349750104360282421} \cdot \left(\sqrt{0.6666666666666667406815349750104360282421} \cdot {x}^{3}\right) - 2} - 1 \cdot {x}^{2}}{2}\]
    9. Simplified1.2

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

    if 99.0892099926198 < 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. Taylor expanded around inf 0.1

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

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

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

Reproduce

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