Average Error: 11.5 → 5.3
Time: 28.3s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 = -\infty:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -4.369619197843261223988403902442698260098 \cdot 10^{-287}:\\ \;\;\;\;\frac{1}{\frac{b2 \cdot b1}{a1 \cdot a2}}\\ \mathbf{elif}\;a1 \cdot a2 \le 2.983618642889101104598899002423951855124 \cdot 10^{-209}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 2.269899606291676636189977388218092617797 \cdot 10^{224}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\sqrt[3]{b2}} \cdot \left(a2 \cdot \frac{\frac{\sqrt[3]{\frac{1}{b2}} \cdot a1}{b1}}{\sqrt[3]{b2}}\right)\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 = -\infty:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\

\mathbf{elif}\;a1 \cdot a2 \le -4.369619197843261223988403902442698260098 \cdot 10^{-287}:\\
\;\;\;\;\frac{1}{\frac{b2 \cdot b1}{a1 \cdot a2}}\\

\mathbf{elif}\;a1 \cdot a2 \le 2.983618642889101104598899002423951855124 \cdot 10^{-209}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\

\mathbf{elif}\;a1 \cdot a2 \le 2.269899606291676636189977388218092617797 \cdot 10^{224}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt[3]{b2}} \cdot \left(a2 \cdot \frac{\frac{\sqrt[3]{\frac{1}{b2}} \cdot a1}{b1}}{\sqrt[3]{b2}}\right)\\

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r6141546 = a1;
        double r6141547 = a2;
        double r6141548 = r6141546 * r6141547;
        double r6141549 = b1;
        double r6141550 = b2;
        double r6141551 = r6141549 * r6141550;
        double r6141552 = r6141548 / r6141551;
        return r6141552;
}

double f(double a1, double a2, double b1, double b2) {
        double r6141553 = a1;
        double r6141554 = a2;
        double r6141555 = r6141553 * r6141554;
        double r6141556 = -inf.0;
        bool r6141557 = r6141555 <= r6141556;
        double r6141558 = b1;
        double r6141559 = r6141553 / r6141558;
        double r6141560 = b2;
        double r6141561 = r6141554 / r6141560;
        double r6141562 = r6141559 * r6141561;
        double r6141563 = -4.369619197843261e-287;
        bool r6141564 = r6141555 <= r6141563;
        double r6141565 = 1.0;
        double r6141566 = r6141560 * r6141558;
        double r6141567 = r6141566 / r6141555;
        double r6141568 = r6141565 / r6141567;
        double r6141569 = 2.983618642889101e-209;
        bool r6141570 = r6141555 <= r6141569;
        double r6141571 = 2.2698996062916766e+224;
        bool r6141572 = r6141555 <= r6141571;
        double r6141573 = r6141555 / r6141558;
        double r6141574 = r6141573 / r6141560;
        double r6141575 = cbrt(r6141560);
        double r6141576 = r6141565 / r6141575;
        double r6141577 = r6141565 / r6141560;
        double r6141578 = cbrt(r6141577);
        double r6141579 = r6141578 * r6141553;
        double r6141580 = r6141579 / r6141558;
        double r6141581 = r6141580 / r6141575;
        double r6141582 = r6141554 * r6141581;
        double r6141583 = r6141576 * r6141582;
        double r6141584 = r6141572 ? r6141574 : r6141583;
        double r6141585 = r6141570 ? r6141562 : r6141584;
        double r6141586 = r6141564 ? r6141568 : r6141585;
        double r6141587 = r6141557 ? r6141562 : r6141586;
        return r6141587;
}

Error

Bits error versus a1

Bits error versus a2

Bits error versus b1

Bits error versus b2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original11.5
Target11.1
Herbie5.3
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 4 regimes
  2. if (* a1 a2) < -inf.0 or -4.369619197843261e-287 < (* a1 a2) < 2.983618642889101e-209

    1. Initial program 21.8

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied times-frac4.0

      \[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]

    if -inf.0 < (* a1 a2) < -4.369619197843261e-287

    1. Initial program 5.9

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied clear-num6.2

      \[\leadsto \color{blue}{\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}}\]

    if 2.983618642889101e-209 < (* a1 a2) < 2.2698996062916766e+224

    1. Initial program 4.8

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied associate-/r*4.4

      \[\leadsto \color{blue}{\frac{\frac{a1 \cdot a2}{b1}}{b2}}\]

    if 2.2698996062916766e+224 < (* a1 a2)

    1. Initial program 38.1

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied times-frac11.2

      \[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt12.0

      \[\leadsto \frac{a1}{b1} \cdot \frac{a2}{\color{blue}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \sqrt[3]{b2}}}\]
    6. Applied *-un-lft-identity12.0

      \[\leadsto \frac{a1}{b1} \cdot \frac{\color{blue}{1 \cdot a2}}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \sqrt[3]{b2}}\]
    7. Applied times-frac12.0

      \[\leadsto \frac{a1}{b1} \cdot \color{blue}{\left(\frac{1}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}\right)}\]
    8. Applied associate-*r*9.8

      \[\leadsto \color{blue}{\left(\frac{a1}{b1} \cdot \frac{1}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}\right) \cdot \frac{a2}{\sqrt[3]{b2}}}\]
    9. Simplified9.8

      \[\leadsto \color{blue}{\frac{\frac{\frac{a1}{b1}}{\sqrt[3]{b2}}}{\sqrt[3]{b2}}} \cdot \frac{a2}{\sqrt[3]{b2}}\]
    10. Taylor expanded around 0 38.0

      \[\leadsto \frac{\color{blue}{\frac{a1}{b1} \cdot {\left(\frac{1}{b2}\right)}^{\frac{1}{3}}}}{\sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}\]
    11. Simplified8.5

      \[\leadsto \frac{\color{blue}{\frac{a1 \cdot \sqrt[3]{\frac{1}{b2}}}{b1}}}{\sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}\]
    12. Using strategy rm
    13. Applied div-inv8.5

      \[\leadsto \frac{\frac{a1 \cdot \sqrt[3]{\frac{1}{b2}}}{b1}}{\sqrt[3]{b2}} \cdot \color{blue}{\left(a2 \cdot \frac{1}{\sqrt[3]{b2}}\right)}\]
    14. Applied associate-*r*10.6

      \[\leadsto \color{blue}{\left(\frac{\frac{a1 \cdot \sqrt[3]{\frac{1}{b2}}}{b1}}{\sqrt[3]{b2}} \cdot a2\right) \cdot \frac{1}{\sqrt[3]{b2}}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification5.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 = -\infty:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -4.369619197843261223988403902442698260098 \cdot 10^{-287}:\\ \;\;\;\;\frac{1}{\frac{b2 \cdot b1}{a1 \cdot a2}}\\ \mathbf{elif}\;a1 \cdot a2 \le 2.983618642889101104598899002423951855124 \cdot 10^{-209}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 2.269899606291676636189977388218092617797 \cdot 10^{224}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\sqrt[3]{b2}} \cdot \left(a2 \cdot \frac{\frac{\sqrt[3]{\frac{1}{b2}} \cdot a1}{b1}}{\sqrt[3]{b2}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019172 
(FPCore (a1 a2 b1 b2)
  :name "Quotient of products"

  :herbie-target
  (* (/ a1 b1) (/ a2 b2))

  (/ (* a1 a2) (* b1 b2)))