Average Error: 60.3 → 53.8
Time: 12.6s
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 -6.317274345536705554494934198648981426267 \cdot 10^{196}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\frac{\left(-1 \cdot 1\right) + {\left(e^{a}\right)}^{\left(2 \cdot \varepsilon\right)}}{e^{a \cdot \varepsilon} + 1} \cdot \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)}\\ \mathbf{elif}\;a \le -5.631940663491904405136254441698421041501 \cdot 10^{81}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\log \left(e^{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\right)}\\ \mathbf{elif}\;a \le 38308603704447418368:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\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)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(\left(\sqrt[3]{e^{\left(a + b\right) \cdot \varepsilon} - 1} \cdot \sqrt[3]{e^{\left(a + b\right) \cdot \varepsilon} - 1}\right) \cdot \sqrt[3]{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) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\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 -6.317274345536705554494934198648981426267 \cdot 10^{196}:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\frac{\left(-1 \cdot 1\right) + {\left(e^{a}\right)}^{\left(2 \cdot \varepsilon\right)}}{e^{a \cdot \varepsilon} + 1} \cdot \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)}\\

\mathbf{elif}\;a \le -5.631940663491904405136254441698421041501 \cdot 10^{81}:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\log \left(e^{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\right)}\\

\mathbf{elif}\;a \le 38308603704447418368:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\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)}\\

\mathbf{else}:\\
\;\;\;\;\frac{\varepsilon \cdot \left(\left(\sqrt[3]{e^{\left(a + b\right) \cdot \varepsilon} - 1} \cdot \sqrt[3]{e^{\left(a + b\right) \cdot \varepsilon} - 1}\right) \cdot \sqrt[3]{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) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\\

\end{array}
double f(double a, double b, double eps) {
        double r118072 = eps;
        double r118073 = a;
        double r118074 = b;
        double r118075 = r118073 + r118074;
        double r118076 = r118075 * r118072;
        double r118077 = exp(r118076);
        double r118078 = 1.0;
        double r118079 = r118077 - r118078;
        double r118080 = r118072 * r118079;
        double r118081 = r118073 * r118072;
        double r118082 = exp(r118081);
        double r118083 = r118082 - r118078;
        double r118084 = r118074 * r118072;
        double r118085 = exp(r118084);
        double r118086 = r118085 - r118078;
        double r118087 = r118083 * r118086;
        double r118088 = r118080 / r118087;
        return r118088;
}

double f(double a, double b, double eps) {
        double r118089 = a;
        double r118090 = -6.3172743455367056e+196;
        bool r118091 = r118089 <= r118090;
        double r118092 = eps;
        double r118093 = b;
        double r118094 = r118089 + r118093;
        double r118095 = r118094 * r118092;
        double r118096 = exp(r118095);
        double r118097 = 1.0;
        double r118098 = r118096 - r118097;
        double r118099 = r118092 * r118098;
        double r118100 = r118097 * r118097;
        double r118101 = -r118100;
        double r118102 = exp(r118089);
        double r118103 = 2.0;
        double r118104 = r118103 * r118092;
        double r118105 = pow(r118102, r118104);
        double r118106 = r118101 + r118105;
        double r118107 = r118089 * r118092;
        double r118108 = exp(r118107);
        double r118109 = r118108 + r118097;
        double r118110 = r118106 / r118109;
        double r118111 = 0.16666666666666666;
        double r118112 = 3.0;
        double r118113 = pow(r118092, r118112);
        double r118114 = pow(r118093, r118112);
        double r118115 = r118113 * r118114;
        double r118116 = r118111 * r118115;
        double r118117 = 0.5;
        double r118118 = pow(r118092, r118103);
        double r118119 = pow(r118093, r118103);
        double r118120 = r118118 * r118119;
        double r118121 = r118117 * r118120;
        double r118122 = r118092 * r118093;
        double r118123 = r118121 + r118122;
        double r118124 = r118116 + r118123;
        double r118125 = r118110 * r118124;
        double r118126 = r118099 / r118125;
        double r118127 = -5.631940663491904e+81;
        bool r118128 = r118089 <= r118127;
        double r118129 = r118108 - r118097;
        double r118130 = r118093 * r118092;
        double r118131 = exp(r118130);
        double r118132 = r118131 - r118097;
        double r118133 = r118129 * r118132;
        double r118134 = exp(r118133);
        double r118135 = log(r118134);
        double r118136 = r118099 / r118135;
        double r118137 = 3.830860370444742e+19;
        bool r118138 = r118089 <= r118137;
        double r118139 = pow(r118089, r118112);
        double r118140 = r118139 * r118113;
        double r118141 = r118111 * r118140;
        double r118142 = pow(r118089, r118103);
        double r118143 = r118142 * r118118;
        double r118144 = r118117 * r118143;
        double r118145 = r118144 + r118107;
        double r118146 = r118141 + r118145;
        double r118147 = r118146 * r118132;
        double r118148 = r118099 / r118147;
        double r118149 = cbrt(r118098);
        double r118150 = r118149 * r118149;
        double r118151 = r118150 * r118149;
        double r118152 = r118092 * r118151;
        double r118153 = r118129 * r118124;
        double r118154 = r118152 / r118153;
        double r118155 = r118138 ? r118148 : r118154;
        double r118156 = r118128 ? r118136 : r118155;
        double r118157 = r118091 ? r118126 : r118156;
        return r118157;
}

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
Target14.3
Herbie53.8
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 4 regimes
  2. if a < -6.3172743455367056e+196

    1. Initial program 52.0

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

      \[\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. Using strategy rm
    4. Applied flip--40.2

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\frac{e^{a \cdot \varepsilon} \cdot e^{a \cdot \varepsilon} - 1 \cdot 1}{e^{a \cdot \varepsilon} + 1}} \cdot \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)}\]
    5. Simplified41.7

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\frac{\color{blue}{\left(-1 \cdot 1\right) + {\left(e^{a}\right)}^{\left(2 \cdot \varepsilon\right)}}}{e^{a \cdot \varepsilon} + 1} \cdot \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)}\]

    if -6.3172743455367056e+196 < a < -5.631940663491904e+81

    1. Initial program 55.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. Using strategy rm
    3. Applied add-log-exp55.9

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

    if -5.631940663491904e+81 < a < 3.830860370444742e+19

    1. Initial program 63.7

      \[\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.1

      \[\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)}\]

    if 3.830860370444742e+19 < a

    1. Initial program 55.0

      \[\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.8

      \[\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. Using strategy rm
    4. Applied add-cube-cbrt49.8

      \[\leadsto \frac{\varepsilon \cdot \color{blue}{\left(\left(\sqrt[3]{e^{\left(a + b\right) \cdot \varepsilon} - 1} \cdot \sqrt[3]{e^{\left(a + b\right) \cdot \varepsilon} - 1}\right) \cdot \sqrt[3]{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) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification53.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -6.317274345536705554494934198648981426267 \cdot 10^{196}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\frac{\left(-1 \cdot 1\right) + {\left(e^{a}\right)}^{\left(2 \cdot \varepsilon\right)}}{e^{a \cdot \varepsilon} + 1} \cdot \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)}\\ \mathbf{elif}\;a \le -5.631940663491904405136254441698421041501 \cdot 10^{81}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\log \left(e^{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\right)}\\ \mathbf{elif}\;a \le 38308603704447418368:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\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)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(\left(\sqrt[3]{e^{\left(a + b\right) \cdot \varepsilon} - 1} \cdot \sqrt[3]{e^{\left(a + b\right) \cdot \varepsilon} - 1}\right) \cdot \sqrt[3]{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) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019347 
(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))))