Average Error: 60.6 → 52.4
Time: 13.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 -346828314544410.562:\\ \;\;\;\;\frac{\varepsilon \cdot \frac{\mathsf{fma}\left(-1, 1, {\left(e^{a + b}\right)}^{\left(2 \cdot \varepsilon\right)}\right)}{e^{\left(a + b\right) \cdot \varepsilon} + 1}}{\frac{\mathsf{fma}\left(-1, 1, {\left(e^{a}\right)}^{\left(2 \cdot \varepsilon\right)}\right)}{e^{a \cdot \varepsilon} + 1} \cdot \mathsf{fma}\left(\frac{1}{6}, {\varepsilon}^{3} \cdot {b}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}\\ \mathbf{elif}\;a \le 3.5459178958752838 \cdot 10^{64}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\mathsf{fma}\left(\frac{1}{6}, {a}^{3} \cdot {\varepsilon}^{3}, \mathsf{fma}\left(\frac{1}{2}, {a}^{2} \cdot {\varepsilon}^{2}, a \cdot \varepsilon\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \mathsf{fma}\left(\frac{1}{6}, \left(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot b, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \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 -346828314544410.562:\\
\;\;\;\;\frac{\varepsilon \cdot \frac{\mathsf{fma}\left(-1, 1, {\left(e^{a + b}\right)}^{\left(2 \cdot \varepsilon\right)}\right)}{e^{\left(a + b\right) \cdot \varepsilon} + 1}}{\frac{\mathsf{fma}\left(-1, 1, {\left(e^{a}\right)}^{\left(2 \cdot \varepsilon\right)}\right)}{e^{a \cdot \varepsilon} + 1} \cdot \mathsf{fma}\left(\frac{1}{6}, {\varepsilon}^{3} \cdot {b}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}\\

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

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

\end{array}
double f(double a, double b, double eps) {
        double r79507 = eps;
        double r79508 = a;
        double r79509 = b;
        double r79510 = r79508 + r79509;
        double r79511 = r79510 * r79507;
        double r79512 = exp(r79511);
        double r79513 = 1.0;
        double r79514 = r79512 - r79513;
        double r79515 = r79507 * r79514;
        double r79516 = r79508 * r79507;
        double r79517 = exp(r79516);
        double r79518 = r79517 - r79513;
        double r79519 = r79509 * r79507;
        double r79520 = exp(r79519);
        double r79521 = r79520 - r79513;
        double r79522 = r79518 * r79521;
        double r79523 = r79515 / r79522;
        return r79523;
}

double f(double a, double b, double eps) {
        double r79524 = a;
        double r79525 = -346828314544410.56;
        bool r79526 = r79524 <= r79525;
        double r79527 = eps;
        double r79528 = 1.0;
        double r79529 = -r79528;
        double r79530 = b;
        double r79531 = r79524 + r79530;
        double r79532 = exp(r79531);
        double r79533 = 2.0;
        double r79534 = r79533 * r79527;
        double r79535 = pow(r79532, r79534);
        double r79536 = fma(r79529, r79528, r79535);
        double r79537 = r79531 * r79527;
        double r79538 = exp(r79537);
        double r79539 = r79538 + r79528;
        double r79540 = r79536 / r79539;
        double r79541 = r79527 * r79540;
        double r79542 = exp(r79524);
        double r79543 = pow(r79542, r79534);
        double r79544 = fma(r79529, r79528, r79543);
        double r79545 = r79524 * r79527;
        double r79546 = exp(r79545);
        double r79547 = r79546 + r79528;
        double r79548 = r79544 / r79547;
        double r79549 = 0.16666666666666666;
        double r79550 = 3.0;
        double r79551 = pow(r79527, r79550);
        double r79552 = pow(r79530, r79550);
        double r79553 = r79551 * r79552;
        double r79554 = 0.5;
        double r79555 = pow(r79527, r79533);
        double r79556 = pow(r79530, r79533);
        double r79557 = r79555 * r79556;
        double r79558 = r79527 * r79530;
        double r79559 = fma(r79554, r79557, r79558);
        double r79560 = fma(r79549, r79553, r79559);
        double r79561 = r79548 * r79560;
        double r79562 = r79541 / r79561;
        double r79563 = 3.545917895875284e+64;
        bool r79564 = r79524 <= r79563;
        double r79565 = r79538 - r79528;
        double r79566 = r79527 * r79565;
        double r79567 = pow(r79524, r79550);
        double r79568 = r79567 * r79551;
        double r79569 = pow(r79524, r79533);
        double r79570 = r79569 * r79555;
        double r79571 = fma(r79554, r79570, r79545);
        double r79572 = fma(r79549, r79568, r79571);
        double r79573 = r79530 * r79527;
        double r79574 = exp(r79573);
        double r79575 = r79574 - r79528;
        double r79576 = r79572 * r79575;
        double r79577 = r79566 / r79576;
        double r79578 = r79546 - r79528;
        double r79579 = r79551 * r79530;
        double r79580 = r79579 * r79530;
        double r79581 = r79580 * r79530;
        double r79582 = fma(r79549, r79581, r79559);
        double r79583 = r79578 * r79582;
        double r79584 = r79566 / r79583;
        double r79585 = r79564 ? r79577 : r79584;
        double r79586 = r79526 ? r79562 : r79585;
        return r79586;
}

Error

Bits error versus a

Bits error versus b

Bits error versus eps

Target

Original60.6
Target14.7
Herbie52.4
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 3 regimes
  2. if a < -346828314544410.56

    1. Initial program 55.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.6

      \[\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. Simplified49.6

      \[\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(\frac{1}{6}, {\varepsilon}^{3} \cdot {b}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}}\]
    4. Using strategy rm
    5. Applied flip--50.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 \mathsf{fma}\left(\frac{1}{6}, {\varepsilon}^{3} \cdot {b}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}\]
    6. Simplified51.4

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

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

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

    if -346828314544410.56 < a < 3.545917895875284e+64

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

    if 3.545917895875284e+64 < 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 47.3

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -346828314544410.562:\\ \;\;\;\;\frac{\varepsilon \cdot \frac{\mathsf{fma}\left(-1, 1, {\left(e^{a + b}\right)}^{\left(2 \cdot \varepsilon\right)}\right)}{e^{\left(a + b\right) \cdot \varepsilon} + 1}}{\frac{\mathsf{fma}\left(-1, 1, {\left(e^{a}\right)}^{\left(2 \cdot \varepsilon\right)}\right)}{e^{a \cdot \varepsilon} + 1} \cdot \mathsf{fma}\left(\frac{1}{6}, {\varepsilon}^{3} \cdot {b}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}\\ \mathbf{elif}\;a \le 3.5459178958752838 \cdot 10^{64}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\mathsf{fma}\left(\frac{1}{6}, {a}^{3} \cdot {\varepsilon}^{3}, \mathsf{fma}\left(\frac{1}{2}, {a}^{2} \cdot {\varepsilon}^{2}, a \cdot \varepsilon\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \mathsf{fma}\left(\frac{1}{6}, \left(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot b, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2020018 +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))))