Average Error: 59.4 → 58.7
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 -3.6563033602620086 \cdot 10^{36} \lor \neg \left(a \le 2.575614997139679 \cdot 10^{-24}\right):\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\log \left(e^{e^{a \cdot \varepsilon} - 1}\right) \cdot \left(\left(\sqrt{e^{b \cdot \varepsilon}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{b \cdot \varepsilon}} - \sqrt{1}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\mathsf{fma}\left(\frac{1}{6}, {a}^{3} \cdot {\varepsilon}^{3}, \mathsf{fma}\left(\frac{1}{2}, {a}^{2} \cdot {\varepsilon}^{2}, 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 -3.6563033602620086 \cdot 10^{36} \lor \neg \left(a \le 2.575614997139679 \cdot 10^{-24}\right):\\
\;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\log \left(e^{e^{a \cdot \varepsilon} - 1}\right) \cdot \left(\left(\sqrt{e^{b \cdot \varepsilon}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{b \cdot \varepsilon}} - \sqrt{1}\right)\right)}\\

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

\end{array}
double f(double a, double b, double eps) {
        double r125149 = eps;
        double r125150 = a;
        double r125151 = b;
        double r125152 = r125150 + r125151;
        double r125153 = r125152 * r125149;
        double r125154 = exp(r125153);
        double r125155 = 1.0;
        double r125156 = r125154 - r125155;
        double r125157 = r125149 * r125156;
        double r125158 = r125150 * r125149;
        double r125159 = exp(r125158);
        double r125160 = r125159 - r125155;
        double r125161 = r125151 * r125149;
        double r125162 = exp(r125161);
        double r125163 = r125162 - r125155;
        double r125164 = r125160 * r125163;
        double r125165 = r125157 / r125164;
        return r125165;
}

double f(double a, double b, double eps) {
        double r125166 = a;
        double r125167 = -3.6563033602620086e+36;
        bool r125168 = r125166 <= r125167;
        double r125169 = 2.5756149971396786e-24;
        bool r125170 = r125166 <= r125169;
        double r125171 = !r125170;
        bool r125172 = r125168 || r125171;
        double r125173 = eps;
        double r125174 = b;
        double r125175 = r125166 + r125174;
        double r125176 = r125175 * r125173;
        double r125177 = exp(r125176);
        double r125178 = 1.0;
        double r125179 = r125177 - r125178;
        double r125180 = r125173 * r125179;
        double r125181 = r125166 * r125173;
        double r125182 = exp(r125181);
        double r125183 = r125182 - r125178;
        double r125184 = exp(r125183);
        double r125185 = log(r125184);
        double r125186 = r125174 * r125173;
        double r125187 = exp(r125186);
        double r125188 = sqrt(r125187);
        double r125189 = sqrt(r125178);
        double r125190 = r125188 + r125189;
        double r125191 = r125188 - r125189;
        double r125192 = r125190 * r125191;
        double r125193 = r125185 * r125192;
        double r125194 = r125180 / r125193;
        double r125195 = 0.16666666666666666;
        double r125196 = 3.0;
        double r125197 = pow(r125166, r125196);
        double r125198 = pow(r125173, r125196);
        double r125199 = r125197 * r125198;
        double r125200 = 0.5;
        double r125201 = 2.0;
        double r125202 = pow(r125166, r125201);
        double r125203 = pow(r125173, r125201);
        double r125204 = r125202 * r125203;
        double r125205 = fma(r125200, r125204, r125181);
        double r125206 = fma(r125195, r125199, r125205);
        double r125207 = r125187 - r125178;
        double r125208 = r125206 * r125207;
        double r125209 = r125180 / r125208;
        double r125210 = r125172 ? r125194 : r125209;
        return r125210;
}

Error

Bits error versus a

Bits error versus b

Bits error versus eps

Target

Original59.4
Target17.0
Herbie58.7
\[\frac{a + b}{a \cdot b}\]

Derivation

  1. Split input into 2 regimes
  2. if a < -3.6563033602620086e+36 or 2.5756149971396786e-24 < a

    1. Initial program 52.7

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

      \[\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}}} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    4. Applied fma-neg52.7

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\mathsf{fma}\left(\sqrt{e^{a \cdot \varepsilon}}, \sqrt{e^{a \cdot \varepsilon}}, -1\right)} \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt52.7

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\mathsf{fma}\left(\sqrt{e^{a \cdot \varepsilon}}, \sqrt{e^{a \cdot \varepsilon}}, -1\right) \cdot \left(e^{b \cdot \varepsilon} - \color{blue}{\sqrt{1} \cdot \sqrt{1}}\right)}\]
    7. Applied add-sqr-sqrt52.7

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\mathsf{fma}\left(\sqrt{e^{a \cdot \varepsilon}}, \sqrt{e^{a \cdot \varepsilon}}, -1\right) \cdot \left(\color{blue}{\sqrt{e^{b \cdot \varepsilon}} \cdot \sqrt{e^{b \cdot \varepsilon}}} - \sqrt{1} \cdot \sqrt{1}\right)}\]
    8. Applied difference-of-squares52.7

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\mathsf{fma}\left(\sqrt{e^{a \cdot \varepsilon}}, \sqrt{e^{a \cdot \varepsilon}}, -1\right) \cdot \color{blue}{\left(\left(\sqrt{e^{b \cdot \varepsilon}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{b \cdot \varepsilon}} - \sqrt{1}\right)\right)}}\]
    9. Using strategy rm
    10. Applied add-log-exp52.8

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\color{blue}{\log \left(e^{\mathsf{fma}\left(\sqrt{e^{a \cdot \varepsilon}}, \sqrt{e^{a \cdot \varepsilon}}, -1\right)}\right)} \cdot \left(\left(\sqrt{e^{b \cdot \varepsilon}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{b \cdot \varepsilon}} - \sqrt{1}\right)\right)}\]
    11. Simplified52.8

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

    if -3.6563033602620086e+36 < a < 2.5756149971396786e-24

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -3.6563033602620086 \cdot 10^{36} \lor \neg \left(a \le 2.575614997139679 \cdot 10^{-24}\right):\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\log \left(e^{e^{a \cdot \varepsilon} - 1}\right) \cdot \left(\left(\sqrt{e^{b \cdot \varepsilon}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{b \cdot \varepsilon}} - \sqrt{1}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\mathsf{fma}\left(\frac{1}{6}, {a}^{3} \cdot {\varepsilon}^{3}, \mathsf{fma}\left(\frac{1}{2}, {a}^{2} \cdot {\varepsilon}^{2}, a \cdot \varepsilon\right)\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}\\ \end{array}\]

Reproduce

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