Average Error: 29.8 → 8.9
Time: 4.0s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \cdot x \le -7.7613608644350317 \cdot 10^{-23}:\\ \;\;\;\;\sqrt[3]{\left(\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}} - 1\right) \cdot {\left(\left(\sqrt{1} + \sqrt{e^{a \cdot x}}\right) \cdot \left(\sqrt{e^{a \cdot x}} - \sqrt{1}\right)\right)}^{2}}\\ \mathbf{elif}\;a \cdot x \le 4.00137271357986445 \cdot 10^{-17}:\\ \;\;\;\;\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)\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\mathsf{fma}\left(\sqrt[3]{\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}} \cdot \sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}}}, \sqrt[3]{\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}}}, -1\right) \cdot {\left(e^{a \cdot x} - 1\right)}^{2}}\\ \end{array}\]
e^{a \cdot x} - 1
\begin{array}{l}
\mathbf{if}\;a \cdot x \le -7.7613608644350317 \cdot 10^{-23}:\\
\;\;\;\;\sqrt[3]{\left(\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}} - 1\right) \cdot {\left(\left(\sqrt{1} + \sqrt{e^{a \cdot x}}\right) \cdot \left(\sqrt{e^{a \cdot x}} - \sqrt{1}\right)\right)}^{2}}\\

\mathbf{elif}\;a \cdot x \le 4.00137271357986445 \cdot 10^{-17}:\\
\;\;\;\;\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)\\

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

\end{array}
double f(double a, double x) {
        double r95513 = a;
        double r95514 = x;
        double r95515 = r95513 * r95514;
        double r95516 = exp(r95515);
        double r95517 = 1.0;
        double r95518 = r95516 - r95517;
        return r95518;
}

double f(double a, double x) {
        double r95519 = a;
        double r95520 = x;
        double r95521 = r95519 * r95520;
        double r95522 = -7.761360864435032e-23;
        bool r95523 = r95521 <= r95522;
        double r95524 = exp(r95521);
        double r95525 = 3.0;
        double r95526 = pow(r95524, r95525);
        double r95527 = cbrt(r95526);
        double r95528 = 1.0;
        double r95529 = r95527 - r95528;
        double r95530 = sqrt(r95528);
        double r95531 = sqrt(r95524);
        double r95532 = r95530 + r95531;
        double r95533 = r95531 - r95530;
        double r95534 = r95532 * r95533;
        double r95535 = 2.0;
        double r95536 = pow(r95534, r95535);
        double r95537 = r95529 * r95536;
        double r95538 = cbrt(r95537);
        double r95539 = 4.0013727135798645e-17;
        bool r95540 = r95521 <= r95539;
        double r95541 = 0.5;
        double r95542 = pow(r95519, r95535);
        double r95543 = pow(r95520, r95535);
        double r95544 = r95542 * r95543;
        double r95545 = 0.16666666666666666;
        double r95546 = pow(r95519, r95525);
        double r95547 = pow(r95520, r95525);
        double r95548 = r95546 * r95547;
        double r95549 = fma(r95545, r95548, r95521);
        double r95550 = fma(r95541, r95544, r95549);
        double r95551 = r95527 * r95527;
        double r95552 = cbrt(r95551);
        double r95553 = cbrt(r95527);
        double r95554 = -r95528;
        double r95555 = fma(r95552, r95553, r95554);
        double r95556 = r95524 - r95528;
        double r95557 = pow(r95556, r95535);
        double r95558 = r95555 * r95557;
        double r95559 = cbrt(r95558);
        double r95560 = r95540 ? r95550 : r95559;
        double r95561 = r95523 ? r95538 : r95560;
        return r95561;
}

Error

Bits error versus a

Bits error versus x

Target

Original29.8
Target0.2
Herbie8.9
\[\begin{array}{l} \mathbf{if}\;\left|a \cdot x\right| \lt 0.10000000000000001:\\ \;\;\;\;\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 3 regimes
  2. if (* a x) < -7.761360864435032e-23

    1. Initial program 2.1

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

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

      \[\leadsto \sqrt[3]{\color{blue}{{\left(e^{a \cdot x} - 1\right)}^{3}}}\]
    5. Using strategy rm
    6. Applied cube-mult2.1

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

      \[\leadsto \sqrt[3]{\left(e^{a \cdot x} - 1\right) \cdot \color{blue}{{\left(e^{a \cdot x} - 1\right)}^{2}}}\]
    8. Using strategy rm
    9. Applied add-cbrt-cube2.1

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

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

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

      \[\leadsto \sqrt[3]{\left(\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}} - 1\right) \cdot {\left(\color{blue}{\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}}} - \sqrt{1} \cdot \sqrt{1}\right)}^{2}}\]
    14. Applied difference-of-squares2.1

      \[\leadsto \sqrt[3]{\left(\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}} - 1\right) \cdot {\color{blue}{\left(\left(\sqrt{e^{a \cdot x}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{a \cdot x}} - \sqrt{1}\right)\right)}}^{2}}\]
    15. Simplified2.1

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

    if -7.761360864435032e-23 < (* a x) < 4.0013727135798645e-17

    1. Initial program 45.6

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

      \[\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. Simplified12.2

      \[\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)}\]

    if 4.0013727135798645e-17 < (* a x)

    1. Initial program 22.5

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

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

      \[\leadsto \sqrt[3]{\color{blue}{{\left(e^{a \cdot x} - 1\right)}^{3}}}\]
    5. Using strategy rm
    6. Applied cube-mult25.2

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

      \[\leadsto \sqrt[3]{\left(e^{a \cdot x} - 1\right) \cdot \color{blue}{{\left(e^{a \cdot x} - 1\right)}^{2}}}\]
    8. Using strategy rm
    9. Applied add-cbrt-cube25.6

      \[\leadsto \sqrt[3]{\left(\color{blue}{\sqrt[3]{\left(e^{a \cdot x} \cdot e^{a \cdot x}\right) \cdot e^{a \cdot x}}} - 1\right) \cdot {\left(e^{a \cdot x} - 1\right)}^{2}}\]
    10. Simplified25.5

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

      \[\leadsto \sqrt[3]{\left(\sqrt[3]{\color{blue}{\left(\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}} \cdot \sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}}\right) \cdot \sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}}}} - 1\right) \cdot {\left(e^{a \cdot x} - 1\right)}^{2}}\]
    13. Applied cbrt-prod25.7

      \[\leadsto \sqrt[3]{\left(\color{blue}{\sqrt[3]{\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}} \cdot \sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}}} \cdot \sqrt[3]{\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}}}} - 1\right) \cdot {\left(e^{a \cdot x} - 1\right)}^{2}}\]
    14. Applied fma-neg25.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \cdot x \le -7.7613608644350317 \cdot 10^{-23}:\\ \;\;\;\;\sqrt[3]{\left(\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}} - 1\right) \cdot {\left(\left(\sqrt{1} + \sqrt{e^{a \cdot x}}\right) \cdot \left(\sqrt{e^{a \cdot x}} - \sqrt{1}\right)\right)}^{2}}\\ \mathbf{elif}\;a \cdot x \le 4.00137271357986445 \cdot 10^{-17}:\\ \;\;\;\;\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)\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\mathsf{fma}\left(\sqrt[3]{\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}} \cdot \sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}}}, \sqrt[3]{\sqrt[3]{{\left(e^{a \cdot x}\right)}^{3}}}, -1\right) \cdot {\left(e^{a \cdot x} - 1\right)}^{2}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020021 +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))