Average Error: 59.5 → 59.5
Time: 12.7s
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}\;b \le -1.8883079266888689 \cdot 10^{67} \lor \neg \left(b \le 1.92355889687172386 \cdot 10^{85}\right):\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\frac{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left({\left(e^{b \cdot \varepsilon}\right)}^{3} - {1}^{3}\right)}{e^{b \cdot \varepsilon} \cdot e^{b \cdot \varepsilon} + \left(1 \cdot 1 + e^{b \cdot \varepsilon} \cdot 1\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\frac{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \mathsf{fma}\left(\frac{9}{2}, {\varepsilon}^{3} \cdot {b}^{3}, \mathsf{fma}\left(\frac{9}{2}, {\varepsilon}^{2} \cdot {b}^{2}, 3 \cdot \left(\varepsilon \cdot b\right)\right)\right)}{e^{b \cdot \varepsilon} \cdot e^{b \cdot \varepsilon} + \left(1 \cdot 1 + e^{b \cdot \varepsilon} \cdot 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}\;b \le -1.8883079266888689 \cdot 10^{67} \lor \neg \left(b \le 1.92355889687172386 \cdot 10^{85}\right):\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\frac{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left({\left(e^{b \cdot \varepsilon}\right)}^{3} - {1}^{3}\right)}{e^{b \cdot \varepsilon} \cdot e^{b \cdot \varepsilon} + \left(1 \cdot 1 + e^{b \cdot \varepsilon} \cdot 1\right)}}\\

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

\end{array}
double f(double a, double b, double eps) {
        double r107410 = eps;
        double r107411 = a;
        double r107412 = b;
        double r107413 = r107411 + r107412;
        double r107414 = r107413 * r107410;
        double r107415 = exp(r107414);
        double r107416 = 1.0;
        double r107417 = r107415 - r107416;
        double r107418 = r107410 * r107417;
        double r107419 = r107411 * r107410;
        double r107420 = exp(r107419);
        double r107421 = r107420 - r107416;
        double r107422 = r107412 * r107410;
        double r107423 = exp(r107422);
        double r107424 = r107423 - r107416;
        double r107425 = r107421 * r107424;
        double r107426 = r107418 / r107425;
        return r107426;
}

double f(double a, double b, double eps) {
        double r107427 = b;
        double r107428 = -1.888307926688869e+67;
        bool r107429 = r107427 <= r107428;
        double r107430 = 1.923558896871724e+85;
        bool r107431 = r107427 <= r107430;
        double r107432 = !r107431;
        bool r107433 = r107429 || r107432;
        double r107434 = eps;
        double r107435 = a;
        double r107436 = r107435 + r107427;
        double r107437 = r107436 * r107434;
        double r107438 = exp(r107437);
        double r107439 = 1.0;
        double r107440 = r107438 - r107439;
        double r107441 = r107434 * r107440;
        double r107442 = r107435 * r107434;
        double r107443 = exp(r107442);
        double r107444 = r107443 - r107439;
        double r107445 = r107427 * r107434;
        double r107446 = exp(r107445);
        double r107447 = 3.0;
        double r107448 = pow(r107446, r107447);
        double r107449 = pow(r107439, r107447);
        double r107450 = r107448 - r107449;
        double r107451 = r107444 * r107450;
        double r107452 = r107446 * r107446;
        double r107453 = r107439 * r107439;
        double r107454 = r107446 * r107439;
        double r107455 = r107453 + r107454;
        double r107456 = r107452 + r107455;
        double r107457 = r107451 / r107456;
        double r107458 = r107441 / r107457;
        double r107459 = 4.5;
        double r107460 = pow(r107434, r107447);
        double r107461 = pow(r107427, r107447);
        double r107462 = r107460 * r107461;
        double r107463 = 2.0;
        double r107464 = pow(r107434, r107463);
        double r107465 = pow(r107427, r107463);
        double r107466 = r107464 * r107465;
        double r107467 = r107434 * r107427;
        double r107468 = r107447 * r107467;
        double r107469 = fma(r107459, r107466, r107468);
        double r107470 = fma(r107459, r107462, r107469);
        double r107471 = r107444 * r107470;
        double r107472 = r107471 / r107456;
        double r107473 = r107441 / r107472;
        double r107474 = r107433 ? r107458 : r107473;
        return r107474;
}

Error

Bits error versus a

Bits error versus b

Bits error versus eps

Target

Original59.5
Target16.7
Herbie59.5
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 2 regimes
  2. if b < -1.888307926688869e+67 or 1.923558896871724e+85 < b

    1. Initial program 49.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. Using strategy rm
    3. Applied flip3--52.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}{\frac{{\left(e^{b \cdot \varepsilon}\right)}^{3} - {1}^{3}}{e^{b \cdot \varepsilon} \cdot e^{b \cdot \varepsilon} + \left(1 \cdot 1 + e^{b \cdot \varepsilon} \cdot 1\right)}}}\]
    4. Applied associate-*r/52.4

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

    if -1.888307926688869e+67 < b < 1.923558896871724e+85

    1. Initial program 63.5

      \[\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 flip3--63.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}{\frac{{\left(e^{b \cdot \varepsilon}\right)}^{3} - {1}^{3}}{e^{b \cdot \varepsilon} \cdot e^{b \cdot \varepsilon} + \left(1 \cdot 1 + e^{b \cdot \varepsilon} \cdot 1\right)}}}\]
    4. Applied associate-*r/63.6

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\frac{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left({\left(e^{b \cdot \varepsilon}\right)}^{3} - {1}^{3}\right)}{e^{b \cdot \varepsilon} \cdot e^{b \cdot \varepsilon} + \left(1 \cdot 1 + e^{b \cdot \varepsilon} \cdot 1\right)}}}\]
    5. Taylor expanded around 0 62.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.8883079266888689 \cdot 10^{67} \lor \neg \left(b \le 1.92355889687172386 \cdot 10^{85}\right):\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\frac{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left({\left(e^{b \cdot \varepsilon}\right)}^{3} - {1}^{3}\right)}{e^{b \cdot \varepsilon} \cdot e^{b \cdot \varepsilon} + \left(1 \cdot 1 + e^{b \cdot \varepsilon} \cdot 1\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\frac{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \mathsf{fma}\left(\frac{9}{2}, {\varepsilon}^{3} \cdot {b}^{3}, \mathsf{fma}\left(\frac{9}{2}, {\varepsilon}^{2} \cdot {b}^{2}, 3 \cdot \left(\varepsilon \cdot b\right)\right)\right)}{e^{b \cdot \varepsilon} \cdot e^{b \cdot \varepsilon} + \left(1 \cdot 1 + e^{b \cdot \varepsilon} \cdot 1\right)}}\\ \end{array}\]

Reproduce

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