Average Error: 58.7 → 4.0
Time: 1.4m
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 -2.4915457606612688 \cdot 10^{+266}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \frac{{\left(e^{\varepsilon \cdot b}\right)}^{3} - 1}{e^{\varepsilon \cdot b} \cdot e^{\varepsilon \cdot b} + \left(1 + e^{\varepsilon \cdot b}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{b} + \frac{1}{a}\\ \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 -2.4915457606612688 \cdot 10^{+266}:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \frac{{\left(e^{\varepsilon \cdot b}\right)}^{3} - 1}{e^{\varepsilon \cdot b} \cdot e^{\varepsilon \cdot b} + \left(1 + e^{\varepsilon \cdot b}\right)}}\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{b} + \frac{1}{a}\\

\end{array}
double f(double a, double b, double eps) {
        double r13205053 = eps;
        double r13205054 = a;
        double r13205055 = b;
        double r13205056 = r13205054 + r13205055;
        double r13205057 = r13205056 * r13205053;
        double r13205058 = exp(r13205057);
        double r13205059 = 1.0;
        double r13205060 = r13205058 - r13205059;
        double r13205061 = r13205053 * r13205060;
        double r13205062 = r13205054 * r13205053;
        double r13205063 = exp(r13205062);
        double r13205064 = r13205063 - r13205059;
        double r13205065 = r13205055 * r13205053;
        double r13205066 = exp(r13205065);
        double r13205067 = r13205066 - r13205059;
        double r13205068 = r13205064 * r13205067;
        double r13205069 = r13205061 / r13205068;
        return r13205069;
}

double f(double a, double b, double eps) {
        double r13205070 = b;
        double r13205071 = -2.4915457606612688e+266;
        bool r13205072 = r13205070 <= r13205071;
        double r13205073 = eps;
        double r13205074 = a;
        double r13205075 = r13205070 + r13205074;
        double r13205076 = r13205073 * r13205075;
        double r13205077 = exp(r13205076);
        double r13205078 = 1.0;
        double r13205079 = r13205077 - r13205078;
        double r13205080 = r13205073 * r13205079;
        double r13205081 = r13205073 * r13205074;
        double r13205082 = exp(r13205081);
        double r13205083 = r13205082 - r13205078;
        double r13205084 = r13205073 * r13205070;
        double r13205085 = exp(r13205084);
        double r13205086 = 3.0;
        double r13205087 = pow(r13205085, r13205086);
        double r13205088 = r13205087 - r13205078;
        double r13205089 = r13205085 * r13205085;
        double r13205090 = r13205078 + r13205085;
        double r13205091 = r13205089 + r13205090;
        double r13205092 = r13205088 / r13205091;
        double r13205093 = r13205083 * r13205092;
        double r13205094 = r13205080 / r13205093;
        double r13205095 = r13205078 / r13205070;
        double r13205096 = r13205078 / r13205074;
        double r13205097 = r13205095 + r13205096;
        double r13205098 = r13205072 ? r13205094 : r13205097;
        return r13205098;
}

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

Original58.7
Target14.5
Herbie4.0
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 2 regimes
  2. if b < -2.4915457606612688e+266

    1. Initial program 45.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. Using strategy rm
    3. Applied flip3--45.4

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

    if -2.4915457606612688e+266 < b

    1. Initial program 59.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 57.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. Simplified56.3

      \[\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. Taylor expanded around 0 3.0

      \[\leadsto \color{blue}{\frac{1}{a} + \frac{1}{b}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification4.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.4915457606612688 \cdot 10^{+266}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\varepsilon \cdot \left(b + a\right)} - 1\right)}{\left(e^{\varepsilon \cdot a} - 1\right) \cdot \frac{{\left(e^{\varepsilon \cdot b}\right)}^{3} - 1}{e^{\varepsilon \cdot b} \cdot e^{\varepsilon \cdot b} + \left(1 + e^{\varepsilon \cdot b}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{b} + \frac{1}{a}\\ \end{array}\]

Reproduce

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