Average Error: 60.0 → 52.9
Time: 30.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}\;a \le -2140545190609.43994140625:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \left(\varepsilon \cdot b + \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \frac{1}{2} + \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \left(\varepsilon \cdot \frac{1}{6}\right)\right) \cdot b\right) \cdot \left(b \cdot b\right)\right)}\\ \mathbf{elif}\;a \le 4.193348522494585601349604551032648379491 \cdot 10^{103}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(e^{\varepsilon \cdot b} - 1\right) \cdot \left(\varepsilon \cdot \left(\left(\frac{1}{2} \cdot \left(a \cdot a\right) + \frac{1}{6} \cdot \left(\left(\varepsilon \cdot a\right) \cdot \left(a \cdot a\right)\right)\right) \cdot \varepsilon\right) + \varepsilon \cdot a\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \left(\varepsilon \cdot b + \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \frac{1}{2} + \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \left(\varepsilon \cdot \frac{1}{6}\right)\right) \cdot b\right) \cdot \left(b \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 -2140545190609.43994140625:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \left(\varepsilon \cdot b + \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \frac{1}{2} + \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \left(\varepsilon \cdot \frac{1}{6}\right)\right) \cdot b\right) \cdot \left(b \cdot b\right)\right)}\\

\mathbf{elif}\;a \le 4.193348522494585601349604551032648379491 \cdot 10^{103}:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(e^{\varepsilon \cdot b} - 1\right) \cdot \left(\varepsilon \cdot \left(\left(\frac{1}{2} \cdot \left(a \cdot a\right) + \frac{1}{6} \cdot \left(\left(\varepsilon \cdot a\right) \cdot \left(a \cdot a\right)\right)\right) \cdot \varepsilon\right) + \varepsilon \cdot a\right)}\\

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

\end{array}
double f(double a, double b, double eps) {
        double r6007415 = eps;
        double r6007416 = a;
        double r6007417 = b;
        double r6007418 = r6007416 + r6007417;
        double r6007419 = r6007418 * r6007415;
        double r6007420 = exp(r6007419);
        double r6007421 = 1.0;
        double r6007422 = r6007420 - r6007421;
        double r6007423 = r6007415 * r6007422;
        double r6007424 = r6007416 * r6007415;
        double r6007425 = exp(r6007424);
        double r6007426 = r6007425 - r6007421;
        double r6007427 = r6007417 * r6007415;
        double r6007428 = exp(r6007427);
        double r6007429 = r6007428 - r6007421;
        double r6007430 = r6007426 * r6007429;
        double r6007431 = r6007423 / r6007430;
        return r6007431;
}

double f(double a, double b, double eps) {
        double r6007432 = a;
        double r6007433 = -2140545190609.44;
        bool r6007434 = r6007432 <= r6007433;
        double r6007435 = eps;
        double r6007436 = b;
        double r6007437 = r6007432 + r6007436;
        double r6007438 = r6007435 * r6007437;
        double r6007439 = exp(r6007438);
        double r6007440 = 1.0;
        double r6007441 = r6007439 - r6007440;
        double r6007442 = r6007435 * r6007441;
        double r6007443 = r6007435 * r6007432;
        double r6007444 = exp(r6007443);
        double r6007445 = r6007444 - r6007440;
        double r6007446 = r6007435 * r6007436;
        double r6007447 = r6007435 * r6007435;
        double r6007448 = 0.5;
        double r6007449 = r6007447 * r6007448;
        double r6007450 = 0.16666666666666666;
        double r6007451 = r6007435 * r6007450;
        double r6007452 = r6007447 * r6007451;
        double r6007453 = r6007452 * r6007436;
        double r6007454 = r6007449 + r6007453;
        double r6007455 = r6007436 * r6007436;
        double r6007456 = r6007454 * r6007455;
        double r6007457 = r6007446 + r6007456;
        double r6007458 = r6007445 * r6007457;
        double r6007459 = r6007442 / r6007458;
        double r6007460 = 4.1933485224945856e+103;
        bool r6007461 = r6007432 <= r6007460;
        double r6007462 = exp(r6007446);
        double r6007463 = r6007462 - r6007440;
        double r6007464 = r6007432 * r6007432;
        double r6007465 = r6007448 * r6007464;
        double r6007466 = r6007443 * r6007464;
        double r6007467 = r6007450 * r6007466;
        double r6007468 = r6007465 + r6007467;
        double r6007469 = r6007468 * r6007435;
        double r6007470 = r6007435 * r6007469;
        double r6007471 = r6007470 + r6007443;
        double r6007472 = r6007463 * r6007471;
        double r6007473 = r6007442 / r6007472;
        double r6007474 = r6007461 ? r6007473 : r6007459;
        double r6007475 = r6007434 ? r6007459 : r6007474;
        return r6007475;
}

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

Derivation

  1. Split input into 2 regimes
  2. if a < -2140545190609.44 or 4.1933485224945856e+103 < a

    1. Initial program 53.6

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

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

      \[\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 + \left(b \cdot b\right) \cdot \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \frac{1}{2} + \left(\left(\frac{1}{6} \cdot \varepsilon\right) \cdot \left(\varepsilon \cdot \varepsilon\right)\right) \cdot b\right)\right)}}\]

    if -2140545190609.44 < a < 4.1933485224945856e+103

    1. Initial program 63.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 56.4

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\left(\frac{1}{2} \cdot \left({a}^{2} \cdot {\varepsilon}^{2}\right) + \left(\frac{1}{6} \cdot \left({a}^{3} \cdot {\varepsilon}^{3}\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}{\left(\left(\varepsilon \cdot \varepsilon\right) \cdot \left(\left(a \cdot a\right) \cdot \frac{1}{2} + \left(\frac{1}{6} \cdot \left(a \cdot \left(a \cdot a\right)\right)\right) \cdot \varepsilon\right) + \varepsilon \cdot a\right)} \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    4. Using strategy rm
    5. Applied associate-*l*56.4

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -2140545190609.43994140625:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \left(\varepsilon \cdot b + \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \frac{1}{2} + \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \left(\varepsilon \cdot \frac{1}{6}\right)\right) \cdot b\right) \cdot \left(b \cdot b\right)\right)}\\ \mathbf{elif}\;a \le 4.193348522494585601349604551032648379491 \cdot 10^{103}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(e^{\varepsilon \cdot b} - 1\right) \cdot \left(\varepsilon \cdot \left(\left(\frac{1}{2} \cdot \left(a \cdot a\right) + \frac{1}{6} \cdot \left(\left(\varepsilon \cdot a\right) \cdot \left(a \cdot a\right)\right)\right) \cdot \varepsilon\right) + \varepsilon \cdot a\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \left(\varepsilon \cdot b + \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \frac{1}{2} + \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \left(\varepsilon \cdot \frac{1}{6}\right)\right) \cdot b\right) \cdot \left(b \cdot b\right)\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019169 
(FPCore (a b eps)
  :name "expq3 (problem 3.4.2)"
  :pre (and (< -1.0 eps) (< eps 1.0))

  :herbie-target
  (/ (+ a b) (* a b))

  (/ (* eps (- (exp (* (+ a b) eps)) 1.0)) (* (- (exp (* a eps)) 1.0) (- (exp (* b eps)) 1.0))))