Average Error: 29.6 → 13.7
Time: 14.5s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \le -1.19588563424716459 \cdot 10^{42}:\\ \;\;\;\;\frac{\frac{e^{\left(a \cdot x\right) \cdot 4} \cdot e^{\left(a \cdot x\right) \cdot 4} - {1}^{4} \cdot {1}^{4}}{\left(e^{2 \cdot \left(x \cdot a\right)} + 1 \cdot 1\right) \cdot \left(e^{\left(a \cdot x\right) \cdot 4} + {1}^{4}\right)}}{e^{a \cdot x} + 1}\\ \mathbf{elif}\;a \le 1.35216653522671676 \cdot 10^{102}:\\ \;\;\;\;x \cdot \left(a + x \cdot \left(\frac{1}{2} \cdot {a}^{2} + \left(\frac{1}{6} \cdot {a}^{3}\right) \cdot x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{e^{\left(a \cdot x\right) \cdot 6} - {1}^{6}}{e^{\left(a \cdot x\right) \cdot 4} + \left(1 \cdot 1\right) \cdot \left(e^{2 \cdot \left(x \cdot a\right)} + 1 \cdot 1\right)}}{e^{a \cdot x} + 1}\\ \end{array}\]
e^{a \cdot x} - 1
\begin{array}{l}
\mathbf{if}\;a \le -1.19588563424716459 \cdot 10^{42}:\\
\;\;\;\;\frac{\frac{e^{\left(a \cdot x\right) \cdot 4} \cdot e^{\left(a \cdot x\right) \cdot 4} - {1}^{4} \cdot {1}^{4}}{\left(e^{2 \cdot \left(x \cdot a\right)} + 1 \cdot 1\right) \cdot \left(e^{\left(a \cdot x\right) \cdot 4} + {1}^{4}\right)}}{e^{a \cdot x} + 1}\\

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

\mathbf{else}:\\
\;\;\;\;\frac{\frac{e^{\left(a \cdot x\right) \cdot 6} - {1}^{6}}{e^{\left(a \cdot x\right) \cdot 4} + \left(1 \cdot 1\right) \cdot \left(e^{2 \cdot \left(x \cdot a\right)} + 1 \cdot 1\right)}}{e^{a \cdot x} + 1}\\

\end{array}
double f(double a, double x) {
        double r130199 = a;
        double r130200 = x;
        double r130201 = r130199 * r130200;
        double r130202 = exp(r130201);
        double r130203 = 1.0;
        double r130204 = r130202 - r130203;
        return r130204;
}

double f(double a, double x) {
        double r130205 = a;
        double r130206 = -1.1958856342471646e+42;
        bool r130207 = r130205 <= r130206;
        double r130208 = x;
        double r130209 = r130205 * r130208;
        double r130210 = 4.0;
        double r130211 = r130209 * r130210;
        double r130212 = exp(r130211);
        double r130213 = r130212 * r130212;
        double r130214 = 1.0;
        double r130215 = pow(r130214, r130210);
        double r130216 = r130215 * r130215;
        double r130217 = r130213 - r130216;
        double r130218 = 2.0;
        double r130219 = r130208 * r130205;
        double r130220 = r130218 * r130219;
        double r130221 = exp(r130220);
        double r130222 = r130214 * r130214;
        double r130223 = r130221 + r130222;
        double r130224 = r130212 + r130215;
        double r130225 = r130223 * r130224;
        double r130226 = r130217 / r130225;
        double r130227 = exp(r130209);
        double r130228 = r130227 + r130214;
        double r130229 = r130226 / r130228;
        double r130230 = 1.3521665352267168e+102;
        bool r130231 = r130205 <= r130230;
        double r130232 = 0.5;
        double r130233 = pow(r130205, r130218);
        double r130234 = r130232 * r130233;
        double r130235 = 0.16666666666666666;
        double r130236 = 3.0;
        double r130237 = pow(r130205, r130236);
        double r130238 = r130235 * r130237;
        double r130239 = r130238 * r130208;
        double r130240 = r130234 + r130239;
        double r130241 = r130208 * r130240;
        double r130242 = r130205 + r130241;
        double r130243 = r130208 * r130242;
        double r130244 = 6.0;
        double r130245 = r130209 * r130244;
        double r130246 = exp(r130245);
        double r130247 = pow(r130214, r130244);
        double r130248 = r130246 - r130247;
        double r130249 = r130222 * r130223;
        double r130250 = r130212 + r130249;
        double r130251 = r130248 / r130250;
        double r130252 = r130251 / r130228;
        double r130253 = r130231 ? r130243 : r130252;
        double r130254 = r130207 ? r130229 : r130253;
        return r130254;
}

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.6
Target0.2
Herbie13.7
\[\begin{array}{l} \mathbf{if}\;\left|a \cdot x\right| \lt 0.10000000000000001:\\ \;\;\;\;\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 < -1.1958856342471646e+42

    1. Initial program 19.7

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

      \[\leadsto \color{blue}{\frac{e^{a \cdot x} \cdot e^{a \cdot x} - 1 \cdot 1}{e^{a \cdot x} + 1}}\]
    4. Simplified19.7

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

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

      \[\leadsto \frac{\frac{\color{blue}{e^{\left(a \cdot x\right) \cdot 4} - {1}^{4}}}{e^{2 \cdot \left(x \cdot a\right)} + 1 \cdot 1}}{e^{a \cdot x} + 1}\]
    8. Using strategy rm
    9. Applied flip--19.8

      \[\leadsto \frac{\frac{\color{blue}{\frac{e^{\left(a \cdot x\right) \cdot 4} \cdot e^{\left(a \cdot x\right) \cdot 4} - {1}^{4} \cdot {1}^{4}}{e^{\left(a \cdot x\right) \cdot 4} + {1}^{4}}}}{e^{2 \cdot \left(x \cdot a\right)} + 1 \cdot 1}}{e^{a \cdot x} + 1}\]
    10. Applied associate-/l/19.8

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

    if -1.1958856342471646e+42 < a < 1.3521665352267168e+102

    1. Initial program 35.0

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

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

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

    if 1.3521665352267168e+102 < a

    1. Initial program 15.0

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

      \[\leadsto \color{blue}{\frac{e^{a \cdot x} \cdot e^{a \cdot x} - 1 \cdot 1}{e^{a \cdot x} + 1}}\]
    4. Simplified14.9

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -1.19588563424716459 \cdot 10^{42}:\\ \;\;\;\;\frac{\frac{e^{\left(a \cdot x\right) \cdot 4} \cdot e^{\left(a \cdot x\right) \cdot 4} - {1}^{4} \cdot {1}^{4}}{\left(e^{2 \cdot \left(x \cdot a\right)} + 1 \cdot 1\right) \cdot \left(e^{\left(a \cdot x\right) \cdot 4} + {1}^{4}\right)}}{e^{a \cdot x} + 1}\\ \mathbf{elif}\;a \le 1.35216653522671676 \cdot 10^{102}:\\ \;\;\;\;x \cdot \left(a + x \cdot \left(\frac{1}{2} \cdot {a}^{2} + \left(\frac{1}{6} \cdot {a}^{3}\right) \cdot x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{e^{\left(a \cdot x\right) \cdot 6} - {1}^{6}}{e^{\left(a \cdot x\right) \cdot 4} + \left(1 \cdot 1\right) \cdot \left(e^{2 \cdot \left(x \cdot a\right)} + 1 \cdot 1\right)}}{e^{a \cdot x} + 1}\\ \end{array}\]

Reproduce

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