Average Error: 30.1 → 1.0
Time: 14.9s
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 95.541640315829881:\\ \;\;\;\;\frac{\left(\sqrt[3]{0.66666666666666674 \cdot {x}^{3}} \cdot \sqrt[3]{0.66666666666666674 \cdot {x}^{3}}\right) \cdot \sqrt[3]{0.66666666666666674 \cdot {x}^{3}} + \left(2 - 1 \cdot {x}^{2}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot \left(\left(\sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}} \cdot \sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}}\right) \cdot \sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}}\right) - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{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 95.541640315829881:\\
\;\;\;\;\frac{\left(\sqrt[3]{0.66666666666666674 \cdot {x}^{3}} \cdot \sqrt[3]{0.66666666666666674 \cdot {x}^{3}}\right) \cdot \sqrt[3]{0.66666666666666674 \cdot {x}^{3}} + \left(2 - 1 \cdot {x}^{2}\right)}{2}\\

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

\end{array}
double f(double x, double eps) {
        double r33889 = 1.0;
        double r33890 = eps;
        double r33891 = r33889 / r33890;
        double r33892 = r33889 + r33891;
        double r33893 = r33889 - r33890;
        double r33894 = x;
        double r33895 = r33893 * r33894;
        double r33896 = -r33895;
        double r33897 = exp(r33896);
        double r33898 = r33892 * r33897;
        double r33899 = r33891 - r33889;
        double r33900 = r33889 + r33890;
        double r33901 = r33900 * r33894;
        double r33902 = -r33901;
        double r33903 = exp(r33902);
        double r33904 = r33899 * r33903;
        double r33905 = r33898 - r33904;
        double r33906 = 2.0;
        double r33907 = r33905 / r33906;
        return r33907;
}

double f(double x, double eps) {
        double r33908 = x;
        double r33909 = 95.54164031582988;
        bool r33910 = r33908 <= r33909;
        double r33911 = 0.6666666666666667;
        double r33912 = 3.0;
        double r33913 = pow(r33908, r33912);
        double r33914 = r33911 * r33913;
        double r33915 = cbrt(r33914);
        double r33916 = r33915 * r33915;
        double r33917 = r33916 * r33915;
        double r33918 = 2.0;
        double r33919 = 1.0;
        double r33920 = 2.0;
        double r33921 = pow(r33908, r33920);
        double r33922 = r33919 * r33921;
        double r33923 = r33918 - r33922;
        double r33924 = r33917 + r33923;
        double r33925 = r33924 / r33918;
        double r33926 = eps;
        double r33927 = r33919 / r33926;
        double r33928 = r33919 + r33927;
        double r33929 = r33919 - r33926;
        double r33930 = r33929 * r33908;
        double r33931 = -r33930;
        double r33932 = exp(r33931);
        double r33933 = cbrt(r33932);
        double r33934 = r33933 * r33933;
        double r33935 = r33934 * r33933;
        double r33936 = r33928 * r33935;
        double r33937 = r33927 - r33919;
        double r33938 = r33919 + r33926;
        double r33939 = r33938 * r33908;
        double r33940 = -r33939;
        double r33941 = exp(r33940);
        double r33942 = r33937 * r33941;
        double r33943 = r33936 - r33942;
        double r33944 = r33943 / r33918;
        double r33945 = r33910 ? r33925 : r33944;
        return r33945;
}

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

    1. Initial program 39.6

      \[\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(0.66666666666666674 \cdot {x}^{3} + 2\right) - 1 \cdot {x}^{2}}}{2}\]
    3. Using strategy rm
    4. Applied associate--l+1.3

      \[\leadsto \frac{\color{blue}{0.66666666666666674 \cdot {x}^{3} + \left(2 - 1 \cdot {x}^{2}\right)}}{2}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt1.3

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

    if 95.54164031582988 < x

    1. Initial program 0.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. Using strategy rm
    3. Applied add-cube-cbrt0.3

      \[\leadsto \frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot \color{blue}{\left(\left(\sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}} \cdot \sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}}\right) \cdot \sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot 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 95.541640315829881:\\ \;\;\;\;\frac{\left(\sqrt[3]{0.66666666666666674 \cdot {x}^{3}} \cdot \sqrt[3]{0.66666666666666674 \cdot {x}^{3}}\right) \cdot \sqrt[3]{0.66666666666666674 \cdot {x}^{3}} + \left(2 - 1 \cdot {x}^{2}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot \left(\left(\sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}} \cdot \sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}}\right) \cdot \sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}}\right) - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\\ \end{array}\]

Reproduce

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