Average Error: 29.0 → 1.0
Time: 19.8s
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 83.34029148131637043661612551659345626831:\\ \;\;\;\;\frac{e^{\log \left(2 + \left({x}^{3} \cdot 0.6666666666666667406815349750104360282421 - 1 \cdot \left(x \cdot x\right)\right)\right)}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\frac{1}{\varepsilon} + 1\right) \cdot e^{x \cdot \left(\varepsilon - 1\right)} - e^{\left(-\left(1 + \varepsilon\right)\right) \cdot x} \cdot \left(\frac{1}{\varepsilon} - 1\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 83.34029148131637043661612551659345626831:\\
\;\;\;\;\frac{e^{\log \left(2 + \left({x}^{3} \cdot 0.6666666666666667406815349750104360282421 - 1 \cdot \left(x \cdot x\right)\right)\right)}}{2}\\

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

\end{array}
double f(double x, double eps) {
        double r35582 = 1.0;
        double r35583 = eps;
        double r35584 = r35582 / r35583;
        double r35585 = r35582 + r35584;
        double r35586 = r35582 - r35583;
        double r35587 = x;
        double r35588 = r35586 * r35587;
        double r35589 = -r35588;
        double r35590 = exp(r35589);
        double r35591 = r35585 * r35590;
        double r35592 = r35584 - r35582;
        double r35593 = r35582 + r35583;
        double r35594 = r35593 * r35587;
        double r35595 = -r35594;
        double r35596 = exp(r35595);
        double r35597 = r35592 * r35596;
        double r35598 = r35591 - r35597;
        double r35599 = 2.0;
        double r35600 = r35598 / r35599;
        return r35600;
}

double f(double x, double eps) {
        double r35601 = x;
        double r35602 = 83.34029148131637;
        bool r35603 = r35601 <= r35602;
        double r35604 = 2.0;
        double r35605 = 3.0;
        double r35606 = pow(r35601, r35605);
        double r35607 = 0.6666666666666667;
        double r35608 = r35606 * r35607;
        double r35609 = 1.0;
        double r35610 = r35601 * r35601;
        double r35611 = r35609 * r35610;
        double r35612 = r35608 - r35611;
        double r35613 = r35604 + r35612;
        double r35614 = log(r35613);
        double r35615 = exp(r35614);
        double r35616 = r35615 / r35604;
        double r35617 = eps;
        double r35618 = r35609 / r35617;
        double r35619 = r35618 + r35609;
        double r35620 = r35617 - r35609;
        double r35621 = r35601 * r35620;
        double r35622 = exp(r35621);
        double r35623 = r35619 * r35622;
        double r35624 = r35609 + r35617;
        double r35625 = -r35624;
        double r35626 = r35625 * r35601;
        double r35627 = exp(r35626);
        double r35628 = r35618 - r35609;
        double r35629 = r35627 * r35628;
        double r35630 = r35623 - r35629;
        double r35631 = r35630 / r35604;
        double r35632 = r35603 ? r35616 : r35631;
        return r35632;
}

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

    1. Initial program 38.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.6666666666666667406815349750104360282421 \cdot {x}^{3} + 2\right) - 1 \cdot {x}^{2}}}{2}\]
    3. Simplified1.3

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

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

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

    if 83.34029148131637 < 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{\left(1 + \frac{1}{\varepsilon}\right) \cdot \color{blue}{e^{x \cdot \varepsilon - 1 \cdot x}} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\]
    3. Simplified0.2

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

Reproduce

herbie shell --seed 2019174 
(FPCore (x eps)
  :name "NMSE Section 6.1 mentioned, A"
  (/ (- (* (+ 1.0 (/ 1.0 eps)) (exp (- (* (- 1.0 eps) x)))) (* (- (/ 1.0 eps) 1.0) (exp (- (* (+ 1.0 eps) x))))) 2.0))