Average Error: 28.7 → 1.6
Time: 38.2s
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.47988680957016616383087846686716915201 \cdot 10^{-6}:\\ \;\;\;\;\frac{2 - \left(1 \cdot \left(x \cdot x\right) + \frac{2.77555756156289135105907917022705078125 \cdot 10^{-17}}{\frac{\varepsilon}{\log \left(e^{\left(x \cdot x\right) \cdot x}\right)}}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1 - \frac{1}{\varepsilon}}{e^{x \cdot \left(\varepsilon + 1\right)}} + \left(\frac{1}{\varepsilon} + 1\right) \cdot \sqrt[3]{e^{\left(\varepsilon - 1\right) \cdot x} \cdot \left(e^{\left(\varepsilon - 1\right) \cdot x} \cdot e^{\left(\varepsilon - 1\right) \cdot x}\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 1.47988680957016616383087846686716915201 \cdot 10^{-6}:\\
\;\;\;\;\frac{2 - \left(1 \cdot \left(x \cdot x\right) + \frac{2.77555756156289135105907917022705078125 \cdot 10^{-17}}{\frac{\varepsilon}{\log \left(e^{\left(x \cdot x\right) \cdot x}\right)}}\right)}{2}\\

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

\end{array}
double f(double x, double eps) {
        double r2518187 = 1.0;
        double r2518188 = eps;
        double r2518189 = r2518187 / r2518188;
        double r2518190 = r2518187 + r2518189;
        double r2518191 = r2518187 - r2518188;
        double r2518192 = x;
        double r2518193 = r2518191 * r2518192;
        double r2518194 = -r2518193;
        double r2518195 = exp(r2518194);
        double r2518196 = r2518190 * r2518195;
        double r2518197 = r2518189 - r2518187;
        double r2518198 = r2518187 + r2518188;
        double r2518199 = r2518198 * r2518192;
        double r2518200 = -r2518199;
        double r2518201 = exp(r2518200);
        double r2518202 = r2518197 * r2518201;
        double r2518203 = r2518196 - r2518202;
        double r2518204 = 2.0;
        double r2518205 = r2518203 / r2518204;
        return r2518205;
}

double f(double x, double eps) {
        double r2518206 = x;
        double r2518207 = 1.4798868095701662e-06;
        bool r2518208 = r2518206 <= r2518207;
        double r2518209 = 2.0;
        double r2518210 = 1.0;
        double r2518211 = r2518206 * r2518206;
        double r2518212 = r2518210 * r2518211;
        double r2518213 = 2.7755575615628914e-17;
        double r2518214 = eps;
        double r2518215 = r2518211 * r2518206;
        double r2518216 = exp(r2518215);
        double r2518217 = log(r2518216);
        double r2518218 = r2518214 / r2518217;
        double r2518219 = r2518213 / r2518218;
        double r2518220 = r2518212 + r2518219;
        double r2518221 = r2518209 - r2518220;
        double r2518222 = r2518221 / r2518209;
        double r2518223 = r2518210 / r2518214;
        double r2518224 = r2518210 - r2518223;
        double r2518225 = r2518214 + r2518210;
        double r2518226 = r2518206 * r2518225;
        double r2518227 = exp(r2518226);
        double r2518228 = r2518224 / r2518227;
        double r2518229 = r2518223 + r2518210;
        double r2518230 = r2518214 - r2518210;
        double r2518231 = r2518230 * r2518206;
        double r2518232 = exp(r2518231);
        double r2518233 = r2518232 * r2518232;
        double r2518234 = r2518232 * r2518233;
        double r2518235 = cbrt(r2518234);
        double r2518236 = r2518229 * r2518235;
        double r2518237 = r2518228 + r2518236;
        double r2518238 = r2518237 / r2518209;
        double r2518239 = r2518208 ? r2518222 : r2518238;
        return r2518239;
}

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 < 1.4798868095701662e-06

    1. Initial program 38.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. Simplified38.1

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

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

      \[\leadsto \frac{\color{blue}{2 - \left(1 \cdot \left(x \cdot x\right) + \frac{2.77555756156289135105907917022705078125 \cdot 10^{-17}}{\frac{\varepsilon}{\left(x \cdot x\right) \cdot x}}\right)}}{2}\]
    5. Using strategy rm
    6. Applied add-log-exp1.6

      \[\leadsto \frac{2 - \left(1 \cdot \left(x \cdot x\right) + \frac{2.77555756156289135105907917022705078125 \cdot 10^{-17}}{\frac{\varepsilon}{\color{blue}{\log \left(e^{\left(x \cdot x\right) \cdot x}\right)}}}\right)}{2}\]

    if 1.4798868095701662e-06 < x

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 1.47988680957016616383087846686716915201 \cdot 10^{-6}:\\ \;\;\;\;\frac{2 - \left(1 \cdot \left(x \cdot x\right) + \frac{2.77555756156289135105907917022705078125 \cdot 10^{-17}}{\frac{\varepsilon}{\log \left(e^{\left(x \cdot x\right) \cdot x}\right)}}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1 - \frac{1}{\varepsilon}}{e^{x \cdot \left(\varepsilon + 1\right)}} + \left(\frac{1}{\varepsilon} + 1\right) \cdot \sqrt[3]{e^{\left(\varepsilon - 1\right) \cdot x} \cdot \left(e^{\left(\varepsilon - 1\right) \cdot x} \cdot e^{\left(\varepsilon - 1\right) \cdot x}\right)}}{2}\\ \end{array}\]

Reproduce

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