Average Error: 28.9 → 14.4
Time: 10.5s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \le -1.8775905144238698 \cdot 10^{82} \lor \neg \left(a \le 6913276300.6773567\right):\\ \;\;\;\;\frac{\frac{\left(\sqrt{e^{\left(a \cdot x\right) \cdot 6}} + \sqrt{{1}^{6}}\right) \cdot \left(\sqrt{e^{\left(a \cdot x\right) \cdot 6}} - \sqrt{{1}^{6}}\right)}{\mathsf{fma}\left(1 \cdot 1, \mathsf{fma}\left(1, 1, e^{2 \cdot \left(x \cdot a\right)}\right), e^{\left(a \cdot x\right) \cdot 4}\right)}}{1 + e^{x \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{18 \cdot {\left(x \cdot a\right)}^{2} + \mathsf{fma}\left(36, {\left(x \cdot a\right)}^{3}, 6 \cdot \left(a \cdot x\right)\right)}{\mathsf{fma}\left(1 \cdot 1, \mathsf{fma}\left(1, 1, e^{2 \cdot \left(x \cdot a\right)}\right), e^{\left(a \cdot x\right) \cdot 4}\right)}}{1 + e^{x \cdot a}}\\ \end{array}\]
e^{a \cdot x} - 1
\begin{array}{l}
\mathbf{if}\;a \le -1.8775905144238698 \cdot 10^{82} \lor \neg \left(a \le 6913276300.6773567\right):\\
\;\;\;\;\frac{\frac{\left(\sqrt{e^{\left(a \cdot x\right) \cdot 6}} + \sqrt{{1}^{6}}\right) \cdot \left(\sqrt{e^{\left(a \cdot x\right) \cdot 6}} - \sqrt{{1}^{6}}\right)}{\mathsf{fma}\left(1 \cdot 1, \mathsf{fma}\left(1, 1, e^{2 \cdot \left(x \cdot a\right)}\right), e^{\left(a \cdot x\right) \cdot 4}\right)}}{1 + e^{x \cdot a}}\\

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

\end{array}
double f(double a, double x) {
        double r97807 = a;
        double r97808 = x;
        double r97809 = r97807 * r97808;
        double r97810 = exp(r97809);
        double r97811 = 1.0;
        double r97812 = r97810 - r97811;
        return r97812;
}

double f(double a, double x) {
        double r97813 = a;
        double r97814 = -1.8775905144238698e+82;
        bool r97815 = r97813 <= r97814;
        double r97816 = 6913276300.677357;
        bool r97817 = r97813 <= r97816;
        double r97818 = !r97817;
        bool r97819 = r97815 || r97818;
        double r97820 = x;
        double r97821 = r97813 * r97820;
        double r97822 = 6.0;
        double r97823 = r97821 * r97822;
        double r97824 = exp(r97823);
        double r97825 = sqrt(r97824);
        double r97826 = 1.0;
        double r97827 = pow(r97826, r97822);
        double r97828 = sqrt(r97827);
        double r97829 = r97825 + r97828;
        double r97830 = r97825 - r97828;
        double r97831 = r97829 * r97830;
        double r97832 = r97826 * r97826;
        double r97833 = 2.0;
        double r97834 = r97820 * r97813;
        double r97835 = r97833 * r97834;
        double r97836 = exp(r97835);
        double r97837 = fma(r97826, r97826, r97836);
        double r97838 = 4.0;
        double r97839 = r97821 * r97838;
        double r97840 = exp(r97839);
        double r97841 = fma(r97832, r97837, r97840);
        double r97842 = r97831 / r97841;
        double r97843 = exp(r97834);
        double r97844 = r97826 + r97843;
        double r97845 = r97842 / r97844;
        double r97846 = 18.0;
        double r97847 = pow(r97834, r97833);
        double r97848 = r97846 * r97847;
        double r97849 = 36.0;
        double r97850 = 3.0;
        double r97851 = pow(r97834, r97850);
        double r97852 = r97822 * r97821;
        double r97853 = fma(r97849, r97851, r97852);
        double r97854 = r97848 + r97853;
        double r97855 = r97854 / r97841;
        double r97856 = r97855 / r97844;
        double r97857 = r97819 ? r97845 : r97856;
        return r97857;
}

Error

Bits error versus a

Bits error versus x

Target

Original28.9
Target0.2
Herbie14.4
\[\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 < -1.8775905144238698e+82 or 6913276300.677357 < a

    1. Initial program 20.2

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

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

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

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

      \[\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)}}}{1 + e^{x \cdot a}}\]
    8. Simplified20.1

      \[\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)}}{1 + e^{x \cdot a}}\]
    9. Simplified20.1

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

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

      \[\leadsto \frac{\frac{\color{blue}{\sqrt{e^{\left(a \cdot x\right) \cdot 6}} \cdot \sqrt{e^{\left(a \cdot x\right) \cdot 6}}} - \sqrt{{1}^{6}} \cdot \sqrt{{1}^{6}}}{\mathsf{fma}\left(1 \cdot 1, \mathsf{fma}\left(1, 1, e^{2 \cdot \left(x \cdot a\right)}\right), e^{\left(a \cdot x\right) \cdot 4}\right)}}{1 + e^{x \cdot a}}\]
    13. Applied difference-of-squares20.2

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

    if -1.8775905144238698e+82 < a < 6913276300.677357

    1. Initial program 33.5

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

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

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

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

      \[\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)}}}{1 + e^{x \cdot a}}\]
    8. Simplified33.4

      \[\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)}}{1 + e^{x \cdot a}}\]
    9. Simplified33.4

      \[\leadsto \frac{\frac{e^{\left(a \cdot x\right) \cdot 6} - {1}^{6}}{\color{blue}{\mathsf{fma}\left(1 \cdot 1, \mathsf{fma}\left(1, 1, e^{2 \cdot \left(x \cdot a\right)}\right), e^{\left(a \cdot x\right) \cdot 4}\right)}}}{1 + e^{x \cdot a}}\]
    10. Taylor expanded around 0 18.7

      \[\leadsto \frac{\frac{\color{blue}{18 \cdot \left({a}^{2} \cdot {x}^{2}\right) + \left(36 \cdot \left({a}^{3} \cdot {x}^{3}\right) + 6 \cdot \left(a \cdot x\right)\right)}}{\mathsf{fma}\left(1 \cdot 1, \mathsf{fma}\left(1, 1, e^{2 \cdot \left(x \cdot a\right)}\right), e^{\left(a \cdot x\right) \cdot 4}\right)}}{1 + e^{x \cdot a}}\]
    11. Simplified15.5

      \[\leadsto \frac{\frac{\color{blue}{\mathsf{fma}\left(18 \cdot \left(a \cdot a\right), x \cdot x, \mathsf{fma}\left(36, {\left(x \cdot a\right)}^{3}, 6 \cdot \left(a \cdot x\right)\right)\right)}}{\mathsf{fma}\left(1 \cdot 1, \mathsf{fma}\left(1, 1, e^{2 \cdot \left(x \cdot a\right)}\right), e^{\left(a \cdot x\right) \cdot 4}\right)}}{1 + e^{x \cdot a}}\]
    12. Using strategy rm
    13. Applied fma-udef15.5

      \[\leadsto \frac{\frac{\color{blue}{\left(18 \cdot \left(a \cdot a\right)\right) \cdot \left(x \cdot x\right) + \mathsf{fma}\left(36, {\left(x \cdot a\right)}^{3}, 6 \cdot \left(a \cdot x\right)\right)}}{\mathsf{fma}\left(1 \cdot 1, \mathsf{fma}\left(1, 1, e^{2 \cdot \left(x \cdot a\right)}\right), e^{\left(a \cdot x\right) \cdot 4}\right)}}{1 + e^{x \cdot a}}\]
    14. Simplified11.3

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

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

Reproduce

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