Average Error: 58.6 → 51.3
Time: 5.3m
Precision: 64
\[\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 -5.130891534960253 \cdot 10^{+81}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(\varepsilon \cdot b + \left(\frac{1}{2} \cdot \left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) + \left(\varepsilon \cdot \left(\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot b\right)\right) \cdot \frac{1}{6}\right)\right) \cdot \left(e^{\varepsilon \cdot a} - 1\right)}\\ \mathbf{elif}\;a \le 2.412797467091225 \cdot 10^{+146}:\\ \;\;\;\;\frac{\varepsilon \cdot \frac{{\left(e^{\varepsilon \cdot \left(a + b\right)}\right)}^{3} - 1}{\left(e^{\varepsilon \cdot \left(a + b\right)} + 1\right) + e^{\varepsilon \cdot \left(a + b\right)} \cdot e^{\varepsilon \cdot \left(a + b\right)}}}{\left(e^{\varepsilon \cdot b} - 1\right) \cdot \left(\frac{1}{2} \cdot \left(\left(\varepsilon \cdot a\right) \cdot \left(\varepsilon \cdot a\right)\right) + \left(\left(\left(a \cdot \frac{1}{6}\right) \cdot \left(\left(\varepsilon \cdot a\right) \cdot \left(\varepsilon \cdot a\right)\right)\right) \cdot \varepsilon + \varepsilon \cdot a\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(\varepsilon \cdot b + \left(\frac{1}{2} \cdot \left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) + \left(\varepsilon \cdot \left(\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot b\right)\right) \cdot \frac{1}{6}\right)\right) \cdot \left(e^{\varepsilon \cdot a} - 1\right)}\\ \end{array}\]
double f(double a, double b, double eps) {
        double r61904958 = eps;
        double r61904959 = a;
        double r61904960 = b;
        double r61904961 = r61904959 + r61904960;
        double r61904962 = r61904961 * r61904958;
        double r61904963 = exp(r61904962);
        double r61904964 = 1.0;
        double r61904965 = r61904963 - r61904964;
        double r61904966 = r61904958 * r61904965;
        double r61904967 = r61904959 * r61904958;
        double r61904968 = exp(r61904967);
        double r61904969 = r61904968 - r61904964;
        double r61904970 = r61904960 * r61904958;
        double r61904971 = exp(r61904970);
        double r61904972 = r61904971 - r61904964;
        double r61904973 = r61904969 * r61904972;
        double r61904974 = r61904966 / r61904973;
        return r61904974;
}

double f(double a, double b, double eps) {
        double r61904975 = a;
        double r61904976 = -5.130891534960253e+81;
        bool r61904977 = r61904975 <= r61904976;
        double r61904978 = eps;
        double r61904979 = b;
        double r61904980 = r61904975 + r61904979;
        double r61904981 = r61904978 * r61904980;
        double r61904982 = exp(r61904981);
        double r61904983 = 1.0;
        double r61904984 = r61904982 - r61904983;
        double r61904985 = r61904978 * r61904984;
        double r61904986 = r61904978 * r61904979;
        double r61904987 = 0.5;
        double r61904988 = r61904986 * r61904986;
        double r61904989 = r61904987 * r61904988;
        double r61904990 = r61904988 * r61904979;
        double r61904991 = r61904978 * r61904990;
        double r61904992 = 0.16666666666666666;
        double r61904993 = r61904991 * r61904992;
        double r61904994 = r61904989 + r61904993;
        double r61904995 = r61904986 + r61904994;
        double r61904996 = r61904978 * r61904975;
        double r61904997 = exp(r61904996);
        double r61904998 = r61904997 - r61904983;
        double r61904999 = r61904995 * r61904998;
        double r61905000 = r61904985 / r61904999;
        double r61905001 = 2.412797467091225e+146;
        bool r61905002 = r61904975 <= r61905001;
        double r61905003 = 3.0;
        double r61905004 = pow(r61904982, r61905003);
        double r61905005 = r61905004 - r61904983;
        double r61905006 = r61904982 + r61904983;
        double r61905007 = r61904982 * r61904982;
        double r61905008 = r61905006 + r61905007;
        double r61905009 = r61905005 / r61905008;
        double r61905010 = r61904978 * r61905009;
        double r61905011 = exp(r61904986);
        double r61905012 = r61905011 - r61904983;
        double r61905013 = r61904996 * r61904996;
        double r61905014 = r61904987 * r61905013;
        double r61905015 = r61904975 * r61904992;
        double r61905016 = r61905015 * r61905013;
        double r61905017 = r61905016 * r61904978;
        double r61905018 = r61905017 + r61904996;
        double r61905019 = r61905014 + r61905018;
        double r61905020 = r61905012 * r61905019;
        double r61905021 = r61905010 / r61905020;
        double r61905022 = r61905002 ? r61905021 : r61905000;
        double r61905023 = r61904977 ? r61905000 : r61905022;
        return r61905023;
}

\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 -5.130891534960253 \cdot 10^{+81}:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(a + b\right)} - 1\right)}{\left(\varepsilon \cdot b + \left(\frac{1}{2} \cdot \left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) + \left(\varepsilon \cdot \left(\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot b\right)\right) \cdot \frac{1}{6}\right)\right) \cdot \left(e^{\varepsilon \cdot a} - 1\right)}\\

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

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

\end{array}

Error

Bits error versus a

Bits error versus b

Bits error versus eps

Target

Original58.6
Target14.2
Herbie51.3
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 2 regimes
  2. if a < -5.130891534960253e+81 or 2.412797467091225e+146 < a

    1. Initial program 51.2

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

      \[\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. Simplified40.8

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

    if -5.130891534960253e+81 < a < 2.412797467091225e+146

    1. Initial program 61.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)}\]
    2. Taylor expanded around 0 54.9

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

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\left(\left(\varepsilon \cdot \left(\left(\frac{1}{6} \cdot a\right) \cdot \left(\left(a \cdot \varepsilon\right) \cdot \left(a \cdot \varepsilon\right)\right)\right) + a \cdot \varepsilon\right) + \frac{1}{2} \cdot \left(\left(a \cdot \varepsilon\right) \cdot \left(a \cdot \varepsilon\right)\right)\right)} \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    4. Using strategy rm
    5. Applied flip3--54.9

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

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

Reproduce

herbie shell --seed 2019101 
(FPCore (a b eps)
  :name "expq3 (problem 3.4.2)"
  :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))))