Average Error: 60.3 → 54.1
Time: 33.0s
Precision: 64
\[-1 \lt \varepsilon \land \varepsilon \lt 1\]
\[\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
\[\begin{array}{l} \mathbf{if}\;a \le -2.149494606308064458906089789806896623859 \cdot 10^{206}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\sqrt[3]{{\left(\left(e^{\varepsilon \cdot b} - 1\right) \cdot \left(e^{a \cdot \varepsilon} - 1\right)\right)}^{3}}}\\ \mathbf{elif}\;a \le -42654372502725921665725083421119241781250 \lor \neg \left(a \le 1.862763256825556893564988492089441740766 \cdot 10^{124}\right):\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(\frac{1}{6} \cdot \left({\varepsilon}^{3} \cdot {b}^{3}\right) + b \cdot \left(\varepsilon + \left(\frac{1}{2} \cdot {\varepsilon}^{2}\right) \cdot b\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\frac{1}{6} \cdot {\left(\varepsilon \cdot a\right)}^{3} + \varepsilon \cdot \left(\left(\frac{1}{2} \cdot {a}^{2}\right) \cdot \varepsilon + a\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\\ \end{array}\]
\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}
\begin{array}{l}
\mathbf{if}\;a \le -2.149494606308064458906089789806896623859 \cdot 10^{206}:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\sqrt[3]{{\left(\left(e^{\varepsilon \cdot b} - 1\right) \cdot \left(e^{a \cdot \varepsilon} - 1\right)\right)}^{3}}}\\

\mathbf{elif}\;a \le -42654372502725921665725083421119241781250 \lor \neg \left(a \le 1.862763256825556893564988492089441740766 \cdot 10^{124}\right):\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(\frac{1}{6} \cdot \left({\varepsilon}^{3} \cdot {b}^{3}\right) + b \cdot \left(\varepsilon + \left(\frac{1}{2} \cdot {\varepsilon}^{2}\right) \cdot b\right)\right)}\\

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

\end{array}
double f(double a, double b, double eps) {
        double r107783 = eps;
        double r107784 = a;
        double r107785 = b;
        double r107786 = r107784 + r107785;
        double r107787 = r107786 * r107783;
        double r107788 = exp(r107787);
        double r107789 = 1.0;
        double r107790 = r107788 - r107789;
        double r107791 = r107783 * r107790;
        double r107792 = r107784 * r107783;
        double r107793 = exp(r107792);
        double r107794 = r107793 - r107789;
        double r107795 = r107785 * r107783;
        double r107796 = exp(r107795);
        double r107797 = r107796 - r107789;
        double r107798 = r107794 * r107797;
        double r107799 = r107791 / r107798;
        return r107799;
}

double f(double a, double b, double eps) {
        double r107800 = a;
        double r107801 = -2.1494946063080645e+206;
        bool r107802 = r107800 <= r107801;
        double r107803 = eps;
        double r107804 = b;
        double r107805 = r107800 + r107804;
        double r107806 = r107805 * r107803;
        double r107807 = exp(r107806);
        double r107808 = 1.0;
        double r107809 = r107807 - r107808;
        double r107810 = r107803 * r107809;
        double r107811 = r107803 * r107804;
        double r107812 = exp(r107811);
        double r107813 = r107812 - r107808;
        double r107814 = r107800 * r107803;
        double r107815 = exp(r107814);
        double r107816 = r107815 - r107808;
        double r107817 = r107813 * r107816;
        double r107818 = 3.0;
        double r107819 = pow(r107817, r107818);
        double r107820 = cbrt(r107819);
        double r107821 = r107810 / r107820;
        double r107822 = -4.265437250272592e+40;
        bool r107823 = r107800 <= r107822;
        double r107824 = 1.862763256825557e+124;
        bool r107825 = r107800 <= r107824;
        double r107826 = !r107825;
        bool r107827 = r107823 || r107826;
        double r107828 = 0.16666666666666666;
        double r107829 = pow(r107803, r107818);
        double r107830 = pow(r107804, r107818);
        double r107831 = r107829 * r107830;
        double r107832 = r107828 * r107831;
        double r107833 = 0.5;
        double r107834 = 2.0;
        double r107835 = pow(r107803, r107834);
        double r107836 = r107833 * r107835;
        double r107837 = r107836 * r107804;
        double r107838 = r107803 + r107837;
        double r107839 = r107804 * r107838;
        double r107840 = r107832 + r107839;
        double r107841 = r107816 * r107840;
        double r107842 = r107810 / r107841;
        double r107843 = r107803 * r107800;
        double r107844 = pow(r107843, r107818);
        double r107845 = r107828 * r107844;
        double r107846 = pow(r107800, r107834);
        double r107847 = r107833 * r107846;
        double r107848 = r107847 * r107803;
        double r107849 = r107848 + r107800;
        double r107850 = r107803 * r107849;
        double r107851 = r107845 + r107850;
        double r107852 = r107804 * r107803;
        double r107853 = exp(r107852);
        double r107854 = r107853 - r107808;
        double r107855 = r107851 * r107854;
        double r107856 = r107810 / r107855;
        double r107857 = r107827 ? r107842 : r107856;
        double r107858 = r107802 ? r107821 : r107857;
        return r107858;
}

Error

Bits error versus a

Bits error versus b

Bits error versus eps

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original60.3
Target15.0
Herbie54.1
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 3 regimes
  2. if a < -2.1494946063080645e+206

    1. Initial program 48.9

      \[\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    2. Using strategy rm
    3. Applied add-cbrt-cube48.9

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \color{blue}{\sqrt[3]{\left(\left(e^{b \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}}}\]
    4. Applied add-cbrt-cube48.9

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\sqrt[3]{\left(\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{a \cdot \varepsilon} - 1\right)\right) \cdot \left(e^{a \cdot \varepsilon} - 1\right)}} \cdot \sqrt[3]{\left(\left(e^{b \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}}\]
    5. Applied cbrt-unprod48.9

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\sqrt[3]{\left(\left(\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{a \cdot \varepsilon} - 1\right)\right) \cdot \left(e^{a \cdot \varepsilon} - 1\right)\right) \cdot \left(\left(\left(e^{b \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)\right)}}}\]
    6. Simplified48.9

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

    if -2.1494946063080645e+206 < a < -4.265437250272592e+40 or 1.862763256825557e+124 < a

    1. Initial program 54.6

      \[\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    2. Taylor expanded around 0 49.4

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \color{blue}{\left(\frac{1}{6} \cdot \left({\varepsilon}^{3} \cdot {b}^{3}\right) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}}\]
    3. Simplified48.9

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

    if -4.265437250272592e+40 < a < 1.862763256825557e+124

    1. Initial program 63.3

      \[\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    2. Taylor expanded around 0 56.4

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\left(\frac{1}{6} \cdot \left({a}^{3} \cdot {\varepsilon}^{3}\right) + \left(\frac{1}{2} \cdot \left({a}^{2} \cdot {\varepsilon}^{2}\right) + a \cdot \varepsilon\right)\right)} \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    3. Simplified56.4

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\left(\frac{1}{6} \cdot \left({a}^{3} \cdot {\varepsilon}^{3}\right) + \varepsilon \cdot \left(\left(\frac{1}{2} \cdot {a}^{2}\right) \cdot \varepsilon + a\right)\right)} \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    4. Using strategy rm
    5. Applied pow-prod-down56.3

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\frac{1}{6} \cdot \color{blue}{{\left(a \cdot \varepsilon\right)}^{3}} + \varepsilon \cdot \left(\left(\frac{1}{2} \cdot {a}^{2}\right) \cdot \varepsilon + a\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    6. Simplified56.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -2.149494606308064458906089789806896623859 \cdot 10^{206}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\sqrt[3]{{\left(\left(e^{\varepsilon \cdot b} - 1\right) \cdot \left(e^{a \cdot \varepsilon} - 1\right)\right)}^{3}}}\\ \mathbf{elif}\;a \le -42654372502725921665725083421119241781250 \lor \neg \left(a \le 1.862763256825556893564988492089441740766 \cdot 10^{124}\right):\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(\frac{1}{6} \cdot \left({\varepsilon}^{3} \cdot {b}^{3}\right) + b \cdot \left(\varepsilon + \left(\frac{1}{2} \cdot {\varepsilon}^{2}\right) \cdot b\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\frac{1}{6} \cdot {\left(\varepsilon \cdot a\right)}^{3} + \varepsilon \cdot \left(\left(\frac{1}{2} \cdot {a}^{2}\right) \cdot \varepsilon + a\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019303 
(FPCore (a b eps)
  :name "expq3 (problem 3.4.2)"
  :precision binary64
  :pre (and (< -1 eps) (< eps 1))

  :herbie-target
  (/ (+ a b) (* a b))

  (/ (* eps (- (exp (* (+ a b) eps)) 1)) (* (- (exp (* a eps)) 1) (- (exp (* b eps)) 1))))