Average Error: 60.2 → 53.5
Time: 13.0s
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 \mathsf{fma}\left(\frac{1}{6}, \left(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot {\left(\sqrt[3]{b}\right)}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\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 -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 \mathsf{fma}\left(\frac{1}{6}, \left(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot {\left(\sqrt[3]{b}\right)}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\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 r121264 = eps;
        double r121265 = a;
        double r121266 = b;
        double r121267 = r121265 + r121266;
        double r121268 = r121267 * r121264;
        double r121269 = exp(r121268);
        double r121270 = 1.0;
        double r121271 = r121269 - r121270;
        double r121272 = r121264 * r121271;
        double r121273 = r121265 * r121264;
        double r121274 = exp(r121273);
        double r121275 = r121274 - r121270;
        double r121276 = r121266 * r121264;
        double r121277 = exp(r121276);
        double r121278 = r121277 - r121270;
        double r121279 = r121275 * r121278;
        double r121280 = r121272 / r121279;
        return r121280;
}

double f(double a, double b, double eps) {
        double r121281 = a;
        double r121282 = -1.9693375139914443e+72;
        bool r121283 = r121281 <= r121282;
        double r121284 = 9.716140837926457e+126;
        bool r121285 = r121281 <= r121284;
        double r121286 = !r121285;
        bool r121287 = r121283 || r121286;
        double r121288 = eps;
        double r121289 = b;
        double r121290 = r121281 + r121289;
        double r121291 = r121290 * r121288;
        double r121292 = exp(r121291);
        double r121293 = 1.0;
        double r121294 = r121292 - r121293;
        double r121295 = 3.0;
        double r121296 = pow(r121294, r121295);
        double r121297 = cbrt(r121296);
        double r121298 = r121288 * r121297;
        double r121299 = r121281 * r121288;
        double r121300 = exp(r121299);
        double r121301 = r121300 - r121293;
        double r121302 = 0.16666666666666666;
        double r121303 = pow(r121288, r121295);
        double r121304 = r121303 * r121289;
        double r121305 = r121304 * r121289;
        double r121306 = cbrt(r121289);
        double r121307 = pow(r121306, r121295);
        double r121308 = r121305 * r121307;
        double r121309 = 0.5;
        double r121310 = 2.0;
        double r121311 = pow(r121288, r121310);
        double r121312 = pow(r121289, r121310);
        double r121313 = r121311 * r121312;
        double r121314 = r121288 * r121289;
        double r121315 = fma(r121309, r121313, r121314);
        double r121316 = fma(r121302, r121308, r121315);
        double r121317 = r121301 * r121316;
        double r121318 = r121298 / r121317;
        double r121319 = r121288 * r121294;
        double r121320 = pow(r121281, r121295);
        double r121321 = r121320 * r121303;
        double r121322 = pow(r121281, r121310);
        double r121323 = r121322 * r121311;
        double r121324 = fma(r121309, r121323, r121299);
        double r121325 = fma(r121302, r121321, r121324);
        double r121326 = r121289 * r121288;
        double r121327 = exp(r121326);
        double r121328 = r121327 - r121293;
        double r121329 = r121325 * r121328;
        double r121330 = r121319 / r121329;
        double r121331 = r121287 ? r121318 : r121330;
        return r121331;
}

Error

Bits error versus a

Bits error versus b

Bits error versus eps

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. Simplified46.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}{\mathsf{fma}\left(\frac{1}{6}, {\varepsilon}^{3} \cdot {b}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt46.9

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \mathsf{fma}\left(\frac{1}{6}, {\varepsilon}^{3} \cdot {\color{blue}{\left(\left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \sqrt[3]{b}\right)}}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}\]
    6. Applied unpow-prod-down46.9

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \mathsf{fma}\left(\frac{1}{6}, {\varepsilon}^{3} \cdot \color{blue}{\left({\left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right)}^{3} \cdot {\left(\sqrt[3]{b}\right)}^{3}\right)}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}\]
    7. 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 \mathsf{fma}\left(\frac{1}{6}, \color{blue}{\left({\varepsilon}^{3} \cdot {\left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right)}^{3}\right) \cdot {\left(\sqrt[3]{b}\right)}^{3}}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}\]
    8. Simplified45.3

      \[\leadsto \frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \mathsf{fma}\left(\frac{1}{6}, \color{blue}{\left(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right)} \cdot {\left(\sqrt[3]{b}\right)}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}\]
    9. Using strategy rm
    10. 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 \mathsf{fma}\left(\frac{1}{6}, \left(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot {\left(\sqrt[3]{b}\right)}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\right)\right)}\]
    11. 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 \mathsf{fma}\left(\frac{1}{6}, \left(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot {\left(\sqrt[3]{b}\right)}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \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. Simplified56.5

      \[\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 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 \mathsf{fma}\left(\frac{1}{6}, \left(\left({\varepsilon}^{3} \cdot b\right) \cdot b\right) \cdot {\left(\sqrt[3]{b}\right)}^{3}, \mathsf{fma}\left(\frac{1}{2}, {\varepsilon}^{2} \cdot {b}^{2}, \varepsilon \cdot b\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 2020001 +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))))