Average Error: 29.7 → 7.2
Time: 23.6s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \cdot x \le -6.22178024346472369 \cdot 10^{-16}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{e^{\left(a \cdot x\right) \cdot 4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{-\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right) + \frac{1}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \left(\left(-\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right) + \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right)}{e^{a \cdot x} + 1}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left({x}^{2}, \mathsf{fma}\left(x, \frac{1}{6} \cdot {a}^{3}, \frac{1}{2} \cdot {a}^{2}\right), a \cdot x\right)\\ \end{array}\]
e^{a \cdot x} - 1
\begin{array}{l}
\mathbf{if}\;a \cdot x \le -6.22178024346472369 \cdot 10^{-16}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{e^{\left(a \cdot x\right) \cdot 4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{-\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right) + \frac{1}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \left(\left(-\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right) + \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right)}{e^{a \cdot x} + 1}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left({x}^{2}, \mathsf{fma}\left(x, \frac{1}{6} \cdot {a}^{3}, \frac{1}{2} \cdot {a}^{2}\right), a \cdot x\right)\\

\end{array}
double f(double a, double x) {
        double r72196 = a;
        double r72197 = x;
        double r72198 = r72196 * r72197;
        double r72199 = exp(r72198);
        double r72200 = 1.0;
        double r72201 = r72199 - r72200;
        return r72201;
}

double f(double a, double x) {
        double r72202 = a;
        double r72203 = x;
        double r72204 = r72202 * r72203;
        double r72205 = -6.221780243464724e-16;
        bool r72206 = r72204 <= r72205;
        double r72207 = 1.0;
        double r72208 = 1.0;
        double r72209 = 2.0;
        double r72210 = r72209 * r72204;
        double r72211 = exp(r72210);
        double r72212 = fma(r72208, r72208, r72211);
        double r72213 = sqrt(r72212);
        double r72214 = r72207 / r72213;
        double r72215 = 4.0;
        double r72216 = r72204 * r72215;
        double r72217 = exp(r72216);
        double r72218 = r72217 / r72213;
        double r72219 = pow(r72208, r72215);
        double r72220 = r72219 / r72213;
        double r72221 = -r72220;
        double r72222 = r72221 / r72213;
        double r72223 = fma(r72214, r72218, r72222);
        double r72224 = r72221 + r72220;
        double r72225 = r72214 * r72224;
        double r72226 = r72223 + r72225;
        double r72227 = exp(r72204);
        double r72228 = r72227 + r72208;
        double r72229 = r72226 / r72228;
        double r72230 = pow(r72203, r72209);
        double r72231 = 0.16666666666666666;
        double r72232 = 3.0;
        double r72233 = pow(r72202, r72232);
        double r72234 = r72231 * r72233;
        double r72235 = 0.5;
        double r72236 = pow(r72202, r72209);
        double r72237 = r72235 * r72236;
        double r72238 = fma(r72203, r72234, r72237);
        double r72239 = fma(r72230, r72238, r72204);
        double r72240 = r72206 ? r72229 : r72239;
        return r72240;
}

Error

Bits error versus a

Bits error versus x

Target

Original29.7
Target0.2
Herbie7.2
\[\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) < -6.221780243464724e-16

    1. Initial program 1.0

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

      \[\leadsto \color{blue}{\frac{e^{a \cdot x} \cdot e^{a \cdot x} - 1 \cdot 1}{e^{a \cdot x} + 1}}\]
    4. Simplified1.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 flip--1.0

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

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

      \[\leadsto \frac{\frac{e^{\left(a \cdot x\right) \cdot 4} - {1}^{4}}{\color{blue}{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{e^{a \cdot x} + 1}\]
    9. Using strategy rm
    10. Applied div-sub1.0

      \[\leadsto \frac{\color{blue}{\frac{e^{\left(a \cdot x\right) \cdot 4}}{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)} - \frac{{1}^{4}}{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{e^{a \cdot x} + 1}\]
    11. Using strategy rm
    12. Applied add-sqr-sqrt1.0

      \[\leadsto \frac{\frac{e^{\left(a \cdot x\right) \cdot 4}}{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)} - \frac{{1}^{4}}{\color{blue}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)} \cdot \sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}}{e^{a \cdot x} + 1}\]
    13. Applied *-un-lft-identity1.0

      \[\leadsto \frac{\frac{e^{\left(a \cdot x\right) \cdot 4}}{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)} - \frac{{\color{blue}{\left(1 \cdot 1\right)}}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)} \cdot \sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{e^{a \cdot x} + 1}\]
    14. Applied unpow-prod-down1.0

      \[\leadsto \frac{\frac{e^{\left(a \cdot x\right) \cdot 4}}{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)} - \frac{\color{blue}{{1}^{4} \cdot {1}^{4}}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)} \cdot \sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{e^{a \cdot x} + 1}\]
    15. Applied times-frac1.0

      \[\leadsto \frac{\frac{e^{\left(a \cdot x\right) \cdot 4}}{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)} - \color{blue}{\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}}{e^{a \cdot x} + 1}\]
    16. Applied add-sqr-sqrt1.0

      \[\leadsto \frac{\frac{e^{\left(a \cdot x\right) \cdot 4}}{\color{blue}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)} \cdot \sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}} - \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{e^{a \cdot x} + 1}\]
    17. Applied *-un-lft-identity1.0

      \[\leadsto \frac{\frac{\color{blue}{1 \cdot e^{\left(a \cdot x\right) \cdot 4}}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)} \cdot \sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} - \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{e^{a \cdot x} + 1}\]
    18. Applied times-frac1.0

      \[\leadsto \frac{\color{blue}{\frac{1}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \frac{e^{\left(a \cdot x\right) \cdot 4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}} - \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{e^{a \cdot x} + 1}\]
    19. Applied prod-diff1.0

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\frac{1}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{e^{\left(a \cdot x\right) \cdot 4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, -\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right) + \mathsf{fma}\left(-\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right)}}{e^{a \cdot x} + 1}\]
    20. Simplified1.0

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\frac{1}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{e^{\left(a \cdot x\right) \cdot 4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{-\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right)} + \mathsf{fma}\left(-\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right)}{e^{a \cdot x} + 1}\]
    21. Simplified1.0

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

    if -6.221780243464724e-16 < (* a x)

    1. Initial program 44.6

      \[e^{a \cdot x} - 1\]
    2. Taylor expanded around 0 13.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. Simplified10.4

      \[\leadsto \color{blue}{\mathsf{fma}\left({x}^{2}, \mathsf{fma}\left(x, \frac{1}{6} \cdot {a}^{3}, \frac{1}{2} \cdot {a}^{2}\right), a \cdot x\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification7.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \cdot x \le -6.22178024346472369 \cdot 10^{-16}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{e^{\left(a \cdot x\right) \cdot 4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}, \frac{-\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right) + \frac{1}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}} \cdot \left(\left(-\frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right) + \frac{{1}^{4}}{\sqrt{\mathsf{fma}\left(1, 1, e^{2 \cdot \left(a \cdot x\right)}\right)}}\right)}{e^{a \cdot x} + 1}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left({x}^{2}, \mathsf{fma}\left(x, \frac{1}{6} \cdot {a}^{3}, \frac{1}{2} \cdot {a}^{2}\right), a \cdot x\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019198 +o rules:numerics
(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))