Average Error: 60.0 → 54.5
Time: 34.3s
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 -8.172706586072207838707531415916321028894 \cdot 10^{170}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \left(e^{\varepsilon \cdot b} - 1\right)}\\ \mathbf{elif}\;b \le 1.268045649338871518834251374950869607891 \cdot 10^{113}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\mathsf{fma}\left(\frac{1}{2}, \left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot e^{\varepsilon \cdot a}, e^{\varepsilon \cdot a} \cdot \left(\left(b \cdot \left(\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot \varepsilon\right)\right) \cdot \frac{1}{6} + \varepsilon \cdot b\right) - \mathsf{fma}\left(b \cdot \left(\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot \varepsilon\right), 0.1666666666666666574148081281236954964697, \mathsf{fma}\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right), 0.5, \left(\varepsilon \cdot b\right) \cdot 1\right)\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\left(e^{\varepsilon \cdot b} - 1\right) \cdot \mathsf{fma}\left(\frac{1}{6}, \left(\left(\varepsilon \cdot a\right) \cdot \left(a \cdot a\right)\right) \cdot \left(\varepsilon \cdot \varepsilon\right), \mathsf{fma}\left(\varepsilon, a, \left(\varepsilon \cdot \varepsilon\right) \cdot \left(\left(a \cdot a\right) \cdot \frac{1}{2}\right)\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}\;b \le -8.172706586072207838707531415916321028894 \cdot 10^{170}:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \left(e^{\varepsilon \cdot b} - 1\right)}\\

\mathbf{elif}\;b \le 1.268045649338871518834251374950869607891 \cdot 10^{113}:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\mathsf{fma}\left(\frac{1}{2}, \left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot e^{\varepsilon \cdot a}, e^{\varepsilon \cdot a} \cdot \left(\left(b \cdot \left(\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot \varepsilon\right)\right) \cdot \frac{1}{6} + \varepsilon \cdot b\right) - \mathsf{fma}\left(b \cdot \left(\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot \varepsilon\right), 0.1666666666666666574148081281236954964697, \mathsf{fma}\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right), 0.5, \left(\varepsilon \cdot b\right) \cdot 1\right)\right)\right)}\\

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

\end{array}
double f(double a, double b, double eps) {
        double r5783986 = eps;
        double r5783987 = a;
        double r5783988 = b;
        double r5783989 = r5783987 + r5783988;
        double r5783990 = r5783989 * r5783986;
        double r5783991 = exp(r5783990);
        double r5783992 = 1.0;
        double r5783993 = r5783991 - r5783992;
        double r5783994 = r5783986 * r5783993;
        double r5783995 = r5783987 * r5783986;
        double r5783996 = exp(r5783995);
        double r5783997 = r5783996 - r5783992;
        double r5783998 = r5783988 * r5783986;
        double r5783999 = exp(r5783998);
        double r5784000 = r5783999 - r5783992;
        double r5784001 = r5783997 * r5784000;
        double r5784002 = r5783994 / r5784001;
        return r5784002;
}

double f(double a, double b, double eps) {
        double r5784003 = b;
        double r5784004 = -8.172706586072208e+170;
        bool r5784005 = r5784003 <= r5784004;
        double r5784006 = eps;
        double r5784007 = a;
        double r5784008 = r5784003 + r5784007;
        double r5784009 = r5784006 * r5784008;
        double r5784010 = exp(r5784009);
        double r5784011 = 1.0;
        double r5784012 = r5784010 - r5784011;
        double r5784013 = r5784006 * r5784012;
        double r5784014 = r5784006 * r5784007;
        double r5784015 = exp(r5784014);
        double r5784016 = r5784015 - r5784011;
        double r5784017 = r5784006 * r5784003;
        double r5784018 = exp(r5784017);
        double r5784019 = r5784018 - r5784011;
        double r5784020 = r5784016 * r5784019;
        double r5784021 = r5784013 / r5784020;
        double r5784022 = 1.2680456493388715e+113;
        bool r5784023 = r5784003 <= r5784022;
        double r5784024 = 0.5;
        double r5784025 = r5784017 * r5784017;
        double r5784026 = r5784025 * r5784015;
        double r5784027 = r5784025 * r5784006;
        double r5784028 = r5784003 * r5784027;
        double r5784029 = 0.16666666666666666;
        double r5784030 = r5784028 * r5784029;
        double r5784031 = r5784030 + r5784017;
        double r5784032 = r5784015 * r5784031;
        double r5784033 = 0.16666666666666666;
        double r5784034 = 0.5;
        double r5784035 = r5784017 * r5784011;
        double r5784036 = fma(r5784025, r5784034, r5784035);
        double r5784037 = fma(r5784028, r5784033, r5784036);
        double r5784038 = r5784032 - r5784037;
        double r5784039 = fma(r5784024, r5784026, r5784038);
        double r5784040 = r5784013 / r5784039;
        double r5784041 = r5784007 * r5784007;
        double r5784042 = r5784014 * r5784041;
        double r5784043 = r5784006 * r5784006;
        double r5784044 = r5784042 * r5784043;
        double r5784045 = r5784041 * r5784024;
        double r5784046 = r5784043 * r5784045;
        double r5784047 = fma(r5784006, r5784007, r5784046);
        double r5784048 = fma(r5784029, r5784044, r5784047);
        double r5784049 = r5784019 * r5784048;
        double r5784050 = r5784013 / r5784049;
        double r5784051 = r5784023 ? r5784040 : r5784050;
        double r5784052 = r5784005 ? r5784021 : r5784051;
        return r5784052;
}

Error

Bits error versus a

Bits error versus b

Bits error versus eps

Target

Original60.0
Target15.2
Herbie54.5
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 3 regimes
  2. if b < -8.172706586072208e+170

    1. Initial program 50.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 *-un-lft-identity50.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(1 \cdot \left(e^{b \cdot \varepsilon} - 1\right)\right)}}\]
    4. Applied associate-*r*50.5

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

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

    if -8.172706586072208e+170 < b < 1.2680456493388715e+113

    1. Initial program 62.4

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

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

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \color{blue}{\mathsf{fma}\left(\varepsilon, b, \mathsf{fma}\left(\left(\left(\varepsilon \cdot \varepsilon\right) \cdot \varepsilon\right) \cdot \frac{1}{6}, b \cdot \left(b \cdot b\right), \left(b \cdot b\right) \cdot \left(\frac{1}{2} \cdot \left(\varepsilon \cdot \varepsilon\right)\right)\right)\right)}}\]
    4. Taylor expanded around inf 57.4

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

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\mathsf{fma}\left(\frac{1}{2}, e^{a \cdot \varepsilon} \cdot \left(\left(b \cdot \varepsilon\right) \cdot \left(b \cdot \varepsilon\right)\right), e^{a \cdot \varepsilon} \cdot \left(b \cdot \varepsilon + \left(b \cdot \left(\left(\left(b \cdot \varepsilon\right) \cdot \left(b \cdot \varepsilon\right)\right) \cdot \varepsilon\right)\right) \cdot \frac{1}{6}\right) - \mathsf{fma}\left(b \cdot \left(\left(\left(b \cdot \varepsilon\right) \cdot \left(b \cdot \varepsilon\right)\right) \cdot \varepsilon\right), 0.1666666666666666574148081281236954964697, \mathsf{fma}\left(\left(b \cdot \varepsilon\right) \cdot \left(b \cdot \varepsilon\right), 0.5, 1 \cdot \left(b \cdot \varepsilon\right)\right)\right)\right)}}\]

    if 1.2680456493388715e+113 < b

    1. Initial program 52.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. Taylor expanded around 0 46.2

      \[\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. Simplified45.6

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

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\mathsf{fma}\left(\frac{1}{6}, \left(\varepsilon \cdot \varepsilon\right) \cdot \color{blue}{\left({a}^{3} \cdot \varepsilon\right)}, \mathsf{fma}\left(\varepsilon, a, \left(\varepsilon \cdot \varepsilon\right) \cdot \left(\left(a \cdot a\right) \cdot \frac{1}{2}\right)\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    5. Simplified44.5

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -8.172706586072207838707531415916321028894 \cdot 10^{170}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \left(e^{\varepsilon \cdot b} - 1\right)}\\ \mathbf{elif}\;b \le 1.268045649338871518834251374950869607891 \cdot 10^{113}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\mathsf{fma}\left(\frac{1}{2}, \left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot e^{\varepsilon \cdot a}, e^{\varepsilon \cdot a} \cdot \left(\left(b \cdot \left(\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot \varepsilon\right)\right) \cdot \frac{1}{6} + \varepsilon \cdot b\right) - \mathsf{fma}\left(b \cdot \left(\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right)\right) \cdot \varepsilon\right), 0.1666666666666666574148081281236954964697, \mathsf{fma}\left(\left(\varepsilon \cdot b\right) \cdot \left(\varepsilon \cdot b\right), 0.5, \left(\varepsilon \cdot b\right) \cdot 1\right)\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\left(e^{\varepsilon \cdot b} - 1\right) \cdot \mathsf{fma}\left(\frac{1}{6}, \left(\left(\varepsilon \cdot a\right) \cdot \left(a \cdot a\right)\right) \cdot \left(\varepsilon \cdot \varepsilon\right), \mathsf{fma}\left(\varepsilon, a, \left(\varepsilon \cdot \varepsilon\right) \cdot \left(\left(a \cdot a\right) \cdot \frac{1}{2}\right)\right)\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019169 +o rules:numerics
(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))))