Average Error: 60.4 → 53.8
Time: 29.4s
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 -3.769180615523052145041500628953914450441 \cdot 10^{199}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\sqrt{e^{a \cdot \varepsilon}} + \sqrt{1}\right) \cdot \left(\left(\sqrt{e^{a \cdot \varepsilon}} - \sqrt{1}\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)\right)}\\ \mathbf{elif}\;a \le -1.038597880779305183664878388970788512797 \cdot 10^{87}:\\ \;\;\;\;\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 {b}^{3}\right) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\\ \mathbf{elif}\;a \le 220317097075129401207632210071965296230400:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\frac{1}{6} \cdot \left(\left(a \cdot a\right) \cdot \left(a \cdot {\varepsilon}^{3}\right)\right) + \left(\frac{1}{2} \cdot \log \left(e^{{a}^{2} \cdot {\varepsilon}^{2}}\right) + a \cdot \varepsilon\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\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 {b}^{3}\right) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\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}\;a \le -3.769180615523052145041500628953914450441 \cdot 10^{199}:\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\sqrt{e^{a \cdot \varepsilon}} + \sqrt{1}\right) \cdot \left(\left(\sqrt{e^{a \cdot \varepsilon}} - \sqrt{1}\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)\right)}\\

\mathbf{elif}\;a \le -1.038597880779305183664878388970788512797 \cdot 10^{87}:\\
\;\;\;\;\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 {b}^{3}\right) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\\

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

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

\end{array}
double f(double a, double b, double eps) {
        double r77987 = eps;
        double r77988 = a;
        double r77989 = b;
        double r77990 = r77988 + r77989;
        double r77991 = r77990 * r77987;
        double r77992 = exp(r77991);
        double r77993 = 1.0;
        double r77994 = r77992 - r77993;
        double r77995 = r77987 * r77994;
        double r77996 = r77988 * r77987;
        double r77997 = exp(r77996);
        double r77998 = r77997 - r77993;
        double r77999 = r77989 * r77987;
        double r78000 = exp(r77999);
        double r78001 = r78000 - r77993;
        double r78002 = r77998 * r78001;
        double r78003 = r77995 / r78002;
        return r78003;
}

double f(double a, double b, double eps) {
        double r78004 = a;
        double r78005 = -3.769180615523052e+199;
        bool r78006 = r78004 <= r78005;
        double r78007 = eps;
        double r78008 = b;
        double r78009 = r78004 + r78008;
        double r78010 = r78009 * r78007;
        double r78011 = exp(r78010);
        double r78012 = 1.0;
        double r78013 = r78011 - r78012;
        double r78014 = r78007 * r78013;
        double r78015 = r78004 * r78007;
        double r78016 = exp(r78015);
        double r78017 = sqrt(r78016);
        double r78018 = sqrt(r78012);
        double r78019 = r78017 + r78018;
        double r78020 = r78017 - r78018;
        double r78021 = r78008 * r78007;
        double r78022 = exp(r78021);
        double r78023 = r78022 - r78012;
        double r78024 = r78020 * r78023;
        double r78025 = r78019 * r78024;
        double r78026 = r78014 / r78025;
        double r78027 = -1.0385978807793052e+87;
        bool r78028 = r78004 <= r78027;
        double r78029 = r78016 - r78012;
        double r78030 = 0.16666666666666666;
        double r78031 = 3.0;
        double r78032 = pow(r78007, r78031);
        double r78033 = pow(r78008, r78031);
        double r78034 = r78032 * r78033;
        double r78035 = r78030 * r78034;
        double r78036 = 0.5;
        double r78037 = 2.0;
        double r78038 = pow(r78007, r78037);
        double r78039 = pow(r78008, r78037);
        double r78040 = r78038 * r78039;
        double r78041 = r78036 * r78040;
        double r78042 = r78007 * r78008;
        double r78043 = r78041 + r78042;
        double r78044 = r78035 + r78043;
        double r78045 = r78029 * r78044;
        double r78046 = r78014 / r78045;
        double r78047 = 2.203170970751294e+41;
        bool r78048 = r78004 <= r78047;
        double r78049 = r78004 * r78004;
        double r78050 = r78004 * r78032;
        double r78051 = r78049 * r78050;
        double r78052 = r78030 * r78051;
        double r78053 = pow(r78004, r78037);
        double r78054 = r78053 * r78038;
        double r78055 = exp(r78054);
        double r78056 = log(r78055);
        double r78057 = r78036 * r78056;
        double r78058 = r78057 + r78015;
        double r78059 = r78052 + r78058;
        double r78060 = r78059 * r78023;
        double r78061 = r78014 / r78060;
        double r78062 = r78048 ? r78061 : r78046;
        double r78063 = r78028 ? r78046 : r78062;
        double r78064 = r78006 ? r78026 : r78063;
        return r78064;
}

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.4
Target15.1
Herbie53.8
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 3 regimes
  2. if a < -3.769180615523052e+199

    1. Initial program 51.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 add-sqr-sqrt51.5

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - \color{blue}{\sqrt{1} \cdot \sqrt{1}}\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    4. Applied add-sqr-sqrt51.5

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

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\left(\left(\sqrt{e^{a \cdot \varepsilon}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{a \cdot \varepsilon}} - \sqrt{1}\right)\right)} \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    6. Applied associate-*l*51.5

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

    if -3.769180615523052e+199 < a < -1.0385978807793052e+87 or 2.203170970751294e+41 < a

    1. Initial program 55.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 49.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(\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)}}\]

    if -1.0385978807793052e+87 < a < 2.203170970751294e+41

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

      \[\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. Using strategy rm
    4. Applied unpow356.0

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\frac{1}{6} \cdot \left(\color{blue}{\left(\left(a \cdot a\right) \cdot a\right)} \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)}\]
    5. Applied associate-*l*56.0

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\frac{1}{6} \cdot \color{blue}{\left(\left(a \cdot a\right) \cdot \left(a \cdot {\varepsilon}^{3}\right)\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)}\]
    6. Using strategy rm
    7. Applied add-log-exp55.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -3.769180615523052145041500628953914450441 \cdot 10^{199}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\sqrt{e^{a \cdot \varepsilon}} + \sqrt{1}\right) \cdot \left(\left(\sqrt{e^{a \cdot \varepsilon}} - \sqrt{1}\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)\right)}\\ \mathbf{elif}\;a \le -1.038597880779305183664878388970788512797 \cdot 10^{87}:\\ \;\;\;\;\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 {b}^{3}\right) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\\ \mathbf{elif}\;a \le 220317097075129401207632210071965296230400:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(\frac{1}{6} \cdot \left(\left(a \cdot a\right) \cdot \left(a \cdot {\varepsilon}^{3}\right)\right) + \left(\frac{1}{2} \cdot \log \left(e^{{a}^{2} \cdot {\varepsilon}^{2}}\right) + a \cdot \varepsilon\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\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 {b}^{3}\right) + \left(\frac{1}{2} \cdot \left({\varepsilon}^{2} \cdot {b}^{2}\right) + \varepsilon \cdot b\right)\right)}\\ \end{array}\]

Reproduce

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