Average Error: 60.3 → 50.6
Time: 37.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 -173005857.2304000556468963623046875 \lor \neg \left(a \le 100503816208437458162455618952188928196600\right):\\ \;\;\;\;\frac{\varepsilon \cdot \left(\left({\left(e^{a + b}\right)}^{\varepsilon} - 1\right) + \left(\left(-1\right) + 1\right)\right)}{\sqrt[3]{{\left({\left(e^{a}\right)}^{\varepsilon} - 1\right)}^{3}} \cdot \mathsf{fma}\left(b, \varepsilon, {b}^{2} \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\mathsf{fma}\left(a, \varepsilon, {\varepsilon}^{2} \cdot \left(\frac{1}{2} \cdot {a}^{2} + \left(\frac{1}{6} \cdot {a}^{3}\right) \cdot \varepsilon\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 -173005857.2304000556468963623046875 \lor \neg \left(a \le 100503816208437458162455618952188928196600\right):\\
\;\;\;\;\frac{\varepsilon \cdot \left(\left({\left(e^{a + b}\right)}^{\varepsilon} - 1\right) + \left(\left(-1\right) + 1\right)\right)}{\sqrt[3]{{\left({\left(e^{a}\right)}^{\varepsilon} - 1\right)}^{3}} \cdot \mathsf{fma}\left(b, \varepsilon, {b}^{2} \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)}\\

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

\end{array}
double f(double a, double b, double eps) {
        double r92183 = eps;
        double r92184 = a;
        double r92185 = b;
        double r92186 = r92184 + r92185;
        double r92187 = r92186 * r92183;
        double r92188 = exp(r92187);
        double r92189 = 1.0;
        double r92190 = r92188 - r92189;
        double r92191 = r92183 * r92190;
        double r92192 = r92184 * r92183;
        double r92193 = exp(r92192);
        double r92194 = r92193 - r92189;
        double r92195 = r92185 * r92183;
        double r92196 = exp(r92195);
        double r92197 = r92196 - r92189;
        double r92198 = r92194 * r92197;
        double r92199 = r92191 / r92198;
        return r92199;
}

double f(double a, double b, double eps) {
        double r92200 = a;
        double r92201 = -173005857.23040006;
        bool r92202 = r92200 <= r92201;
        double r92203 = 1.0050381620843746e+41;
        bool r92204 = r92200 <= r92203;
        double r92205 = !r92204;
        bool r92206 = r92202 || r92205;
        double r92207 = eps;
        double r92208 = b;
        double r92209 = r92200 + r92208;
        double r92210 = exp(r92209);
        double r92211 = pow(r92210, r92207);
        double r92212 = 1.0;
        double r92213 = r92211 - r92212;
        double r92214 = -r92212;
        double r92215 = r92214 + r92212;
        double r92216 = r92213 + r92215;
        double r92217 = r92207 * r92216;
        double r92218 = exp(r92200);
        double r92219 = pow(r92218, r92207);
        double r92220 = r92219 - r92212;
        double r92221 = 3.0;
        double r92222 = pow(r92220, r92221);
        double r92223 = cbrt(r92222);
        double r92224 = 2.0;
        double r92225 = pow(r92208, r92224);
        double r92226 = 0.5;
        double r92227 = pow(r92207, r92224);
        double r92228 = r92226 * r92227;
        double r92229 = 0.16666666666666666;
        double r92230 = pow(r92207, r92221);
        double r92231 = r92229 * r92230;
        double r92232 = r92231 * r92208;
        double r92233 = r92228 + r92232;
        double r92234 = r92225 * r92233;
        double r92235 = fma(r92208, r92207, r92234);
        double r92236 = r92223 * r92235;
        double r92237 = r92217 / r92236;
        double r92238 = r92209 * r92207;
        double r92239 = exp(r92238);
        double r92240 = r92239 - r92212;
        double r92241 = r92207 * r92240;
        double r92242 = pow(r92200, r92224);
        double r92243 = r92226 * r92242;
        double r92244 = pow(r92200, r92221);
        double r92245 = r92229 * r92244;
        double r92246 = r92245 * r92207;
        double r92247 = r92243 + r92246;
        double r92248 = r92227 * r92247;
        double r92249 = fma(r92200, r92207, r92248);
        double r92250 = r92208 * r92207;
        double r92251 = exp(r92250);
        double r92252 = r92251 - r92212;
        double r92253 = r92249 * r92252;
        double r92254 = r92241 / r92253;
        double r92255 = r92206 ? r92237 : r92254;
        return r92255;
}

Error

Bits error versus a

Bits error versus b

Bits error versus eps

Target

Original60.3
Target15.0
Herbie50.6
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 2 regimes
  2. if a < -173005857.23040006 or 1.0050381620843746e+41 < a

    1. Initial program 55.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)}\]
    2. Taylor expanded around 0 50.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. Simplified47.7

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \color{blue}{\mathsf{fma}\left(b, \varepsilon, {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 add-cbrt-cube47.7

      \[\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 \mathsf{fma}\left(b, \varepsilon, {b}^{2} \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)}\]
    6. Simplified49.1

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\sqrt[3]{\color{blue}{{\left({\left(e^{a}\right)}^{\varepsilon} - 1\right)}^{3}}} \cdot \mathsf{fma}\left(b, \varepsilon, {b}^{2} \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt49.1

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - \color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}\right)}{\sqrt[3]{{\left({\left(e^{a}\right)}^{\varepsilon} - 1\right)}^{3}} \cdot \mathsf{fma}\left(b, \varepsilon, {b}^{2} \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)}\]
    9. Applied add-sqr-sqrt49.1

      \[\leadsto \frac{\varepsilon \cdot \left(\color{blue}{\sqrt{e^{\left(a + b\right) \cdot \varepsilon}} \cdot \sqrt{e^{\left(a + b\right) \cdot \varepsilon}}} - \left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}\right)}{\sqrt[3]{{\left({\left(e^{a}\right)}^{\varepsilon} - 1\right)}^{3}} \cdot \mathsf{fma}\left(b, \varepsilon, {b}^{2} \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)}\]
    10. Applied prod-diff49.1

      \[\leadsto \frac{\varepsilon \cdot \color{blue}{\left(\mathsf{fma}\left(\sqrt{e^{\left(a + b\right) \cdot \varepsilon}}, \sqrt{e^{\left(a + b\right) \cdot \varepsilon}}, -\sqrt[3]{1} \cdot \left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right)\right) + \mathsf{fma}\left(-\sqrt[3]{1}, \sqrt[3]{1} \cdot \sqrt[3]{1}, \sqrt[3]{1} \cdot \left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right)\right)\right)}}{\sqrt[3]{{\left({\left(e^{a}\right)}^{\varepsilon} - 1\right)}^{3}} \cdot \mathsf{fma}\left(b, \varepsilon, {b}^{2} \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)}\]
    11. Simplified42.1

      \[\leadsto \frac{\varepsilon \cdot \left(\color{blue}{\left({\left(e^{a + b}\right)}^{\varepsilon} - 1\right)} + \mathsf{fma}\left(-\sqrt[3]{1}, \sqrt[3]{1} \cdot \sqrt[3]{1}, \sqrt[3]{1} \cdot \left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right)\right)\right)}{\sqrt[3]{{\left({\left(e^{a}\right)}^{\varepsilon} - 1\right)}^{3}} \cdot \mathsf{fma}\left(b, \varepsilon, {b}^{2} \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)}\]
    12. Simplified42.1

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

    if -173005857.23040006 < a < 1.0050381620843746e+41

    1. Initial program 63.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. 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}{\mathsf{fma}\left(a, \varepsilon, {\varepsilon}^{2} \cdot \left(\frac{1}{2} \cdot {a}^{2} + \left(\frac{1}{6} \cdot {a}^{3}\right) \cdot \varepsilon\right)\right)} \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification50.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -173005857.2304000556468963623046875 \lor \neg \left(a \le 100503816208437458162455618952188928196600\right):\\ \;\;\;\;\frac{\varepsilon \cdot \left(\left({\left(e^{a + b}\right)}^{\varepsilon} - 1\right) + \left(\left(-1\right) + 1\right)\right)}{\sqrt[3]{{\left({\left(e^{a}\right)}^{\varepsilon} - 1\right)}^{3}} \cdot \mathsf{fma}\left(b, \varepsilon, {b}^{2} \cdot \left(\frac{1}{2} \cdot {\varepsilon}^{2} + \left(\frac{1}{6} \cdot {\varepsilon}^{3}\right) \cdot b\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\mathsf{fma}\left(a, \varepsilon, {\varepsilon}^{2} \cdot \left(\frac{1}{2} \cdot {a}^{2} + \left(\frac{1}{6} \cdot {a}^{3}\right) \cdot \varepsilon\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019303 +o rules:numerics
(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))))