Average Error: 30.0 → 10.1
Time: 5.5s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \cdot x \le -6.7079265592921415 \cdot 10^{-14}:\\ \;\;\;\;\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \left(\sqrt[3]{\frac{{\left(\sqrt{e^{a \cdot x}}\right)}^{3} - {\left(\sqrt{1}\right)}^{3}}{e^{a \cdot x} + \mathsf{fma}\left(\sqrt{1}, \sqrt{e^{a \cdot x}}, 1\right)}} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right)\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\\ \mathbf{elif}\;a \cdot x \le 1.91419640354660377 \cdot 10^{-41}:\\ \;\;\;\;\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}:\\ \;\;\;\;\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}}, \sqrt{\sqrt[3]{e^{a \cdot x}}}, -\sqrt{1}\right)} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right)\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\\ \end{array}\]
e^{a \cdot x} - 1
\begin{array}{l}
\mathbf{if}\;a \cdot x \le -6.7079265592921415 \cdot 10^{-14}:\\
\;\;\;\;\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \left(\sqrt[3]{\frac{{\left(\sqrt{e^{a \cdot x}}\right)}^{3} - {\left(\sqrt{1}\right)}^{3}}{e^{a \cdot x} + \mathsf{fma}\left(\sqrt{1}, \sqrt{e^{a \cdot x}}, 1\right)}} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right)\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\\

\mathbf{elif}\;a \cdot x \le 1.91419640354660377 \cdot 10^{-41}:\\
\;\;\;\;\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}:\\
\;\;\;\;\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}}, \sqrt{\sqrt[3]{e^{a \cdot x}}}, -\sqrt{1}\right)} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right)\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\\

\end{array}
double f(double a, double x) {
        double r143588 = a;
        double r143589 = x;
        double r143590 = r143588 * r143589;
        double r143591 = exp(r143590);
        double r143592 = 1.0;
        double r143593 = r143591 - r143592;
        return r143593;
}

double f(double a, double x) {
        double r143594 = a;
        double r143595 = x;
        double r143596 = r143594 * r143595;
        double r143597 = -6.707926559292141e-14;
        bool r143598 = r143596 <= r143597;
        double r143599 = exp(r143596);
        double r143600 = sqrt(r143599);
        double r143601 = 1.0;
        double r143602 = sqrt(r143601);
        double r143603 = r143600 + r143602;
        double r143604 = cbrt(r143603);
        double r143605 = 3.0;
        double r143606 = pow(r143600, r143605);
        double r143607 = pow(r143602, r143605);
        double r143608 = r143606 - r143607;
        double r143609 = fma(r143602, r143600, r143601);
        double r143610 = r143599 + r143609;
        double r143611 = r143608 / r143610;
        double r143612 = cbrt(r143611);
        double r143613 = r143599 - r143601;
        double r143614 = cbrt(r143613);
        double r143615 = r143612 * r143614;
        double r143616 = r143604 * r143615;
        double r143617 = r143616 * r143614;
        double r143618 = 1.9141964035466038e-41;
        bool r143619 = r143596 <= r143618;
        double r143620 = 0.5;
        double r143621 = 2.0;
        double r143622 = pow(r143594, r143621);
        double r143623 = pow(r143595, r143621);
        double r143624 = r143622 * r143623;
        double r143625 = 0.16666666666666666;
        double r143626 = pow(r143594, r143605);
        double r143627 = pow(r143595, r143605);
        double r143628 = r143626 * r143627;
        double r143629 = fma(r143625, r143628, r143596);
        double r143630 = fma(r143620, r143624, r143629);
        double r143631 = cbrt(r143599);
        double r143632 = r143631 * r143631;
        double r143633 = sqrt(r143632);
        double r143634 = sqrt(r143631);
        double r143635 = -r143602;
        double r143636 = fma(r143633, r143634, r143635);
        double r143637 = cbrt(r143636);
        double r143638 = r143637 * r143614;
        double r143639 = r143604 * r143638;
        double r143640 = r143639 * r143614;
        double r143641 = r143619 ? r143630 : r143640;
        double r143642 = r143598 ? r143617 : r143641;
        return r143642;
}

Error

Bits error versus a

Bits error versus x

Target

Original30.0
Target0.2
Herbie10.1
\[\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) < -6.707926559292141e-14

    1. Initial program 0.8

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

      \[\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-sqr-sqrt0.8

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

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

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

      \[\leadsto \left(\color{blue}{\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \sqrt[3]{\sqrt{e^{a \cdot x}} - \sqrt{1}}\right)} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\]
    9. Applied associate-*l*0.8

      \[\leadsto \color{blue}{\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \left(\sqrt[3]{\sqrt{e^{a \cdot x}} - \sqrt{1}} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right)\right)} \cdot \sqrt[3]{e^{a \cdot x} - 1}\]
    10. Using strategy rm
    11. Applied flip3--0.8

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

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

    if -6.707926559292141e-14 < (* a x) < 1.9141964035466038e-41

    1. Initial program 44.7

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

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

      \[\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 1.9141964035466038e-41 < (* a x)

    1. Initial program 44.3

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

      \[\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-sqr-sqrt44.3

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

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

      \[\leadsto \left(\sqrt[3]{\color{blue}{\left(\sqrt{e^{a \cdot x}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{a \cdot x}} - \sqrt{1}\right)}} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\]
    8. Applied cbrt-prod44.4

      \[\leadsto \left(\color{blue}{\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \sqrt[3]{\sqrt{e^{a \cdot x}} - \sqrt{1}}\right)} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\]
    9. Applied associate-*l*44.4

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

      \[\leadsto \left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \left(\sqrt[3]{\sqrt{\color{blue}{\left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) \cdot \sqrt[3]{e^{a \cdot x}}}} - \sqrt{1}} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right)\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\]
    12. Applied sqrt-prod44.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \cdot x \le -6.7079265592921415 \cdot 10^{-14}:\\ \;\;\;\;\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \left(\sqrt[3]{\frac{{\left(\sqrt{e^{a \cdot x}}\right)}^{3} - {\left(\sqrt{1}\right)}^{3}}{e^{a \cdot x} + \mathsf{fma}\left(\sqrt{1}, \sqrt{e^{a \cdot x}}, 1\right)}} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right)\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\\ \mathbf{elif}\;a \cdot x \le 1.91419640354660377 \cdot 10^{-41}:\\ \;\;\;\;\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}:\\ \;\;\;\;\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}}, \sqrt{\sqrt[3]{e^{a \cdot x}}}, -\sqrt{1}\right)} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right)\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\\ \end{array}\]

Reproduce

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