Average Error: 29.8 → 9.7
Time: 23.3s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \cdot x \le -2.63503256833740627 \cdot 10^{-11}:\\ \;\;\;\;\frac{\frac{\log \left(e^{e^{\left(a \cdot x\right) \cdot 6} - {1}^{6}}\right)}{e^{\left(a \cdot x\right) \cdot 4} + \left(1 \cdot 1\right) \cdot \left(e^{2 \cdot \left(a \cdot x\right)} + 1 \cdot 1\right)}}{e^{a \cdot x} + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{4}{3} \cdot \left({a}^{3} \cdot {x}^{3}\right) + x \cdot \left(\left(2 \cdot {a}^{2}\right) \cdot x + 2 \cdot a\right)}{e^{a \cdot x} + 1}\\ \end{array}\]
e^{a \cdot x} - 1
\begin{array}{l}
\mathbf{if}\;a \cdot x \le -2.63503256833740627 \cdot 10^{-11}:\\
\;\;\;\;\frac{\frac{\log \left(e^{e^{\left(a \cdot x\right) \cdot 6} - {1}^{6}}\right)}{e^{\left(a \cdot x\right) \cdot 4} + \left(1 \cdot 1\right) \cdot \left(e^{2 \cdot \left(a \cdot x\right)} + 1 \cdot 1\right)}}{e^{a \cdot x} + 1}\\

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

\end{array}
double f(double a, double x) {
        double r76217 = a;
        double r76218 = x;
        double r76219 = r76217 * r76218;
        double r76220 = exp(r76219);
        double r76221 = 1.0;
        double r76222 = r76220 - r76221;
        return r76222;
}

double f(double a, double x) {
        double r76223 = a;
        double r76224 = x;
        double r76225 = r76223 * r76224;
        double r76226 = -2.6350325683374063e-11;
        bool r76227 = r76225 <= r76226;
        double r76228 = 6.0;
        double r76229 = r76225 * r76228;
        double r76230 = exp(r76229);
        double r76231 = 1.0;
        double r76232 = pow(r76231, r76228);
        double r76233 = r76230 - r76232;
        double r76234 = exp(r76233);
        double r76235 = log(r76234);
        double r76236 = 4.0;
        double r76237 = r76225 * r76236;
        double r76238 = exp(r76237);
        double r76239 = r76231 * r76231;
        double r76240 = 2.0;
        double r76241 = r76240 * r76225;
        double r76242 = exp(r76241);
        double r76243 = r76242 + r76239;
        double r76244 = r76239 * r76243;
        double r76245 = r76238 + r76244;
        double r76246 = r76235 / r76245;
        double r76247 = exp(r76225);
        double r76248 = r76247 + r76231;
        double r76249 = r76246 / r76248;
        double r76250 = 1.3333333333333333;
        double r76251 = 3.0;
        double r76252 = pow(r76223, r76251);
        double r76253 = pow(r76224, r76251);
        double r76254 = r76252 * r76253;
        double r76255 = r76250 * r76254;
        double r76256 = pow(r76223, r76240);
        double r76257 = r76240 * r76256;
        double r76258 = r76257 * r76224;
        double r76259 = r76240 * r76223;
        double r76260 = r76258 + r76259;
        double r76261 = r76224 * r76260;
        double r76262 = r76255 + r76261;
        double r76263 = r76262 / r76248;
        double r76264 = r76227 ? r76249 : r76263;
        return r76264;
}

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.8
Target0.2
Herbie9.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 2 regimes
  2. if (* a x) < -2.6350325683374063e-11

    1. Initial program 0.5

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

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

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

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

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

      \[\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(a \cdot x\right)} + 1 \cdot 1\right)}}}{e^{a \cdot x} + 1}\]
    9. Using strategy rm
    10. Applied add-log-exp0.4

      \[\leadsto \frac{\frac{e^{\left(a \cdot x\right) \cdot 6} - \color{blue}{\log \left(e^{{1}^{6}}\right)}}{e^{\left(a \cdot x\right) \cdot 4} + \left(1 \cdot 1\right) \cdot \left(e^{2 \cdot \left(a \cdot x\right)} + 1 \cdot 1\right)}}{e^{a \cdot x} + 1}\]
    11. Applied add-log-exp0.4

      \[\leadsto \frac{\frac{\color{blue}{\log \left(e^{e^{\left(a \cdot x\right) \cdot 6}}\right)} - \log \left(e^{{1}^{6}}\right)}{e^{\left(a \cdot x\right) \cdot 4} + \left(1 \cdot 1\right) \cdot \left(e^{2 \cdot \left(a \cdot x\right)} + 1 \cdot 1\right)}}{e^{a \cdot x} + 1}\]
    12. Applied diff-log0.4

      \[\leadsto \frac{\frac{\color{blue}{\log \left(\frac{e^{e^{\left(a \cdot x\right) \cdot 6}}}{e^{{1}^{6}}}\right)}}{e^{\left(a \cdot x\right) \cdot 4} + \left(1 \cdot 1\right) \cdot \left(e^{2 \cdot \left(a \cdot x\right)} + 1 \cdot 1\right)}}{e^{a \cdot x} + 1}\]
    13. Simplified0.4

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

    if -2.6350325683374063e-11 < (* a x)

    1. Initial program 45.0

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

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

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

      \[\leadsto \frac{e^{\color{blue}{\log \left(e^{2}\right)} \cdot \left(a \cdot x\right)} - 1 \cdot 1}{e^{a \cdot x} + 1}\]
    7. Applied exp-to-pow45.0

      \[\leadsto \frac{\color{blue}{{\left(e^{2}\right)}^{\left(a \cdot x\right)}} - 1 \cdot 1}{e^{a \cdot x} + 1}\]
    8. Taylor expanded around 0 14.5

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

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

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

Reproduce

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