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

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

\end{array}
double f(double x, double eps) {
        double r28553 = 1.0;
        double r28554 = eps;
        double r28555 = r28553 / r28554;
        double r28556 = r28553 + r28555;
        double r28557 = r28553 - r28554;
        double r28558 = x;
        double r28559 = r28557 * r28558;
        double r28560 = -r28559;
        double r28561 = exp(r28560);
        double r28562 = r28556 * r28561;
        double r28563 = r28555 - r28553;
        double r28564 = r28553 + r28554;
        double r28565 = r28564 * r28558;
        double r28566 = -r28565;
        double r28567 = exp(r28566);
        double r28568 = r28563 * r28567;
        double r28569 = r28562 - r28568;
        double r28570 = 2.0;
        double r28571 = r28569 / r28570;
        return r28571;
}

double f(double x, double eps) {
        double r28572 = x;
        double r28573 = 130.4040333957902;
        bool r28574 = r28572 <= r28573;
        double r28575 = 0.6666666666666667;
        double r28576 = 3.0;
        double r28577 = pow(r28572, r28576);
        double r28578 = r28575 * r28577;
        double r28579 = 2.0;
        double r28580 = r28578 + r28579;
        double r28581 = 1.0;
        double r28582 = 2.0;
        double r28583 = pow(r28572, r28582);
        double r28584 = r28581 * r28583;
        double r28585 = r28580 - r28584;
        double r28586 = r28585 / r28579;
        double r28587 = eps;
        double r28588 = r28572 * r28587;
        double r28589 = r28581 * r28572;
        double r28590 = r28588 + r28589;
        double r28591 = -r28590;
        double r28592 = exp(r28591);
        double r28593 = r28588 - r28589;
        double r28594 = exp(r28593);
        double r28595 = r28592 + r28594;
        double r28596 = r28592 / r28587;
        double r28597 = r28595 - r28596;
        double r28598 = r28581 * r28597;
        double r28599 = r28594 / r28587;
        double r28600 = r28581 * r28599;
        double r28601 = r28598 + r28600;
        double r28602 = r28601 / r28579;
        double r28603 = r28574 ? r28586 : r28602;
        return r28603;
}

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

    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.4

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

    if 130.4040333957902 < 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.2

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

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

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

Reproduce

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