Average Error: 29.5 → 9.4
Time: 14.4s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \cdot x \le -2.854896315070200588929145535786717914183 \cdot 10^{-12}:\\ \;\;\;\;\left(\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\\ \mathbf{elif}\;a \cdot x \le 3.077927021552124355804512938132032171833 \cdot 10^{-24}:\\ \;\;\;\;x \cdot \left(a + \left(\frac{1}{2} \cdot {a}^{2}\right) \cdot x\right) + \frac{1}{6} \cdot \left({a}^{3} \cdot {x}^{3}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}}\right) \cdot \left(\frac{\sqrt[3]{\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}} - \sqrt{1} \cdot \sqrt{1}}}{\sqrt[3]{\sqrt{e^{a \cdot x}} - \sqrt{1}}} \cdot \left(\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 -2.854896315070200588929145535786717914183 \cdot 10^{-12}:\\
\;\;\;\;\left(\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\\

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

\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}}\right) \cdot \left(\frac{\sqrt[3]{\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}} - \sqrt{1} \cdot \sqrt{1}}}{\sqrt[3]{\sqrt{e^{a \cdot x}} - \sqrt{1}}} \cdot \left(\sqrt{e^{a \cdot x}} - \sqrt{1}\right)\right)\\

\end{array}
double f(double a, double x) {
        double r59114 = a;
        double r59115 = x;
        double r59116 = r59114 * r59115;
        double r59117 = exp(r59116);
        double r59118 = 1.0;
        double r59119 = r59117 - r59118;
        return r59119;
}

double f(double a, double x) {
        double r59120 = a;
        double r59121 = x;
        double r59122 = r59120 * r59121;
        double r59123 = -2.8548963150702006e-12;
        bool r59124 = r59122 <= r59123;
        double r59125 = exp(r59122);
        double r59126 = 1.0;
        double r59127 = r59125 - r59126;
        double r59128 = exp(r59127);
        double r59129 = log(r59128);
        double r59130 = cbrt(r59129);
        double r59131 = cbrt(r59127);
        double r59132 = r59130 * r59131;
        double r59133 = r59132 * r59131;
        double r59134 = 3.0779270215521244e-24;
        bool r59135 = r59122 <= r59134;
        double r59136 = 0.5;
        double r59137 = 2.0;
        double r59138 = pow(r59120, r59137);
        double r59139 = r59136 * r59138;
        double r59140 = r59139 * r59121;
        double r59141 = r59120 + r59140;
        double r59142 = r59121 * r59141;
        double r59143 = 0.16666666666666666;
        double r59144 = 3.0;
        double r59145 = pow(r59120, r59144);
        double r59146 = pow(r59121, r59144);
        double r59147 = r59145 * r59146;
        double r59148 = r59143 * r59147;
        double r59149 = r59142 + r59148;
        double r59150 = sqrt(r59125);
        double r59151 = sqrt(r59126);
        double r59152 = r59150 + r59151;
        double r59153 = cbrt(r59152);
        double r59154 = r59153 * r59153;
        double r59155 = r59150 * r59150;
        double r59156 = r59151 * r59151;
        double r59157 = r59155 - r59156;
        double r59158 = cbrt(r59157);
        double r59159 = r59150 - r59151;
        double r59160 = cbrt(r59159);
        double r59161 = r59158 / r59160;
        double r59162 = r59161 * r59159;
        double r59163 = r59154 * r59162;
        double r59164 = r59135 ? r59149 : r59163;
        double r59165 = r59124 ? r59133 : r59164;
        return r59165;
}

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
Herbie9.4
\[\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) < -2.8548963150702006e-12

    1. Initial program 0.6

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

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

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

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

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

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

    if -2.8548963150702006e-12 < (* a x) < 3.0779270215521244e-24

    1. Initial program 44.7

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

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

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

    if 3.0779270215521244e-24 < (* a x)

    1. Initial program 33.6

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

      \[\leadsto e^{a \cdot x} - \color{blue}{\sqrt{1} \cdot \sqrt{1}}\]
    4. Applied add-sqr-sqrt34.5

      \[\leadsto \color{blue}{\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}}} - \sqrt{1} \cdot \sqrt{1}\]
    5. Applied difference-of-squares34.4

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \cdot x \le -2.854896315070200588929145535786717914183 \cdot 10^{-12}:\\ \;\;\;\;\left(\sqrt[3]{\log \left(e^{e^{a \cdot x} - 1}\right)} \cdot \sqrt[3]{e^{a \cdot x} - 1}\right) \cdot \sqrt[3]{e^{a \cdot x} - 1}\\ \mathbf{elif}\;a \cdot x \le 3.077927021552124355804512938132032171833 \cdot 10^{-24}:\\ \;\;\;\;x \cdot \left(a + \left(\frac{1}{2} \cdot {a}^{2}\right) \cdot x\right) + \frac{1}{6} \cdot \left({a}^{3} \cdot {x}^{3}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}} \cdot \sqrt[3]{\sqrt{e^{a \cdot x}} + \sqrt{1}}\right) \cdot \left(\frac{\sqrt[3]{\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}} - \sqrt{1} \cdot \sqrt{1}}}{\sqrt[3]{\sqrt{e^{a \cdot x}} - \sqrt{1}}} \cdot \left(\sqrt{e^{a \cdot x}} - \sqrt{1}\right)\right)\\ \end{array}\]

Reproduce

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

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

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