Average Error: 60.2 → 53.5
Time: 11.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 -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(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot b\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(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot b\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 r94895 = eps;
        double r94896 = a;
        double r94897 = b;
        double r94898 = r94896 + r94897;
        double r94899 = r94898 * r94895;
        double r94900 = exp(r94899);
        double r94901 = 1.0;
        double r94902 = r94900 - r94901;
        double r94903 = r94895 * r94902;
        double r94904 = r94896 * r94895;
        double r94905 = exp(r94904);
        double r94906 = r94905 - r94901;
        double r94907 = r94897 * r94895;
        double r94908 = exp(r94907);
        double r94909 = r94908 - r94901;
        double r94910 = r94906 * r94909;
        double r94911 = r94903 / r94910;
        return r94911;
}

double f(double a, double b, double eps) {
        double r94912 = a;
        double r94913 = -1.9693375139914443e+72;
        bool r94914 = r94912 <= r94913;
        double r94915 = 9.716140837926457e+126;
        bool r94916 = r94912 <= r94915;
        double r94917 = !r94916;
        bool r94918 = r94914 || r94917;
        double r94919 = eps;
        double r94920 = b;
        double r94921 = r94912 + r94920;
        double r94922 = r94921 * r94919;
        double r94923 = exp(r94922);
        double r94924 = 1.0;
        double r94925 = r94923 - r94924;
        double r94926 = 3.0;
        double r94927 = pow(r94925, r94926);
        double r94928 = cbrt(r94927);
        double r94929 = r94919 * r94928;
        double r94930 = r94912 * r94919;
        double r94931 = exp(r94930);
        double r94932 = r94931 - r94924;
        double r94933 = 0.16666666666666666;
        double r94934 = pow(r94919, r94926);
        double r94935 = r94934 * r94920;
        double r94936 = r94935 * r94920;
        double r94937 = r94936 * r94920;
        double r94938 = r94933 * r94937;
        double r94939 = 0.5;
        double r94940 = 2.0;
        double r94941 = pow(r94919, r94940);
        double r94942 = pow(r94920, r94940);
        double r94943 = r94941 * r94942;
        double r94944 = r94939 * r94943;
        double r94945 = r94919 * r94920;
        double r94946 = r94944 + r94945;
        double r94947 = r94938 + r94946;
        double r94948 = r94932 * r94947;
        double r94949 = r94929 / r94948;
        double r94950 = r94919 * r94925;
        double r94951 = pow(r94912, r94926);
        double r94952 = r94951 * r94934;
        double r94953 = r94933 * r94952;
        double r94954 = pow(r94912, r94940);
        double r94955 = r94954 * r94941;
        double r94956 = r94939 * r94955;
        double r94957 = r94956 + r94930;
        double r94958 = r94953 + r94957;
        double r94959 = r94920 * r94919;
        double r94960 = exp(r94959);
        double r94961 = r94960 - r94924;
        double r94962 = r94958 * r94961;
        double r94963 = r94950 / r94962;
        double r94964 = r94918 ? r94949 : r94963;
        return r94964;
}

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

      \[\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(\color{blue}{\left(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right)} \cdot b\right) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\]
    7. Using strategy rm
    8. Applied add-cbrt-cube45.4

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

      \[\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(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot b\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.5

    \[\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(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot b\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))))