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

\mathbf{else}:\\
\;\;\;\;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)\\

\end{array}
double f(double a, double x) {
        double r81225 = a;
        double r81226 = x;
        double r81227 = r81225 * r81226;
        double r81228 = exp(r81227);
        double r81229 = 1.0;
        double r81230 = r81228 - r81229;
        return r81230;
}

double f(double a, double x) {
        double r81231 = a;
        double r81232 = x;
        double r81233 = r81231 * r81232;
        double r81234 = -1945328408371037.0;
        double r81235 = 4.835703278458517e+24;
        double r81236 = r81234 / r81235;
        bool r81237 = r81233 <= r81236;
        double r81238 = 3.0;
        double r81239 = r81233 * r81238;
        double r81240 = exp(r81239);
        double r81241 = pow(r81240, r81238);
        double r81242 = 1.0;
        double r81243 = pow(r81242, r81238);
        double r81244 = pow(r81243, r81238);
        double r81245 = r81241 - r81244;
        double r81246 = exp(r81233);
        double r81247 = r81246 + r81242;
        double r81248 = r81242 * r81247;
        double r81249 = 2.0;
        double r81250 = pow(r81246, r81249);
        double r81251 = r81248 + r81250;
        double r81252 = 6.0;
        double r81253 = pow(r81246, r81252);
        double r81254 = pow(r81242, r81252);
        double r81255 = r81253 + r81254;
        double r81256 = r81240 * r81243;
        double r81257 = r81255 + r81256;
        double r81258 = r81251 * r81257;
        double r81259 = r81245 / r81258;
        double r81260 = 0.5;
        double r81261 = pow(r81231, r81249);
        double r81262 = r81260 * r81261;
        double r81263 = r81262 * r81232;
        double r81264 = r81231 + r81263;
        double r81265 = r81232 * r81264;
        double r81266 = 0.16666666666666666;
        double r81267 = pow(r81231, r81238);
        double r81268 = pow(r81232, r81238);
        double r81269 = r81267 * r81268;
        double r81270 = r81266 * r81269;
        double r81271 = r81265 + r81270;
        double r81272 = r81237 ? r81259 : r81271;
        return r81272;
}

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.5
\[\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 2 regimes
  2. if (* a x) < -4.022844861132902e-10

    1. Initial program 0.5

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

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

      \[\leadsto \frac{{\left(e^{a \cdot x}\right)}^{3} - {1}^{3}}{\color{blue}{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}}\]
    5. Using strategy rm
    6. Applied pow-exp0.4

      \[\leadsto \frac{\color{blue}{e^{\left(a \cdot x\right) \cdot 3}} - {1}^{3}}{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}\]
    7. Using strategy rm
    8. Applied flip3--0.4

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

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

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

    if -4.022844861132902e-10 < (* a x)

    1. Initial program 44.7

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

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

      \[\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)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification9.5

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

Reproduce

herbie shell --seed 197574269 
(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))