Average Error: 29.6 → 9.9
Time: 4.2s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \cdot x \le -3.823250776763988242543113038607316411799 \cdot 10^{-4}:\\ \;\;\;\;\left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)}\right) \cdot \log \left(e^{\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, {a}^{2} \cdot {x}^{2}, \mathsf{fma}\left(\frac{1}{6}, {a}^{3} \cdot {x}^{3}, a \cdot x\right)\right)\\ \end{array}\]
e^{a \cdot x} - 1
\begin{array}{l}
\mathbf{if}\;a \cdot x \le -3.823250776763988242543113038607316411799 \cdot 10^{-4}:\\
\;\;\;\;\left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)}\right) \cdot \log \left(e^{\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)}}\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{2}, {a}^{2} \cdot {x}^{2}, \mathsf{fma}\left(\frac{1}{6}, {a}^{3} \cdot {x}^{3}, a \cdot x\right)\right)\\

\end{array}
double f(double a, double x) {
        double r101395 = a;
        double r101396 = x;
        double r101397 = r101395 * r101396;
        double r101398 = exp(r101397);
        double r101399 = 1.0;
        double r101400 = r101398 - r101399;
        return r101400;
}

double f(double a, double x) {
        double r101401 = a;
        double r101402 = x;
        double r101403 = r101401 * r101402;
        double r101404 = -0.0003823250776763988;
        bool r101405 = r101403 <= r101404;
        double r101406 = exp(r101403);
        double r101407 = 1.0;
        double r101408 = r101406 - r101407;
        double r101409 = cbrt(r101408);
        double r101410 = exp(r101408);
        double r101411 = log(r101410);
        double r101412 = cbrt(r101411);
        double r101413 = r101409 * r101412;
        double r101414 = exp(r101412);
        double r101415 = log(r101414);
        double r101416 = r101413 * r101415;
        double r101417 = 0.5;
        double r101418 = 2.0;
        double r101419 = pow(r101401, r101418);
        double r101420 = pow(r101402, r101418);
        double r101421 = r101419 * r101420;
        double r101422 = 0.16666666666666666;
        double r101423 = 3.0;
        double r101424 = pow(r101401, r101423);
        double r101425 = pow(r101402, r101423);
        double r101426 = r101424 * r101425;
        double r101427 = fma(r101422, r101426, r101403);
        double r101428 = fma(r101417, r101421, r101427);
        double r101429 = r101405 ? r101416 : r101428;
        return r101429;
}

Error

Bits error versus a

Bits error versus x

Target

Original29.6
Target0.2
Herbie9.9
\[\begin{array}{l} \mathbf{if}\;\left|a \cdot x\right| \lt 0.1000000000000000055511151231257827021182:\\ \;\;\;\;\left(a \cdot x\right) \cdot \left(1 + \left(\frac{a \cdot x}{2} + \frac{{\left(a \cdot x\right)}^{2}}{6}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;e^{a \cdot x} - 1\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if (* a x) < -0.0003823250776763988

    1. Initial program 0.0

      \[e^{a \cdot x} - 1\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.1

      \[\leadsto \color{blue}{\left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}}\]
    4. Using strategy rm
    5. Applied add-log-exp0.1

      \[\leadsto \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \color{blue}{\log \left(e^{\sqrt[3]{e^{a \cdot x} - 1}}\right)}\]
    6. Using strategy rm
    7. Applied add-log-exp0.1

      \[\leadsto \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \log \left(e^{\sqrt[3]{e^{a \cdot x} - \color{blue}{\log \left(e^{1}\right)}}}\right)\]
    8. Applied add-log-exp0.1

      \[\leadsto \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \log \left(e^{\sqrt[3]{\color{blue}{\log \left(e^{e^{a \cdot x}}\right)} - \log \left(e^{1}\right)}}\right)\]
    9. Applied diff-log0.1

      \[\leadsto \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \log \left(e^{\sqrt[3]{\color{blue}{\log \left(\frac{e^{e^{a \cdot x}}}{e^{1}}\right)}}}\right)\]
    10. Simplified0.1

      \[\leadsto \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \log \left(e^{\sqrt[3]{\log \color{blue}{\left(e^{e^{a \cdot x} - 1}\right)}}}\right)\]
    11. Using strategy rm
    12. Applied add-log-exp0.1

      \[\leadsto \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{e^{a \cdot x} - \color{blue}{\log \left(e^{1}\right)}}\right) \cdot \log \left(e^{\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)}}\right)\]
    13. Applied add-log-exp0.1

      \[\leadsto \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{\color{blue}{\log \left(e^{e^{a \cdot x}}\right)} - \log \left(e^{1}\right)}\right) \cdot \log \left(e^{\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)}}\right)\]
    14. Applied diff-log0.1

      \[\leadsto \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{\color{blue}{\log \left(\frac{e^{e^{a \cdot x}}}{e^{1}}\right)}}\right) \cdot \log \left(e^{\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)}}\right)\]
    15. Simplified0.1

      \[\leadsto \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{\log \color{blue}{\left(e^{e^{a \cdot x} - 1}\right)}}\right) \cdot \log \left(e^{\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)}}\right)\]

    if -0.0003823250776763988 < (* a x)

    1. Initial program 44.1

      \[e^{a \cdot x} - 1\]
    2. Taylor expanded around 0 14.7

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left({a}^{2} \cdot {x}^{2}\right) + \left(\frac{1}{6} \cdot \left({a}^{3} \cdot {x}^{3}\right) + a \cdot x\right)}\]
    3. Simplified14.7

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{2}, {a}^{2} \cdot {x}^{2}, \mathsf{fma}\left(\frac{1}{6}, {a}^{3} \cdot {x}^{3}, a \cdot x\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification9.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \cdot x \le -3.823250776763988242543113038607316411799 \cdot 10^{-4}:\\ \;\;\;\;\left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)}\right) \cdot \log \left(e^{\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, {a}^{2} \cdot {x}^{2}, \mathsf{fma}\left(\frac{1}{6}, {a}^{3} \cdot {x}^{3}, a \cdot x\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019362 +o rules:numerics
(FPCore (a x)
  :name "expax (section 3.5)"
  :precision binary64
  :herbie-expected 14

  :herbie-target
  (if (< (fabs (* a x)) 0.1) (* (* a x) (+ 1 (+ (/ (* a x) 2) (/ (pow (* a x) 2) 6)))) (- (exp (* a x)) 1))

  (- (exp (* a x)) 1))