Average Error: 29.4 → 0.9
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 299.64739672789676:\\ \;\;\;\;1 + \left({x}^{2} \cdot \left(\left(\sqrt{{\left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)}^{4}} \cdot \sqrt{{\left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)}^{4}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}} \cdot \sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)\right)\right) \cdot \sqrt[3]{x \cdot 0.33333333333333337 - 0.5}\\ \mathbf{else}:\\ \;\;\;\;e^{\log \left(\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}\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 299.64739672789676:\\
\;\;\;\;1 + \left({x}^{2} \cdot \left(\left(\sqrt{{\left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)}^{4}} \cdot \sqrt{{\left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)}^{4}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}} \cdot \sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)\right)\right) \cdot \sqrt[3]{x \cdot 0.33333333333333337 - 0.5}\\

\mathbf{else}:\\
\;\;\;\;e^{\log \left(\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}\right)}\\

\end{array}
double f(double x, double eps) {
        double r40232 = 1.0;
        double r40233 = eps;
        double r40234 = r40232 / r40233;
        double r40235 = r40232 + r40234;
        double r40236 = r40232 - r40233;
        double r40237 = x;
        double r40238 = r40236 * r40237;
        double r40239 = -r40238;
        double r40240 = exp(r40239);
        double r40241 = r40235 * r40240;
        double r40242 = r40234 - r40232;
        double r40243 = r40232 + r40233;
        double r40244 = r40243 * r40237;
        double r40245 = -r40244;
        double r40246 = exp(r40245);
        double r40247 = r40242 * r40246;
        double r40248 = r40241 - r40247;
        double r40249 = 2.0;
        double r40250 = r40248 / r40249;
        return r40250;
}

double f(double x, double eps) {
        double r40251 = x;
        double r40252 = 299.64739672789676;
        bool r40253 = r40251 <= r40252;
        double r40254 = 1.0;
        double r40255 = 2.0;
        double r40256 = pow(r40251, r40255);
        double r40257 = 0.33333333333333337;
        double r40258 = r40251 * r40257;
        double r40259 = 0.5;
        double r40260 = r40258 - r40259;
        double r40261 = cbrt(r40260);
        double r40262 = cbrt(r40261);
        double r40263 = 4.0;
        double r40264 = pow(r40262, r40263);
        double r40265 = sqrt(r40264);
        double r40266 = r40265 * r40265;
        double r40267 = r40262 * r40262;
        double r40268 = r40266 * r40267;
        double r40269 = r40256 * r40268;
        double r40270 = r40269 * r40261;
        double r40271 = r40254 + r40270;
        double r40272 = eps;
        double r40273 = r40254 / r40272;
        double r40274 = r40254 + r40273;
        double r40275 = r40254 - r40272;
        double r40276 = r40275 * r40251;
        double r40277 = exp(r40276);
        double r40278 = r40274 / r40277;
        double r40279 = 2.0;
        double r40280 = r40278 / r40279;
        double r40281 = r40273 - r40254;
        double r40282 = r40254 + r40272;
        double r40283 = r40282 * r40251;
        double r40284 = exp(r40283);
        double r40285 = r40281 / r40284;
        double r40286 = r40285 / r40279;
        double r40287 = r40280 - r40286;
        double r40288 = log(r40287);
        double r40289 = exp(r40288);
        double r40290 = r40253 ? r40271 : r40289;
        return r40290;
}

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

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

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

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

      \[\leadsto 1 + {x}^{2} \cdot \color{blue}{\left(\left(\sqrt[3]{x \cdot 0.33333333333333337 - 0.5} \cdot \sqrt[3]{x \cdot 0.33333333333333337 - 0.5}\right) \cdot \sqrt[3]{x \cdot 0.33333333333333337 - 0.5}\right)}\]
    7. Applied associate-*r*1.2

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

      \[\leadsto 1 + \left({x}^{2} \cdot \left(\sqrt[3]{x \cdot 0.33333333333333337 - 0.5} \cdot \color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}} \cdot \sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right) \cdot \sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)}\right)\right) \cdot \sqrt[3]{x \cdot 0.33333333333333337 - 0.5}\]
    10. Applied add-cube-cbrt1.2

      \[\leadsto 1 + \left({x}^{2} \cdot \left(\color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}} \cdot \sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right) \cdot \sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)} \cdot \left(\left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}} \cdot \sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right) \cdot \sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)\right)\right) \cdot \sqrt[3]{x \cdot 0.33333333333333337 - 0.5}\]
    11. Applied swap-sqr1.2

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

      \[\leadsto 1 + \left({x}^{2} \cdot \left(\color{blue}{{\left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)}^{4}} \cdot \left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}} \cdot \sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)\right)\right) \cdot \sqrt[3]{x \cdot 0.33333333333333337 - 0.5}\]
    13. Using strategy rm
    14. Applied add-sqr-sqrt1.2

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

    if 299.64739672789676 < x

    1. Initial program 0.1

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

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

      \[\leadsto \color{blue}{e^{\log \left(\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}\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 299.64739672789676:\\ \;\;\;\;1 + \left({x}^{2} \cdot \left(\left(\sqrt{{\left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)}^{4}} \cdot \sqrt{{\left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)}^{4}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}} \cdot \sqrt[3]{\sqrt[3]{x \cdot 0.33333333333333337 - 0.5}}\right)\right)\right) \cdot \sqrt[3]{x \cdot 0.33333333333333337 - 0.5}\\ \mathbf{else}:\\ \;\;\;\;e^{\log \left(\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}\right)}\\ \end{array}\]

Reproduce

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