Average Error: 29.6 → 4.4
Time: 7.7s
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 1.01694687585674414798120324121555313468:\\ \;\;\;\;\mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{\left(\sqrt[3]{x} \cdot \left(2 \cdot \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right) + \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right)\right)\right)}^{3}}{\frac{\varepsilon}{x}}, 1 - 0.5 \cdot {x}^{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{-\left(1 + \varepsilon\right) \cdot x}}{2}, 1 - \frac{1}{\varepsilon}, \frac{1 + \frac{1}{\varepsilon}}{2 \cdot \left(\left(\sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot x}} \cdot \sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot x}}\right) \cdot \sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot x}}\right)}\right)\\ \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 1.01694687585674414798120324121555313468:\\
\;\;\;\;\mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{\left(\sqrt[3]{x} \cdot \left(2 \cdot \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right) + \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right)\right)\right)}^{3}}{\frac{\varepsilon}{x}}, 1 - 0.5 \cdot {x}^{2}\right)\\

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

\end{array}
double f(double x, double eps) {
        double r51300 = 1.0;
        double r51301 = eps;
        double r51302 = r51300 / r51301;
        double r51303 = r51300 + r51302;
        double r51304 = r51300 - r51301;
        double r51305 = x;
        double r51306 = r51304 * r51305;
        double r51307 = -r51306;
        double r51308 = exp(r51307);
        double r51309 = r51303 * r51308;
        double r51310 = r51302 - r51300;
        double r51311 = r51300 + r51301;
        double r51312 = r51311 * r51305;
        double r51313 = -r51312;
        double r51314 = exp(r51313);
        double r51315 = r51310 * r51314;
        double r51316 = r51309 - r51315;
        double r51317 = 2.0;
        double r51318 = r51316 / r51317;
        return r51318;
}

double f(double x, double eps) {
        double r51319 = x;
        double r51320 = 1.0169468758567441;
        bool r51321 = r51319 <= r51320;
        double r51322 = 1.3877787807814457e-17;
        double r51323 = cbrt(r51319);
        double r51324 = 2.0;
        double r51325 = exp(r51323);
        double r51326 = cbrt(r51325);
        double r51327 = log(r51326);
        double r51328 = r51324 * r51327;
        double r51329 = r51328 + r51327;
        double r51330 = r51323 * r51329;
        double r51331 = 3.0;
        double r51332 = pow(r51330, r51331);
        double r51333 = eps;
        double r51334 = r51333 / r51319;
        double r51335 = r51332 / r51334;
        double r51336 = 1.0;
        double r51337 = 0.5;
        double r51338 = pow(r51319, r51324);
        double r51339 = r51337 * r51338;
        double r51340 = r51336 - r51339;
        double r51341 = fma(r51322, r51335, r51340);
        double r51342 = r51336 + r51333;
        double r51343 = r51342 * r51319;
        double r51344 = -r51343;
        double r51345 = exp(r51344);
        double r51346 = 2.0;
        double r51347 = r51345 / r51346;
        double r51348 = r51336 / r51333;
        double r51349 = r51336 - r51348;
        double r51350 = r51336 + r51348;
        double r51351 = r51336 - r51333;
        double r51352 = r51351 * r51319;
        double r51353 = exp(r51352);
        double r51354 = cbrt(r51353);
        double r51355 = r51354 * r51354;
        double r51356 = r51355 * r51354;
        double r51357 = r51346 * r51356;
        double r51358 = r51350 / r51357;
        double r51359 = fma(r51347, r51349, r51358);
        double r51360 = r51321 ? r51341 : r51359;
        return r51360;
}

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Split input into 2 regimes
  2. if x < 1.0169468758567441

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

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

      \[\leadsto \color{blue}{\left(1.387778780781445675529539585113525390625 \cdot 10^{-17} \cdot \frac{{x}^{3}}{\varepsilon} + 1\right) - 0.5 \cdot {x}^{2}}\]
    4. Simplified7.1

      \[\leadsto \color{blue}{\mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{x}^{3}}{\varepsilon}, 1 - 0.5 \cdot {x}^{2}\right)}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt7.1

      \[\leadsto \mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{\color{blue}{\left(\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}\right)}}^{3}}{\varepsilon}, 1 - 0.5 \cdot {x}^{2}\right)\]
    7. Applied unpow-prod-down7.1

      \[\leadsto \mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{\color{blue}{{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)}^{3} \cdot {\left(\sqrt[3]{x}\right)}^{3}}}{\varepsilon}, 1 - 0.5 \cdot {x}^{2}\right)\]
    8. Applied associate-/l*7.1

      \[\leadsto \mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \color{blue}{\frac{{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)}^{3}}{\frac{\varepsilon}{{\left(\sqrt[3]{x}\right)}^{3}}}}, 1 - 0.5 \cdot {x}^{2}\right)\]
    9. Simplified7.1

      \[\leadsto \mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)}^{3}}{\color{blue}{\frac{\varepsilon}{x}}}, 1 - 0.5 \cdot {x}^{2}\right)\]
    10. Using strategy rm
    11. Applied add-log-exp5.7

      \[\leadsto \mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{\left(\sqrt[3]{x} \cdot \color{blue}{\log \left(e^{\sqrt[3]{x}}\right)}\right)}^{3}}{\frac{\varepsilon}{x}}, 1 - 0.5 \cdot {x}^{2}\right)\]
    12. Using strategy rm
    13. Applied add-cube-cbrt5.6

      \[\leadsto \mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{\left(\sqrt[3]{x} \cdot \log \color{blue}{\left(\left(\sqrt[3]{e^{\sqrt[3]{x}}} \cdot \sqrt[3]{e^{\sqrt[3]{x}}}\right) \cdot \sqrt[3]{e^{\sqrt[3]{x}}}\right)}\right)}^{3}}{\frac{\varepsilon}{x}}, 1 - 0.5 \cdot {x}^{2}\right)\]
    14. Applied log-prod5.6

      \[\leadsto \mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{\left(\sqrt[3]{x} \cdot \color{blue}{\left(\log \left(\sqrt[3]{e^{\sqrt[3]{x}}} \cdot \sqrt[3]{e^{\sqrt[3]{x}}}\right) + \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right)\right)}\right)}^{3}}{\frac{\varepsilon}{x}}, 1 - 0.5 \cdot {x}^{2}\right)\]
    15. Simplified5.6

      \[\leadsto \mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{\left(\sqrt[3]{x} \cdot \left(\color{blue}{2 \cdot \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right)} + \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right)\right)\right)}^{3}}{\frac{\varepsilon}{x}}, 1 - 0.5 \cdot {x}^{2}\right)\]

    if 1.0169468758567441 < x

    1. Initial program 0.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. Simplified0.7

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{e^{-\left(1 + \varepsilon\right) \cdot x}}{2}, 1 - \frac{1}{\varepsilon}, \frac{1 + \frac{1}{\varepsilon}}{2 \cdot e^{\left(1 - \varepsilon\right) \cdot x}}\right)}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt0.7

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 1.01694687585674414798120324121555313468:\\ \;\;\;\;\mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{\left(\sqrt[3]{x} \cdot \left(2 \cdot \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right) + \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right)\right)\right)}^{3}}{\frac{\varepsilon}{x}}, 1 - 0.5 \cdot {x}^{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{-\left(1 + \varepsilon\right) \cdot x}}{2}, 1 - \frac{1}{\varepsilon}, \frac{1 + \frac{1}{\varepsilon}}{2 \cdot \left(\left(\sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot x}} \cdot \sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot x}}\right) \cdot \sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot x}}\right)}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020002 +o rules:numerics
(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))