Average Error: 29.2 → 1.1
Time: 20.4s
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 162.5604579277316474872350227087736129761:\\ \;\;\;\;\frac{\mathsf{fma}\left({x}^{3}, 0.6666666666666667406815349750104360282421, 2\right) - 1 \cdot \left(x \cdot x\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\frac{1}{\varepsilon} + 1\right) \cdot e^{\left(1 - \varepsilon\right) \cdot \left(-x\right)} - \sqrt[3]{e^{x \cdot \left(-\left(\varepsilon + 1\right)\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)} \cdot \left(\sqrt[3]{e^{x \cdot \left(-\left(\varepsilon + 1\right)\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)} \cdot \sqrt[3]{e^{x \cdot \left(-\left(\varepsilon + 1\right)\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)}\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 162.5604579277316474872350227087736129761:\\
\;\;\;\;\frac{\mathsf{fma}\left({x}^{3}, 0.6666666666666667406815349750104360282421, 2\right) - 1 \cdot \left(x \cdot x\right)}{2}\\

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

\end{array}
double f(double x, double eps) {
        double r43182 = 1.0;
        double r43183 = eps;
        double r43184 = r43182 / r43183;
        double r43185 = r43182 + r43184;
        double r43186 = r43182 - r43183;
        double r43187 = x;
        double r43188 = r43186 * r43187;
        double r43189 = -r43188;
        double r43190 = exp(r43189);
        double r43191 = r43185 * r43190;
        double r43192 = r43184 - r43182;
        double r43193 = r43182 + r43183;
        double r43194 = r43193 * r43187;
        double r43195 = -r43194;
        double r43196 = exp(r43195);
        double r43197 = r43192 * r43196;
        double r43198 = r43191 - r43197;
        double r43199 = 2.0;
        double r43200 = r43198 / r43199;
        return r43200;
}

double f(double x, double eps) {
        double r43201 = x;
        double r43202 = 162.56045792773165;
        bool r43203 = r43201 <= r43202;
        double r43204 = 3.0;
        double r43205 = pow(r43201, r43204);
        double r43206 = 0.6666666666666667;
        double r43207 = 2.0;
        double r43208 = fma(r43205, r43206, r43207);
        double r43209 = 1.0;
        double r43210 = r43201 * r43201;
        double r43211 = r43209 * r43210;
        double r43212 = r43208 - r43211;
        double r43213 = r43212 / r43207;
        double r43214 = eps;
        double r43215 = r43209 / r43214;
        double r43216 = r43215 + r43209;
        double r43217 = r43209 - r43214;
        double r43218 = -r43201;
        double r43219 = r43217 * r43218;
        double r43220 = exp(r43219);
        double r43221 = r43216 * r43220;
        double r43222 = r43214 + r43209;
        double r43223 = -r43222;
        double r43224 = r43201 * r43223;
        double r43225 = exp(r43224);
        double r43226 = r43215 - r43209;
        double r43227 = r43225 * r43226;
        double r43228 = cbrt(r43227);
        double r43229 = r43228 * r43228;
        double r43230 = r43228 * r43229;
        double r43231 = r43221 - r43230;
        double r43232 = r43231 / r43207;
        double r43233 = r43203 ? r43213 : r43232;
        return r43233;
}

Error

Bits error versus x

Bits error versus eps

Derivation

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

    1. Initial program 39.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. Taylor expanded around 0 1.4

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

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({x}^{3}, 0.6666666666666667406815349750104360282421, 2\right) - \left(x \cdot x\right) \cdot 1}}{2}\]

    if 162.56045792773165 < 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. Using strategy rm
    3. Applied add-cube-cbrt0.1

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

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

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

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

Reproduce

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