Average Error: 29.6 → 9.6
Time: 4.4s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \cdot x \le -48.69806950283927449163456913083791732788:\\ \;\;\;\;\sqrt[3]{e^{a \cdot x} - 1} \cdot \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \log \left(e^{\sqrt[3]{e^{a \cdot x} - 1}}\right)\right)\\ \mathbf{elif}\;a \cdot x \le 1.399335336201219789742515322647377985716 \cdot 10^{-29}:\\ \;\;\;\;\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]{e^{a \cdot x} - 1} \cdot \left(\sqrt[3]{\sqrt{e^{a \cdot x} - 1} \cdot \sqrt{e^{a \cdot x} - 1}} \cdot \left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \sqrt[3]{\sqrt{e^{a \cdot x}} - \sqrt{1}}\right)\right)\\ \end{array}\]
e^{a \cdot x} - 1
\begin{array}{l}
\mathbf{if}\;a \cdot x \le -48.69806950283927449163456913083791732788:\\
\;\;\;\;\sqrt[3]{e^{a \cdot x} - 1} \cdot \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \log \left(e^{\sqrt[3]{e^{a \cdot x} - 1}}\right)\right)\\

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

\end{array}
double f(double a, double x) {
        double r113294 = a;
        double r113295 = x;
        double r113296 = r113294 * r113295;
        double r113297 = exp(r113296);
        double r113298 = 1.0;
        double r113299 = r113297 - r113298;
        return r113299;
}

double f(double a, double x) {
        double r113300 = a;
        double r113301 = x;
        double r113302 = r113300 * r113301;
        double r113303 = -48.698069502839274;
        bool r113304 = r113302 <= r113303;
        double r113305 = exp(r113302);
        double r113306 = 1.0;
        double r113307 = r113305 - r113306;
        double r113308 = cbrt(r113307);
        double r113309 = exp(r113308);
        double r113310 = log(r113309);
        double r113311 = r113308 * r113310;
        double r113312 = r113308 * r113311;
        double r113313 = 1.3993353362012198e-29;
        bool r113314 = r113302 <= r113313;
        double r113315 = 0.5;
        double r113316 = 2.0;
        double r113317 = pow(r113300, r113316);
        double r113318 = pow(r113301, r113316);
        double r113319 = r113317 * r113318;
        double r113320 = 0.16666666666666666;
        double r113321 = 3.0;
        double r113322 = pow(r113300, r113321);
        double r113323 = pow(r113301, r113321);
        double r113324 = r113322 * r113323;
        double r113325 = fma(r113320, r113324, r113302);
        double r113326 = fma(r113315, r113319, r113325);
        double r113327 = sqrt(r113307);
        double r113328 = r113327 * r113327;
        double r113329 = cbrt(r113328);
        double r113330 = sqrt(r113305);
        double r113331 = sqrt(r113306);
        double r113332 = r113330 + r113331;
        double r113333 = cbrt(r113332);
        double r113334 = r113330 - r113331;
        double r113335 = cbrt(r113334);
        double r113336 = r113333 * r113335;
        double r113337 = r113329 * r113336;
        double r113338 = r113308 * r113337;
        double r113339 = r113314 ? r113326 : r113338;
        double r113340 = r113304 ? r113312 : r113339;
        return r113340;
}

Error

Bits error versus a

Bits error versus x

Target

Original29.6
Target0.2
Herbie9.6
\[\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 3 regimes
  2. if (* a x) < -48.698069502839274

    1. Initial program 0

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

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

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

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

      \[\leadsto \log \color{blue}{\left(e^{e^{a \cdot x} - 1}\right)}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt0

      \[\leadsto \log \left(e^{\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}}}\right)\]
    9. Applied exp-prod0

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

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

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

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

    if -48.698069502839274 < (* a x) < 1.3993353362012198e-29

    1. Initial program 44.6

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

      \[\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. Simplified13.1

      \[\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.3993353362012198e-29 < (* a x)

    1. Initial program 36.2

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

      \[\leadsto e^{a \cdot x} - \color{blue}{\log \left(e^{1}\right)}\]
    4. Applied add-log-exp38.4

      \[\leadsto \color{blue}{\log \left(e^{e^{a \cdot x}}\right)} - \log \left(e^{1}\right)\]
    5. Applied diff-log38.7

      \[\leadsto \color{blue}{\log \left(\frac{e^{e^{a \cdot x}}}{e^{1}}\right)}\]
    6. Simplified38.4

      \[\leadsto \log \color{blue}{\left(e^{e^{a \cdot x} - 1}\right)}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt38.4

      \[\leadsto \log \left(e^{\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}}}\right)\]
    9. Applied exp-prod38.5

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

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

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

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

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

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

      \[\leadsto \sqrt[3]{e^{a \cdot x} - 1} \cdot \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \color{blue}{\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \sqrt[3]{\sqrt{e^{a \cdot x}} - \sqrt{1}}\right)}\right)\]
    17. Using strategy rm
    18. Applied add-sqr-sqrt36.7

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \cdot x \le -48.69806950283927449163456913083791732788:\\ \;\;\;\;\sqrt[3]{e^{a \cdot x} - 1} \cdot \left(\sqrt[3]{e^{a \cdot x} - 1} \cdot \log \left(e^{\sqrt[3]{e^{a \cdot x} - 1}}\right)\right)\\ \mathbf{elif}\;a \cdot x \le 1.399335336201219789742515322647377985716 \cdot 10^{-29}:\\ \;\;\;\;\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]{e^{a \cdot x} - 1} \cdot \left(\sqrt[3]{\sqrt{e^{a \cdot x} - 1} \cdot \sqrt{e^{a \cdot x} - 1}} \cdot \left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \sqrt[3]{\sqrt{e^{a \cdot x}} - \sqrt{1}}\right)\right)\\ \end{array}\]

Reproduce

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