Average Error: 60.4 → 52.4
Time: 16.2s
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.132327481851413 \cdot 10^{26} \lor \neg \left(a \le 6.3645685997601476 \cdot 10^{46}\right):\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(\varepsilon \cdot b + b \cdot \left(b \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\varepsilon \cdot \left(a + \left(\frac{1}{2} \cdot {a}^{2}\right) \cdot \varepsilon\right) + \frac{1}{6} \cdot \left({a}^{3} \cdot {\varepsilon}^{3}\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.132327481851413 \cdot 10^{26} \lor \neg \left(a \le 6.3645685997601476 \cdot 10^{46}\right):\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(\varepsilon \cdot b + b \cdot \left(b \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)\right)}\\

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

\end{array}
double f(double a, double b, double eps) {
        double r95100 = eps;
        double r95101 = a;
        double r95102 = b;
        double r95103 = r95101 + r95102;
        double r95104 = r95103 * r95100;
        double r95105 = exp(r95104);
        double r95106 = 1.0;
        double r95107 = r95105 - r95106;
        double r95108 = r95100 * r95107;
        double r95109 = r95101 * r95100;
        double r95110 = exp(r95109);
        double r95111 = r95110 - r95106;
        double r95112 = r95102 * r95100;
        double r95113 = exp(r95112);
        double r95114 = r95113 - r95106;
        double r95115 = r95111 * r95114;
        double r95116 = r95108 / r95115;
        return r95116;
}

double f(double a, double b, double eps) {
        double r95117 = a;
        double r95118 = -2.132327481851413e+26;
        bool r95119 = r95117 <= r95118;
        double r95120 = 6.364568599760148e+46;
        bool r95121 = r95117 <= r95120;
        double r95122 = !r95121;
        bool r95123 = r95119 || r95122;
        double r95124 = eps;
        double r95125 = b;
        double r95126 = r95117 + r95125;
        double r95127 = r95126 * r95124;
        double r95128 = exp(r95127);
        double r95129 = 1.0;
        double r95130 = r95128 - r95129;
        double r95131 = r95124 * r95130;
        double r95132 = r95117 * r95124;
        double r95133 = exp(r95132);
        double r95134 = r95133 - r95129;
        double r95135 = r95124 * r95125;
        double r95136 = 0.5;
        double r95137 = 2.0;
        double r95138 = pow(r95124, r95137);
        double r95139 = r95136 * r95138;
        double r95140 = 0.16666666666666666;
        double r95141 = 3.0;
        double r95142 = pow(r95124, r95141);
        double r95143 = r95140 * r95142;
        double r95144 = r95143 * r95125;
        double r95145 = r95139 + r95144;
        double r95146 = r95125 * r95145;
        double r95147 = r95125 * r95146;
        double r95148 = r95135 + r95147;
        double r95149 = r95134 * r95148;
        double r95150 = r95131 / r95149;
        double r95151 = pow(r95117, r95137);
        double r95152 = r95136 * r95151;
        double r95153 = r95152 * r95124;
        double r95154 = r95117 + r95153;
        double r95155 = r95124 * r95154;
        double r95156 = pow(r95117, r95141);
        double r95157 = r95156 * r95142;
        double r95158 = r95140 * r95157;
        double r95159 = r95155 + r95158;
        double r95160 = r95125 * r95124;
        double r95161 = exp(r95160);
        double r95162 = r95161 - r95129;
        double r95163 = r95159 * r95162;
        double r95164 = r95131 / r95163;
        double r95165 = r95123 ? r95150 : r95164;
        return r95165;
}

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.4
Target15.1
Herbie52.4
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 2 regimes
  2. if a < -2.132327481851413e+26 or 6.364568599760148e+46 < a

    1. Initial program 54.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 49.1

      \[\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. Simplified46.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(\varepsilon \cdot b + {b}^{2} \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)}}\]
    4. Using strategy rm
    5. Applied unpow246.4

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

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

    if -2.132327481851413e+26 < a < 6.364568599760148e+46

    1. Initial program 63.8

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -2.132327481851413 \cdot 10^{26} \lor \neg \left(a \le 6.3645685997601476 \cdot 10^{46}\right):\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(\varepsilon \cdot b + b \cdot \left(b \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\varepsilon \cdot \left(a + \left(\frac{1}{2} \cdot {a}^{2}\right) \cdot \varepsilon\right) + \frac{1}{6} \cdot \left({a}^{3} \cdot {\varepsilon}^{3}\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\\ \end{array}\]

Reproduce

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