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

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

\end{array}
double f(double x, double eps) {
        double r1923548 = 1.0;
        double r1923549 = eps;
        double r1923550 = r1923548 / r1923549;
        double r1923551 = r1923548 + r1923550;
        double r1923552 = r1923548 - r1923549;
        double r1923553 = x;
        double r1923554 = r1923552 * r1923553;
        double r1923555 = -r1923554;
        double r1923556 = exp(r1923555);
        double r1923557 = r1923551 * r1923556;
        double r1923558 = r1923550 - r1923548;
        double r1923559 = r1923548 + r1923549;
        double r1923560 = r1923559 * r1923553;
        double r1923561 = -r1923560;
        double r1923562 = exp(r1923561);
        double r1923563 = r1923558 * r1923562;
        double r1923564 = r1923557 - r1923563;
        double r1923565 = 2.0;
        double r1923566 = r1923564 / r1923565;
        return r1923566;
}

double f(double x, double eps) {
        double r1923567 = x;
        double r1923568 = 12.136437057937329;
        bool r1923569 = r1923567 <= r1923568;
        double r1923570 = 2.0;
        double r1923571 = r1923567 * r1923567;
        double r1923572 = r1923570 - r1923571;
        double r1923573 = 0.6666666666666666;
        double r1923574 = r1923567 * r1923573;
        double r1923575 = r1923574 * r1923571;
        double r1923576 = r1923572 + r1923575;
        double r1923577 = exp(r1923576);
        double r1923578 = log(r1923577);
        double r1923579 = r1923578 / r1923570;
        double r1923580 = 1.0;
        double r1923581 = eps;
        double r1923582 = r1923580 / r1923581;
        double r1923583 = r1923582 + r1923580;
        double r1923584 = r1923580 - r1923581;
        double r1923585 = -r1923567;
        double r1923586 = r1923584 * r1923585;
        double r1923587 = exp(r1923586);
        double r1923588 = r1923583 * r1923587;
        double r1923589 = r1923588 * r1923588;
        double r1923590 = r1923588 * r1923589;
        double r1923591 = cbrt(r1923590);
        double r1923592 = r1923582 - r1923580;
        double r1923593 = r1923580 + r1923581;
        double r1923594 = r1923585 * r1923593;
        double r1923595 = exp(r1923594);
        double r1923596 = r1923592 * r1923595;
        double r1923597 = r1923591 - r1923596;
        double r1923598 = r1923597 / r1923570;
        double r1923599 = r1923569 ? r1923579 : r1923598;
        return r1923599;
}

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

    1. Initial program 39.7

      \[\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(\frac{2}{3} \cdot {x}^{3} + 2\right) - {x}^{2}}}{2}\]
    3. Simplified1.2

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

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

    if 12.136437057937329 < x

    1. Initial program 0.4

      \[\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-cbrt-cube0.4

      \[\leadsto \frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot \color{blue}{\sqrt[3]{\left(e^{-\left(1 - \varepsilon\right) \cdot x} \cdot e^{-\left(1 - \varepsilon\right) \cdot x}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x}}} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\]
    4. Applied add-cbrt-cube42.5

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

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

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

Reproduce

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