Average Error: 28.8 → 0.3
Time: 25.9s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \cdot x \le -0.00027541795016373276:\\ \;\;\;\;\frac{-1 + e^{\left(x + \left(x + x\right)\right) \cdot a}}{\left(\left(\left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) \cdot \left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right)\right) \cdot \left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) + e^{a \cdot x}\right) + 1}\\ \mathbf{else}:\\ \;\;\;\;a \cdot x + \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} + \frac{1}{2} \cdot \left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right)\right)\\ \end{array}\]
e^{a \cdot x} - 1
\begin{array}{l}
\mathbf{if}\;a \cdot x \le -0.00027541795016373276:\\
\;\;\;\;\frac{-1 + e^{\left(x + \left(x + x\right)\right) \cdot a}}{\left(\left(\left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) \cdot \left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right)\right) \cdot \left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) + e^{a \cdot x}\right) + 1}\\

\mathbf{else}:\\
\;\;\;\;a \cdot x + \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} + \frac{1}{2} \cdot \left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right)\right)\\

\end{array}
double f(double a, double x) {
        double r4982016 = a;
        double r4982017 = x;
        double r4982018 = r4982016 * r4982017;
        double r4982019 = exp(r4982018);
        double r4982020 = 1.0;
        double r4982021 = r4982019 - r4982020;
        return r4982021;
}

double f(double a, double x) {
        double r4982022 = a;
        double r4982023 = x;
        double r4982024 = r4982022 * r4982023;
        double r4982025 = -0.00027541795016373276;
        bool r4982026 = r4982024 <= r4982025;
        double r4982027 = -1.0;
        double r4982028 = r4982023 + r4982023;
        double r4982029 = r4982023 + r4982028;
        double r4982030 = r4982029 * r4982022;
        double r4982031 = exp(r4982030);
        double r4982032 = r4982027 + r4982031;
        double r4982033 = exp(r4982024);
        double r4982034 = cbrt(r4982033);
        double r4982035 = r4982034 * r4982034;
        double r4982036 = r4982035 * r4982035;
        double r4982037 = r4982036 * r4982035;
        double r4982038 = r4982037 + r4982033;
        double r4982039 = 1.0;
        double r4982040 = r4982038 + r4982039;
        double r4982041 = r4982032 / r4982040;
        double r4982042 = r4982024 * r4982024;
        double r4982043 = r4982024 * r4982042;
        double r4982044 = 0.16666666666666666;
        double r4982045 = r4982043 * r4982044;
        double r4982046 = 0.5;
        double r4982047 = r4982046 * r4982042;
        double r4982048 = r4982045 + r4982047;
        double r4982049 = r4982024 + r4982048;
        double r4982050 = r4982026 ? r4982041 : r4982049;
        return r4982050;
}

Error

Bits error versus a

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original28.8
Target0.2
Herbie0.3
\[\begin{array}{l} \mathbf{if}\;\left|a \cdot x\right| \lt \frac{1}{10}:\\ \;\;\;\;\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 2 regimes
  2. if (* a x) < -0.00027541795016373276

    1. Initial program 0.0

      \[e^{a \cdot x} - 1\]
    2. Using strategy rm
    3. Applied flip3--0.0

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

      \[\leadsto \frac{\color{blue}{-1 + e^{\left(x + \left(x + x\right)\right) \cdot a}}}{e^{a \cdot x} \cdot e^{a \cdot x} + \left(1 \cdot 1 + e^{a \cdot x} \cdot 1\right)}\]
    5. Simplified0.0

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

      \[\leadsto \frac{-1 + e^{\left(x + \left(x + x\right)\right) \cdot a}}{1 + \left(e^{a \cdot x} \cdot \color{blue}{\left(\left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) \cdot \sqrt[3]{e^{a \cdot x}}\right)} + e^{a \cdot x}\right)}\]
    8. Applied add-cube-cbrt0.0

      \[\leadsto \frac{-1 + e^{\left(x + \left(x + x\right)\right) \cdot a}}{1 + \left(\color{blue}{\left(\left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) \cdot \sqrt[3]{e^{a \cdot x}}\right)} \cdot \left(\left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) \cdot \sqrt[3]{e^{a \cdot x}}\right) + e^{a \cdot x}\right)}\]
    9. Applied swap-sqr0.0

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

    if -0.00027541795016373276 < (* a x)

    1. Initial program 43.8

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

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

      \[\leadsto \color{blue}{\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} + \left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right) \cdot \frac{1}{2}\right) + a \cdot x}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \cdot x \le -0.00027541795016373276:\\ \;\;\;\;\frac{-1 + e^{\left(x + \left(x + x\right)\right) \cdot a}}{\left(\left(\left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) \cdot \left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right)\right) \cdot \left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) + e^{a \cdot x}\right) + 1}\\ \mathbf{else}:\\ \;\;\;\;a \cdot x + \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} + \frac{1}{2} \cdot \left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019132 
(FPCore (a x)
  :name "expax (section 3.5)"

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

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