Average Error: 29.6 → 1.7
Time: 14.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 \frac{168386002929493}{19807040628566084398385987584}:\\ \;\;\;\;1 + \left({x}^{2} \cdot \left(\left({\left(\sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)}^{4} \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right) \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)\right) \cdot \sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}}}{2} - \frac{\frac{\frac{1}{\varepsilon}}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}\right) + \frac{\frac{1}{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 \frac{168386002929493}{19807040628566084398385987584}:\\
\;\;\;\;1 + \left({x}^{2} \cdot \left(\left({\left(\sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)}^{4} \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right) \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)\right) \cdot \sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}\\

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

\end{array}
double f(double x, double eps) {
        double r41465 = 1.0;
        double r41466 = eps;
        double r41467 = r41465 / r41466;
        double r41468 = r41465 + r41467;
        double r41469 = r41465 - r41466;
        double r41470 = x;
        double r41471 = r41469 * r41470;
        double r41472 = -r41471;
        double r41473 = exp(r41472);
        double r41474 = r41468 * r41473;
        double r41475 = r41467 - r41465;
        double r41476 = r41465 + r41466;
        double r41477 = r41476 * r41470;
        double r41478 = -r41477;
        double r41479 = exp(r41478);
        double r41480 = r41475 * r41479;
        double r41481 = r41474 - r41480;
        double r41482 = 2.0;
        double r41483 = r41481 / r41482;
        return r41483;
}

double f(double x, double eps) {
        double r41484 = x;
        double r41485 = 168386002929493.0;
        double r41486 = 1.9807040628566084e+28;
        double r41487 = r41485 / r41486;
        bool r41488 = r41484 <= r41487;
        double r41489 = 1.0;
        double r41490 = 2.0;
        double r41491 = pow(r41484, r41490);
        double r41492 = 3002399751580331.0;
        double r41493 = 9007199254740992.0;
        double r41494 = r41492 / r41493;
        double r41495 = r41484 * r41494;
        double r41496 = 2.0;
        double r41497 = r41489 / r41496;
        double r41498 = r41495 - r41497;
        double r41499 = cbrt(r41498);
        double r41500 = cbrt(r41499);
        double r41501 = 4.0;
        double r41502 = pow(r41500, r41501);
        double r41503 = r41502 * r41500;
        double r41504 = r41503 * r41500;
        double r41505 = r41491 * r41504;
        double r41506 = r41505 * r41499;
        double r41507 = r41489 + r41506;
        double r41508 = eps;
        double r41509 = r41489 / r41508;
        double r41510 = r41489 + r41509;
        double r41511 = r41489 - r41508;
        double r41512 = r41511 * r41484;
        double r41513 = exp(r41512);
        double r41514 = r41510 / r41513;
        double r41515 = r41514 / r41496;
        double r41516 = r41489 + r41508;
        double r41517 = r41516 * r41484;
        double r41518 = exp(r41517);
        double r41519 = r41509 / r41518;
        double r41520 = r41519 / r41496;
        double r41521 = r41515 - r41520;
        double r41522 = r41489 / r41518;
        double r41523 = r41522 / r41496;
        double r41524 = r41521 + r41523;
        double r41525 = r41488 ? r41507 : r41524;
        return r41525;
}

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 < 8.501320620640499e-15

    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. Simplified38.9

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

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

      \[\leadsto \color{blue}{1 + {x}^{2} \cdot \left(x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}\right)}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt1.1

      \[\leadsto 1 + {x}^{2} \cdot \color{blue}{\left(\left(\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}} \cdot \sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}\right) \cdot \sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}\right)}\]
    7. Applied associate-*r*1.1

      \[\leadsto 1 + \color{blue}{\left({x}^{2} \cdot \left(\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}} \cdot \sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}\right)\right) \cdot \sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\]
    8. Using strategy rm
    9. Applied add-cube-cbrt1.1

      \[\leadsto 1 + \left({x}^{2} \cdot \left(\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}} \cdot \color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}} \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right) \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)}\right)\right) \cdot \sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}\]
    10. Applied associate-*r*1.1

      \[\leadsto 1 + \left({x}^{2} \cdot \color{blue}{\left(\left(\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}} \cdot \left(\sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}} \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)\right) \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)}\right) \cdot \sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}\]
    11. Simplified1.1

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

    if 8.501320620640499e-15 < x

    1. Initial program 3.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. Simplified3.7

      \[\leadsto \color{blue}{\frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}}}{2} - \frac{\frac{\frac{1}{\varepsilon} - 1}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}}\]
    3. Using strategy rm
    4. Applied div-sub3.7

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

      \[\leadsto \frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}}}{2} - \color{blue}{\left(\frac{\frac{\frac{1}{\varepsilon}}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2} - \frac{\frac{1}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}\right)}\]
    6. Applied associate--r-3.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le \frac{168386002929493}{19807040628566084398385987584}:\\ \;\;\;\;1 + \left({x}^{2} \cdot \left(\left({\left(\sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)}^{4} \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right) \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)\right) \cdot \sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}}}{2} - \frac{\frac{\frac{1}{\varepsilon}}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}\right) + \frac{\frac{1}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}\\ \end{array}\]

Reproduce

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