Average Error: 60.3 → 3.4
Time: 46.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)}\]
\[\frac{1}{b} + \frac{1}{a}\]
\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)}
\frac{1}{b} + \frac{1}{a}
double f(double a, double b, double eps) {
        double r80532 = eps;
        double r80533 = a;
        double r80534 = b;
        double r80535 = r80533 + r80534;
        double r80536 = r80535 * r80532;
        double r80537 = exp(r80536);
        double r80538 = 1.0;
        double r80539 = r80537 - r80538;
        double r80540 = r80532 * r80539;
        double r80541 = r80533 * r80532;
        double r80542 = exp(r80541);
        double r80543 = r80542 - r80538;
        double r80544 = r80534 * r80532;
        double r80545 = exp(r80544);
        double r80546 = r80545 - r80538;
        double r80547 = r80543 * r80546;
        double r80548 = r80540 / r80547;
        return r80548;
}

double f(double a, double b, double __attribute__((unused)) eps) {
        double r80549 = 1.0;
        double r80550 = b;
        double r80551 = r80549 / r80550;
        double r80552 = a;
        double r80553 = r80549 / r80552;
        double r80554 = r80551 + r80553;
        return r80554;
}

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

Derivation

  1. Initial program 60.3

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

    \[\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. Simplified58.0

    \[\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)}\]
  4. Using strategy rm
  5. Applied pow158.0

    \[\leadsto \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 \color{blue}{{\left(e^{b \cdot \varepsilon} - 1\right)}^{1}}}\]
  6. Applied pow158.0

    \[\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)}^{1}} \cdot {\left(e^{b \cdot \varepsilon} - 1\right)}^{1}}\]
  7. Applied pow-prod-down58.0

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

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

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

    \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{{\color{blue}{\left(\left(\left(\left(\frac{1 \cdot \left({\left(a \cdot \varepsilon\right)}^{3} \cdot e^{\varepsilon \cdot b}\right)}{6} + \frac{1}{2} \cdot \left({a}^{2} \cdot \left({\varepsilon}^{2} \cdot e^{\varepsilon \cdot b}\right)\right)\right) + a \cdot \left(\varepsilon \cdot e^{\varepsilon \cdot b}\right)\right) - \left(\frac{1}{2} \cdot \left({a}^{2} \cdot {\varepsilon}^{2}\right) + 1 \cdot \left(a \cdot \varepsilon\right)\right)\right) - \frac{6004799503160661 \cdot {\left(a \cdot \varepsilon\right)}^{3}}{36028797018963968}\right)}}^{1}}\]
  11. Taylor expanded around 0 3.4

    \[\leadsto \color{blue}{\frac{1}{b} + \frac{1}{a}}\]
  12. Final simplification3.4

    \[\leadsto \frac{1}{b} + \frac{1}{a}\]

Reproduce

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