Average Error: 60.2 → 53.7
Time: 12.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 -1.969337513991444315376627752626075518669 \cdot 10^{72} \lor \neg \left(a \le 9.71614083792645651101853201912203907943 \cdot 10^{126}\right):\\ \;\;\;\;\frac{\varepsilon \cdot \sqrt[3]{{\left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}^{3}}}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(\frac{1}{6} \cdot \left(\left({\varepsilon}^{3} \cdot b\right) \cdot \left(b \cdot b\right)\right) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\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 \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 -1.969337513991444315376627752626075518669 \cdot 10^{72} \lor \neg \left(a \le 9.71614083792645651101853201912203907943 \cdot 10^{126}\right):\\
\;\;\;\;\frac{\varepsilon \cdot \sqrt[3]{{\left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}^{3}}}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(\frac{1}{6} \cdot \left(\left({\varepsilon}^{3} \cdot b\right) \cdot \left(b \cdot b\right)\right) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\\

\mathbf{else}:\\
\;\;\;\;\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 \left(e^{b \cdot \varepsilon} - 1\right)}\\

\end{array}
double f(double a, double b, double eps) {
        double r94993 = eps;
        double r94994 = a;
        double r94995 = b;
        double r94996 = r94994 + r94995;
        double r94997 = r94996 * r94993;
        double r94998 = exp(r94997);
        double r94999 = 1.0;
        double r95000 = r94998 - r94999;
        double r95001 = r94993 * r95000;
        double r95002 = r94994 * r94993;
        double r95003 = exp(r95002);
        double r95004 = r95003 - r94999;
        double r95005 = r94995 * r94993;
        double r95006 = exp(r95005);
        double r95007 = r95006 - r94999;
        double r95008 = r95004 * r95007;
        double r95009 = r95001 / r95008;
        return r95009;
}

double f(double a, double b, double eps) {
        double r95010 = a;
        double r95011 = -1.9693375139914443e+72;
        bool r95012 = r95010 <= r95011;
        double r95013 = 9.716140837926457e+126;
        bool r95014 = r95010 <= r95013;
        double r95015 = !r95014;
        bool r95016 = r95012 || r95015;
        double r95017 = eps;
        double r95018 = b;
        double r95019 = r95010 + r95018;
        double r95020 = r95019 * r95017;
        double r95021 = exp(r95020);
        double r95022 = 1.0;
        double r95023 = r95021 - r95022;
        double r95024 = 3.0;
        double r95025 = pow(r95023, r95024);
        double r95026 = cbrt(r95025);
        double r95027 = r95017 * r95026;
        double r95028 = r95010 * r95017;
        double r95029 = exp(r95028);
        double r95030 = r95029 - r95022;
        double r95031 = 0.16666666666666666;
        double r95032 = pow(r95017, r95024);
        double r95033 = r95032 * r95018;
        double r95034 = r95018 * r95018;
        double r95035 = r95033 * r95034;
        double r95036 = r95031 * r95035;
        double r95037 = 0.5;
        double r95038 = 2.0;
        double r95039 = pow(r95017, r95038);
        double r95040 = pow(r95018, r95038);
        double r95041 = r95039 * r95040;
        double r95042 = r95037 * r95041;
        double r95043 = r95017 * r95018;
        double r95044 = r95042 + r95043;
        double r95045 = r95036 + r95044;
        double r95046 = r95030 * r95045;
        double r95047 = r95027 / r95046;
        double r95048 = r95017 * r95023;
        double r95049 = pow(r95010, r95024);
        double r95050 = r95049 * r95032;
        double r95051 = r95031 * r95050;
        double r95052 = pow(r95010, r95038);
        double r95053 = r95052 * r95039;
        double r95054 = r95037 * r95053;
        double r95055 = r95054 + r95028;
        double r95056 = r95051 + r95055;
        double r95057 = r95018 * r95017;
        double r95058 = exp(r95057);
        double r95059 = r95058 - r95022;
        double r95060 = r95056 * r95059;
        double r95061 = r95048 / r95060;
        double r95062 = r95016 ? r95047 : r95061;
        return r95062;
}

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

Derivation

  1. Split input into 2 regimes
  2. if a < -1.9693375139914443e+72 or 9.716140837926457e+126 < a

    1. Initial program 52.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 46.9

      \[\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. Using strategy rm
    4. Applied cube-mult46.9

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

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(\frac{1}{6} \cdot \color{blue}{\left(\left({\varepsilon}^{3} \cdot b\right) \cdot \left(b \cdot b\right)\right)} + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\]
    6. Using strategy rm
    7. Applied add-cbrt-cube46.1

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

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

    if -1.9693375139914443e+72 < a < 9.716140837926457e+126

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

      \[\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. Recombined 2 regimes into one program.
  4. Final simplification53.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -1.969337513991444315376627752626075518669 \cdot 10^{72} \lor \neg \left(a \le 9.71614083792645651101853201912203907943 \cdot 10^{126}\right):\\ \;\;\;\;\frac{\varepsilon \cdot \sqrt[3]{{\left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}^{3}}}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(\frac{1}{6} \cdot \left(\left({\varepsilon}^{3} \cdot b\right) \cdot \left(b \cdot b\right)\right) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\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 \left(e^{b \cdot \varepsilon} - 1\right)}\\ \end{array}\]

Reproduce

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