Average Error: 29.3 → 1.0
Time: 7.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 2.8344871195921435:\\ \;\;\;\;\frac{\frac{\sqrt{\left(2.666666666666667 \cdot {x}^{3} + 4\right) - 1 \cdot {x}^{4}}}{\frac{{x}^{2} \cdot \left(0.66666666666666674 \cdot x + 1\right) + 2}{\sqrt{\left(2.666666666666667 \cdot {x}^{3} + 4\right) - 1 \cdot {x}^{4}}}}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{1 \cdot \left(\frac{e^{x \cdot \varepsilon - 1 \cdot x}}{\varepsilon} + e^{x \cdot \varepsilon - 1 \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 2.8344871195921435:\\
\;\;\;\;\frac{\frac{\sqrt{\left(2.666666666666667 \cdot {x}^{3} + 4\right) - 1 \cdot {x}^{4}}}{\frac{{x}^{2} \cdot \left(0.66666666666666674 \cdot x + 1\right) + 2}{\sqrt{\left(2.666666666666667 \cdot {x}^{3} + 4\right) - 1 \cdot {x}^{4}}}}}{2}\\

\mathbf{else}:\\
\;\;\;\;\frac{1 \cdot \left(\frac{e^{x \cdot \varepsilon - 1 \cdot x}}{\varepsilon} + e^{x \cdot \varepsilon - 1 \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 r40579 = 1.0;
        double r40580 = eps;
        double r40581 = r40579 / r40580;
        double r40582 = r40579 + r40581;
        double r40583 = r40579 - r40580;
        double r40584 = x;
        double r40585 = r40583 * r40584;
        double r40586 = -r40585;
        double r40587 = exp(r40586);
        double r40588 = r40582 * r40587;
        double r40589 = r40581 - r40579;
        double r40590 = r40579 + r40580;
        double r40591 = r40590 * r40584;
        double r40592 = -r40591;
        double r40593 = exp(r40592);
        double r40594 = r40589 * r40593;
        double r40595 = r40588 - r40594;
        double r40596 = 2.0;
        double r40597 = r40595 / r40596;
        return r40597;
}

double f(double x, double eps) {
        double r40598 = x;
        double r40599 = 2.8344871195921435;
        bool r40600 = r40598 <= r40599;
        double r40601 = 2.666666666666667;
        double r40602 = 3.0;
        double r40603 = pow(r40598, r40602);
        double r40604 = r40601 * r40603;
        double r40605 = 4.0;
        double r40606 = r40604 + r40605;
        double r40607 = 1.0;
        double r40608 = 4.0;
        double r40609 = pow(r40598, r40608);
        double r40610 = r40607 * r40609;
        double r40611 = r40606 - r40610;
        double r40612 = sqrt(r40611);
        double r40613 = 2.0;
        double r40614 = pow(r40598, r40613);
        double r40615 = 0.6666666666666667;
        double r40616 = r40615 * r40598;
        double r40617 = r40616 + r40607;
        double r40618 = r40614 * r40617;
        double r40619 = 2.0;
        double r40620 = r40618 + r40619;
        double r40621 = r40620 / r40612;
        double r40622 = r40612 / r40621;
        double r40623 = r40622 / r40619;
        double r40624 = eps;
        double r40625 = r40598 * r40624;
        double r40626 = r40607 * r40598;
        double r40627 = r40625 - r40626;
        double r40628 = exp(r40627);
        double r40629 = r40628 / r40624;
        double r40630 = r40629 + r40628;
        double r40631 = r40607 * r40630;
        double r40632 = r40607 / r40624;
        double r40633 = r40632 - r40607;
        double r40634 = r40607 + r40624;
        double r40635 = r40634 * r40598;
        double r40636 = -r40635;
        double r40637 = exp(r40636);
        double r40638 = r40633 * r40637;
        double r40639 = r40631 - r40638;
        double r40640 = r40639 / r40619;
        double r40641 = r40600 ? r40623 : r40640;
        return r40641;
}

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

    1. Initial program 38.9

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

      \[\leadsto \frac{\color{blue}{\left(0.66666666666666674 \cdot {x}^{3} + 2\right) - 1 \cdot {x}^{2}}}{2}\]
    3. Using strategy rm
    4. Applied flip--1.1

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

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

      \[\leadsto \frac{\frac{\left(-1 \cdot 1\right) \cdot {x}^{4} + \left(0.66666666666666674 \cdot {x}^{3} + 2\right) \cdot \left(0.66666666666666674 \cdot {x}^{3} + 2\right)}{\color{blue}{{x}^{2} \cdot \left(0.66666666666666674 \cdot x + 1\right) + 2}}}{2}\]
    7. Taylor expanded around 0 1.1

      \[\leadsto \frac{\frac{\color{blue}{\left(2.666666666666667 \cdot {x}^{3} + 4\right) - 1 \cdot {x}^{4}}}{{x}^{2} \cdot \left(0.66666666666666674 \cdot x + 1\right) + 2}}{2}\]
    8. Using strategy rm
    9. Applied add-sqr-sqrt1.1

      \[\leadsto \frac{\frac{\color{blue}{\sqrt{\left(2.666666666666667 \cdot {x}^{3} + 4\right) - 1 \cdot {x}^{4}} \cdot \sqrt{\left(2.666666666666667 \cdot {x}^{3} + 4\right) - 1 \cdot {x}^{4}}}}{{x}^{2} \cdot \left(0.66666666666666674 \cdot x + 1\right) + 2}}{2}\]
    10. Applied associate-/l*1.1

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

    if 2.8344871195921435 < 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. Taylor expanded around inf 0.5

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

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

Reproduce

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