Average Error: 29.5 → 14.1
Time: 48.4s
Precision: 64
\[e^{a \cdot x} - 1.0\]
\[\begin{array}{l} \mathbf{if}\;x \le -4.978355442950795 \cdot 10^{+85}:\\ \;\;\;\;\log \left(e^{\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}} - 1.0}\right)\\ \mathbf{elif}\;x \le -2.7809807833631145 \cdot 10^{-53}:\\ \;\;\;\;a \cdot x + \left(\left(a \cdot x\right) \cdot \left(\left(a \cdot x\right) \cdot \frac{1}{2}\right) + \left(\left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right) \cdot \left(a \cdot x\right)\right) \cdot \frac{1}{6}\right)\\ \mathbf{elif}\;x \le -5.060005299698439 \cdot 10^{-87}:\\ \;\;\;\;\left(\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1.0}\right)} \cdot \sqrt[3]{\log \left(e^{e^{a \cdot x} - 1.0}\right)}\right) \cdot \sqrt[3]{\log \left(e^{e^{a \cdot x} - 1.0}\right)}\\ \mathbf{elif}\;x \le 3.983314979150684 \cdot 10^{+121}:\\ \;\;\;\;\left(\left(\left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right) \cdot \left(a \cdot x\right)\right) \cdot \frac{1}{6} + a \cdot x\right) + \frac{\left(a \cdot x\right) \cdot \left(a \cdot x\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\log \left(\frac{e^{e^{a \cdot x}}}{e^{1.0}}\right)\\ \end{array}\]
e^{a \cdot x} - 1.0
\begin{array}{l}
\mathbf{if}\;x \le -4.978355442950795 \cdot 10^{+85}:\\
\;\;\;\;\log \left(e^{\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}} - 1.0}\right)\\

\mathbf{elif}\;x \le -2.7809807833631145 \cdot 10^{-53}:\\
\;\;\;\;a \cdot x + \left(\left(a \cdot x\right) \cdot \left(\left(a \cdot x\right) \cdot \frac{1}{2}\right) + \left(\left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right) \cdot \left(a \cdot x\right)\right) \cdot \frac{1}{6}\right)\\

\mathbf{elif}\;x \le -5.060005299698439 \cdot 10^{-87}:\\
\;\;\;\;\left(\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1.0}\right)} \cdot \sqrt[3]{\log \left(e^{e^{a \cdot x} - 1.0}\right)}\right) \cdot \sqrt[3]{\log \left(e^{e^{a \cdot x} - 1.0}\right)}\\

\mathbf{elif}\;x \le 3.983314979150684 \cdot 10^{+121}:\\
\;\;\;\;\left(\left(\left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right) \cdot \left(a \cdot x\right)\right) \cdot \frac{1}{6} + a \cdot x\right) + \frac{\left(a \cdot x\right) \cdot \left(a \cdot x\right)}{2}\\

\mathbf{else}:\\
\;\;\;\;\log \left(\frac{e^{e^{a \cdot x}}}{e^{1.0}}\right)\\

\end{array}
double f(double a, double x) {
        double r3559509 = a;
        double r3559510 = x;
        double r3559511 = r3559509 * r3559510;
        double r3559512 = exp(r3559511);
        double r3559513 = 1.0;
        double r3559514 = r3559512 - r3559513;
        return r3559514;
}

double f(double a, double x) {
        double r3559515 = x;
        double r3559516 = -4.978355442950795e+85;
        bool r3559517 = r3559515 <= r3559516;
        double r3559518 = a;
        double r3559519 = r3559518 * r3559515;
        double r3559520 = exp(r3559519);
        double r3559521 = sqrt(r3559520);
        double r3559522 = r3559521 * r3559521;
        double r3559523 = 1.0;
        double r3559524 = r3559522 - r3559523;
        double r3559525 = exp(r3559524);
        double r3559526 = log(r3559525);
        double r3559527 = -2.7809807833631145e-53;
        bool r3559528 = r3559515 <= r3559527;
        double r3559529 = 0.5;
        double r3559530 = r3559519 * r3559529;
        double r3559531 = r3559519 * r3559530;
        double r3559532 = r3559519 * r3559519;
        double r3559533 = r3559532 * r3559519;
        double r3559534 = 0.16666666666666666;
        double r3559535 = r3559533 * r3559534;
        double r3559536 = r3559531 + r3559535;
        double r3559537 = r3559519 + r3559536;
        double r3559538 = -5.060005299698439e-87;
        bool r3559539 = r3559515 <= r3559538;
        double r3559540 = r3559520 - r3559523;
        double r3559541 = exp(r3559540);
        double r3559542 = log(r3559541);
        double r3559543 = cbrt(r3559542);
        double r3559544 = r3559543 * r3559543;
        double r3559545 = r3559544 * r3559543;
        double r3559546 = 3.983314979150684e+121;
        bool r3559547 = r3559515 <= r3559546;
        double r3559548 = r3559535 + r3559519;
        double r3559549 = 2.0;
        double r3559550 = r3559532 / r3559549;
        double r3559551 = r3559548 + r3559550;
        double r3559552 = exp(r3559520);
        double r3559553 = exp(r3559523);
        double r3559554 = r3559552 / r3559553;
        double r3559555 = log(r3559554);
        double r3559556 = r3559547 ? r3559551 : r3559555;
        double r3559557 = r3559539 ? r3559545 : r3559556;
        double r3559558 = r3559528 ? r3559537 : r3559557;
        double r3559559 = r3559517 ? r3559526 : r3559558;
        return r3559559;
}

Error

Bits error versus a

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original29.5
Target0.2
Herbie14.1
\[\begin{array}{l} \mathbf{if}\;\left|a \cdot x\right| \lt 0.1:\\ \;\;\;\;\left(a \cdot x\right) \cdot \left(1.0 + \left(\frac{a \cdot x}{2.0} + \frac{{\left(a \cdot x\right)}^{2.0}}{6.0}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;e^{a \cdot x} - 1.0\\ \end{array}\]

Derivation

  1. Split input into 5 regimes
  2. if x < -4.978355442950795e+85

    1. Initial program 18.2

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

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

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

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

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

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

    if -4.978355442950795e+85 < x < -2.7809807833631145e-53

    1. Initial program 39.5

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

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

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

    if -2.7809807833631145e-53 < x < -5.060005299698439e-87

    1. Initial program 35.6

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

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

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

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

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

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

    if -5.060005299698439e-87 < x < 3.983314979150684e+121

    1. Initial program 33.7

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

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

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

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

      \[\leadsto \log \color{blue}{\left(e^{e^{x \cdot a} - 1.0}\right)}\]
    7. Taylor expanded around 0 19.6

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

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

    if 3.983314979150684e+121 < x

    1. Initial program 13.3

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

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

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

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

      \[\leadsto \log \color{blue}{\left(e^{e^{x \cdot a} - 1.0}\right)}\]
    7. Using strategy rm
    8. Applied exp-diff13.5

      \[\leadsto \log \color{blue}{\left(\frac{e^{e^{x \cdot a}}}{e^{1.0}}\right)}\]
  3. Recombined 5 regimes into one program.
  4. Final simplification14.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -4.978355442950795 \cdot 10^{+85}:\\ \;\;\;\;\log \left(e^{\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}} - 1.0}\right)\\ \mathbf{elif}\;x \le -2.7809807833631145 \cdot 10^{-53}:\\ \;\;\;\;a \cdot x + \left(\left(a \cdot x\right) \cdot \left(\left(a \cdot x\right) \cdot \frac{1}{2}\right) + \left(\left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right) \cdot \left(a \cdot x\right)\right) \cdot \frac{1}{6}\right)\\ \mathbf{elif}\;x \le -5.060005299698439 \cdot 10^{-87}:\\ \;\;\;\;\left(\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1.0}\right)} \cdot \sqrt[3]{\log \left(e^{e^{a \cdot x} - 1.0}\right)}\right) \cdot \sqrt[3]{\log \left(e^{e^{a \cdot x} - 1.0}\right)}\\ \mathbf{elif}\;x \le 3.983314979150684 \cdot 10^{+121}:\\ \;\;\;\;\left(\left(\left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right) \cdot \left(a \cdot x\right)\right) \cdot \frac{1}{6} + a \cdot x\right) + \frac{\left(a \cdot x\right) \cdot \left(a \cdot x\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\log \left(\frac{e^{e^{a \cdot x}}}{e^{1.0}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019165 
(FPCore (a x)
  :name "expax (section 3.5)"
  :herbie-expected 14

  :herbie-target
  (if (< (fabs (* a x)) 0.1) (* (* a x) (+ 1.0 (+ (/ (* a x) 2.0) (/ (pow (* a x) 2.0) 6.0)))) (- (exp (* a x)) 1.0))

  (- (exp (* a x)) 1.0))