Average Error: 29.6 → 10.0
Time: 4.3s
Precision: 64
\[e^{a \cdot x} - 1\]
\[\begin{array}{l} \mathbf{if}\;a \cdot x \le -4.366667534125541193719901317122436071116 \cdot 10^{-30}:\\ \;\;\;\;\frac{\frac{\left(\sqrt{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3}} + {\left(\sqrt{{1}^{3}}\right)}^{3}\right) \cdot \left(\sqrt{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3}} - {\left(\sqrt{{1}^{3}}\right)}^{3}\right)}{\left({\left(e^{a \cdot x}\right)}^{6} + {1}^{6}\right) + e^{\left(a \cdot x\right) \cdot 3} \cdot {1}^{3}}}{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}\\ \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 -4.366667534125541193719901317122436071116 \cdot 10^{-30}:\\
\;\;\;\;\frac{\frac{\left(\sqrt{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3}} + {\left(\sqrt{{1}^{3}}\right)}^{3}\right) \cdot \left(\sqrt{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3}} - {\left(\sqrt{{1}^{3}}\right)}^{3}\right)}{\left({\left(e^{a \cdot x}\right)}^{6} + {1}^{6}\right) + e^{\left(a \cdot x\right) \cdot 3} \cdot {1}^{3}}}{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}\\

\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 r91835 = a;
        double r91836 = x;
        double r91837 = r91835 * r91836;
        double r91838 = exp(r91837);
        double r91839 = 1.0;
        double r91840 = r91838 - r91839;
        return r91840;
}

double f(double a, double x) {
        double r91841 = a;
        double r91842 = x;
        double r91843 = r91841 * r91842;
        double r91844 = -4.366667534125541e-30;
        bool r91845 = r91843 <= r91844;
        double r91846 = 3.0;
        double r91847 = r91843 * r91846;
        double r91848 = exp(r91847);
        double r91849 = pow(r91848, r91846);
        double r91850 = sqrt(r91849);
        double r91851 = 1.0;
        double r91852 = pow(r91851, r91846);
        double r91853 = sqrt(r91852);
        double r91854 = pow(r91853, r91846);
        double r91855 = r91850 + r91854;
        double r91856 = r91850 - r91854;
        double r91857 = r91855 * r91856;
        double r91858 = exp(r91843);
        double r91859 = 6.0;
        double r91860 = pow(r91858, r91859);
        double r91861 = pow(r91851, r91859);
        double r91862 = r91860 + r91861;
        double r91863 = r91848 * r91852;
        double r91864 = r91862 + r91863;
        double r91865 = r91857 / r91864;
        double r91866 = r91858 + r91851;
        double r91867 = r91858 * r91866;
        double r91868 = r91851 * r91851;
        double r91869 = r91867 + r91868;
        double r91870 = r91865 / r91869;
        double r91871 = 0.5;
        double r91872 = 2.0;
        double r91873 = pow(r91841, r91872);
        double r91874 = r91871 * r91873;
        double r91875 = r91874 * r91842;
        double r91876 = r91841 + r91875;
        double r91877 = r91842 * r91876;
        double r91878 = 0.16666666666666666;
        double r91879 = pow(r91841, r91846);
        double r91880 = pow(r91842, r91846);
        double r91881 = r91879 * r91880;
        double r91882 = r91878 * r91881;
        double r91883 = r91877 + r91882;
        double r91884 = r91845 ? r91870 : r91883;
        return r91884;
}

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
Herbie10.0
\[\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.366667534125541e-30

    1. Initial program 3.5

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

      \[\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. Simplified3.6

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

      \[\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--3.5

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

      \[\leadsto \frac{\frac{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3} - {\left({1}^{3}\right)}^{3}}{\color{blue}{\left({\left(e^{a \cdot x}\right)}^{6} + {1}^{6}\right) + e^{\left(a \cdot x\right) \cdot 3} \cdot {1}^{3}}}}{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}\]
    10. Using strategy rm
    11. Applied add-sqr-sqrt3.5

      \[\leadsto \frac{\frac{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3} - {\color{blue}{\left(\sqrt{{1}^{3}} \cdot \sqrt{{1}^{3}}\right)}}^{3}}{\left({\left(e^{a \cdot x}\right)}^{6} + {1}^{6}\right) + e^{\left(a \cdot x\right) \cdot 3} \cdot {1}^{3}}}{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}\]
    12. Applied unpow-prod-down3.5

      \[\leadsto \frac{\frac{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3} - \color{blue}{{\left(\sqrt{{1}^{3}}\right)}^{3} \cdot {\left(\sqrt{{1}^{3}}\right)}^{3}}}{\left({\left(e^{a \cdot x}\right)}^{6} + {1}^{6}\right) + e^{\left(a \cdot x\right) \cdot 3} \cdot {1}^{3}}}{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}\]
    13. Applied add-sqr-sqrt3.5

      \[\leadsto \frac{\frac{\color{blue}{\sqrt{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3}} \cdot \sqrt{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3}}} - {\left(\sqrt{{1}^{3}}\right)}^{3} \cdot {\left(\sqrt{{1}^{3}}\right)}^{3}}{\left({\left(e^{a \cdot x}\right)}^{6} + {1}^{6}\right) + e^{\left(a \cdot x\right) \cdot 3} \cdot {1}^{3}}}{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}\]
    14. Applied difference-of-squares3.5

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

    if -4.366667534125541e-30 < (* a x)

    1. Initial program 44.0

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

      \[\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. Simplified13.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \cdot x \le -4.366667534125541193719901317122436071116 \cdot 10^{-30}:\\ \;\;\;\;\frac{\frac{\left(\sqrt{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3}} + {\left(\sqrt{{1}^{3}}\right)}^{3}\right) \cdot \left(\sqrt{{\left(e^{\left(a \cdot x\right) \cdot 3}\right)}^{3}} - {\left(\sqrt{{1}^{3}}\right)}^{3}\right)}{\left({\left(e^{a \cdot x}\right)}^{6} + {1}^{6}\right) + e^{\left(a \cdot x\right) \cdot 3} \cdot {1}^{3}}}{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}\\ \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 2019362 
(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))