Average Error: 60.3 → 54.1
Time: 32.8s
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 r82658 = eps;
        double r82659 = a;
        double r82660 = b;
        double r82661 = r82659 + r82660;
        double r82662 = r82661 * r82658;
        double r82663 = exp(r82662);
        double r82664 = 1.0;
        double r82665 = r82663 - r82664;
        double r82666 = r82658 * r82665;
        double r82667 = r82659 * r82658;
        double r82668 = exp(r82667);
        double r82669 = r82668 - r82664;
        double r82670 = r82660 * r82658;
        double r82671 = exp(r82670);
        double r82672 = r82671 - r82664;
        double r82673 = r82669 * r82672;
        double r82674 = r82666 / r82673;
        return r82674;
}

double f(double a, double b, double eps) {
        double r82675 = a;
        double r82676 = -2.1494946063080645e+206;
        bool r82677 = r82675 <= r82676;
        double r82678 = eps;
        double r82679 = b;
        double r82680 = r82675 + r82679;
        double r82681 = r82680 * r82678;
        double r82682 = exp(r82681);
        double r82683 = 1.0;
        double r82684 = r82682 - r82683;
        double r82685 = r82678 * r82684;
        double r82686 = r82678 * r82679;
        double r82687 = exp(r82686);
        double r82688 = r82687 - r82683;
        double r82689 = r82675 * r82678;
        double r82690 = exp(r82689);
        double r82691 = r82690 - r82683;
        double r82692 = r82688 * r82691;
        double r82693 = 3.0;
        double r82694 = pow(r82692, r82693);
        double r82695 = cbrt(r82694);
        double r82696 = r82685 / r82695;
        double r82697 = -4.265437250272592e+40;
        bool r82698 = r82675 <= r82697;
        double r82699 = 1.862763256825557e+124;
        bool r82700 = r82675 <= r82699;
        double r82701 = !r82700;
        bool r82702 = r82698 || r82701;
        double r82703 = 0.16666666666666666;
        double r82704 = pow(r82678, r82693);
        double r82705 = pow(r82679, r82693);
        double r82706 = r82704 * r82705;
        double r82707 = r82703 * r82706;
        double r82708 = 0.5;
        double r82709 = 2.0;
        double r82710 = pow(r82678, r82709);
        double r82711 = r82708 * r82710;
        double r82712 = r82711 * r82679;
        double r82713 = r82678 + r82712;
        double r82714 = r82679 * r82713;
        double r82715 = r82707 + r82714;
        double r82716 = r82691 * r82715;
        double r82717 = r82685 / r82716;
        double r82718 = r82678 * r82675;
        double r82719 = pow(r82718, r82693);
        double r82720 = r82703 * r82719;
        double r82721 = pow(r82675, r82709);
        double r82722 = r82708 * r82721;
        double r82723 = r82722 * r82678;
        double r82724 = r82723 + r82675;
        double r82725 = r82678 * r82724;
        double r82726 = r82720 + r82725;
        double r82727 = r82679 * r82678;
        double r82728 = exp(r82727);
        double r82729 = r82728 - r82683;
        double r82730 = r82726 * r82729;
        double r82731 = r82685 / r82730;
        double r82732 = r82702 ? r82717 : r82731;
        double r82733 = r82677 ? r82696 : r82732;
        return r82733;
}

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))))