Average Error: 29.6 → 1.0
Time: 5.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 10.81769536144251908638125314610078930855:\\ \;\;\;\;\frac{\log \left(e^{{x}^{2} \cdot \left(x \cdot 0.6666666666666667406815349750104360282421 - 1\right) + 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 10.81769536144251908638125314610078930855:\\
\;\;\;\;\frac{\log \left(e^{{x}^{2} \cdot \left(x \cdot 0.6666666666666667406815349750104360282421 - 1\right) + 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 r32601 = 1.0;
        double r32602 = eps;
        double r32603 = r32601 / r32602;
        double r32604 = r32601 + r32603;
        double r32605 = r32601 - r32602;
        double r32606 = x;
        double r32607 = r32605 * r32606;
        double r32608 = -r32607;
        double r32609 = exp(r32608);
        double r32610 = r32604 * r32609;
        double r32611 = r32603 - r32601;
        double r32612 = r32601 + r32602;
        double r32613 = r32612 * r32606;
        double r32614 = -r32613;
        double r32615 = exp(r32614);
        double r32616 = r32611 * r32615;
        double r32617 = r32610 - r32616;
        double r32618 = 2.0;
        double r32619 = r32617 / r32618;
        return r32619;
}

double f(double x, double eps) {
        double r32620 = x;
        double r32621 = 10.817695361442519;
        bool r32622 = r32620 <= r32621;
        double r32623 = 2.0;
        double r32624 = pow(r32620, r32623);
        double r32625 = 0.6666666666666667;
        double r32626 = r32620 * r32625;
        double r32627 = 1.0;
        double r32628 = r32626 - r32627;
        double r32629 = r32624 * r32628;
        double r32630 = 2.0;
        double r32631 = r32629 + r32630;
        double r32632 = exp(r32631);
        double r32633 = log(r32632);
        double r32634 = r32633 / r32630;
        double r32635 = eps;
        double r32636 = r32627 / r32635;
        double r32637 = r32627 + r32636;
        double r32638 = r32627 - r32635;
        double r32639 = r32638 * r32620;
        double r32640 = -r32639;
        double r32641 = exp(r32640);
        double r32642 = cbrt(r32641);
        double r32643 = r32642 * r32642;
        double r32644 = r32643 * r32642;
        double r32645 = r32637 * r32644;
        double r32646 = r32636 - r32627;
        double r32647 = r32627 + r32635;
        double r32648 = r32647 * r32620;
        double r32649 = -r32648;
        double r32650 = exp(r32649);
        double r32651 = r32646 * r32650;
        double r32652 = r32645 - r32651;
        double r32653 = r32652 / r32630;
        double r32654 = r32622 ? r32634 : r32653;
        return r32654;
}

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

    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.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-cube-cbrt1.2

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

      \[\leadsto \frac{\left(\left(\sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}} \cdot \sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}}\right) \cdot \sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}} + 2\right) - \color{blue}{\log \left(e^{1 \cdot {x}^{2}}\right)}}{2}\]
    7. Applied add-log-exp1.2

      \[\leadsto \frac{\left(\left(\sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}} \cdot \sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}}\right) \cdot \sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}} + \color{blue}{\log \left(e^{2}\right)}\right) - \log \left(e^{1 \cdot {x}^{2}}\right)}{2}\]
    8. Applied add-log-exp1.2

      \[\leadsto \frac{\left(\color{blue}{\log \left(e^{\left(\sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}} \cdot \sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}}\right) \cdot \sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}}}\right)} + \log \left(e^{2}\right)\right) - \log \left(e^{1 \cdot {x}^{2}}\right)}{2}\]
    9. Applied sum-log1.2

      \[\leadsto \frac{\color{blue}{\log \left(e^{\left(\sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}} \cdot \sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}}\right) \cdot \sqrt[3]{0.6666666666666667406815349750104360282421 \cdot {x}^{3}}} \cdot e^{2}\right)} - \log \left(e^{1 \cdot {x}^{2}}\right)}{2}\]
    10. Applied diff-log1.2

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

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

    if 10.817695361442519 < x

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

      \[\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 10.81769536144251908638125314610078930855:\\ \;\;\;\;\frac{\log \left(e^{{x}^{2} \cdot \left(x \cdot 0.6666666666666667406815349750104360282421 - 1\right) + 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 2020002 
(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))