Average Error: 11.7 → 2.5
Time: 34.9s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le 4.966960556448252 \cdot 10^{-69}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \left(\left(\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}}\right) \cdot a1\right)\\ \mathbf{elif}\;a1 \cdot a2 \le 8.502441457836898 \cdot 10^{+166}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \left(\left(\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}}\right) \cdot a1\right)\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le 4.966960556448252 \cdot 10^{-69}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \left(\left(\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}}\right) \cdot a1\right)\\

\mathbf{elif}\;a1 \cdot a2 \le 8.502441457836898 \cdot 10^{+166}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r28860238 = a1;
        double r28860239 = a2;
        double r28860240 = r28860238 * r28860239;
        double r28860241 = b1;
        double r28860242 = b2;
        double r28860243 = r28860241 * r28860242;
        double r28860244 = r28860240 / r28860243;
        return r28860244;
}

double f(double a1, double a2, double b1, double b2) {
        double r28860245 = a1;
        double r28860246 = a2;
        double r28860247 = r28860245 * r28860246;
        double r28860248 = 4.966960556448252e-69;
        bool r28860249 = r28860247 <= r28860248;
        double r28860250 = cbrt(r28860246);
        double r28860251 = b2;
        double r28860252 = cbrt(r28860251);
        double r28860253 = r28860250 / r28860252;
        double r28860254 = b1;
        double r28860255 = cbrt(r28860254);
        double r28860256 = r28860253 / r28860255;
        double r28860257 = r28860256 * r28860256;
        double r28860258 = r28860257 * r28860245;
        double r28860259 = r28860256 * r28860258;
        double r28860260 = 8.502441457836898e+166;
        bool r28860261 = r28860247 <= r28860260;
        double r28860262 = r28860247 / r28860254;
        double r28860263 = r28860262 / r28860251;
        double r28860264 = r28860261 ? r28860263 : r28860259;
        double r28860265 = r28860249 ? r28860259 : r28860264;
        return r28860265;
}

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.7
Target11.4
Herbie2.5
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 2 regimes
  2. if (* a1 a2) < 4.966960556448252e-69 or 8.502441457836898e+166 < (* a1 a2)

    1. Initial program 13.4

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

      \[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
    4. Using strategy rm
    5. Applied div-inv10.3

      \[\leadsto \color{blue}{\left(a1 \cdot \frac{1}{b1}\right)} \cdot \frac{a2}{b2}\]
    6. Applied associate-*l*10.4

      \[\leadsto \color{blue}{a1 \cdot \left(\frac{1}{b1} \cdot \frac{a2}{b2}\right)}\]
    7. Simplified10.4

      \[\leadsto a1 \cdot \color{blue}{\frac{\frac{a2}{b2}}{b1}}\]
    8. Using strategy rm
    9. Applied add-cube-cbrt11.0

      \[\leadsto a1 \cdot \frac{\frac{a2}{b2}}{\color{blue}{\left(\sqrt[3]{b1} \cdot \sqrt[3]{b1}\right) \cdot \sqrt[3]{b1}}}\]
    10. Applied add-cube-cbrt11.1

      \[\leadsto a1 \cdot \frac{\frac{a2}{\color{blue}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \sqrt[3]{b2}}}}{\left(\sqrt[3]{b1} \cdot \sqrt[3]{b1}\right) \cdot \sqrt[3]{b1}}\]
    11. Applied add-cube-cbrt11.2

      \[\leadsto a1 \cdot \frac{\frac{\color{blue}{\left(\sqrt[3]{a2} \cdot \sqrt[3]{a2}\right) \cdot \sqrt[3]{a2}}}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \sqrt[3]{b2}}}{\left(\sqrt[3]{b1} \cdot \sqrt[3]{b1}\right) \cdot \sqrt[3]{b1}}\]
    12. Applied times-frac11.2

      \[\leadsto a1 \cdot \frac{\color{blue}{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}}{\left(\sqrt[3]{b1} \cdot \sqrt[3]{b1}\right) \cdot \sqrt[3]{b1}}\]
    13. Applied times-frac7.5

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

      \[\leadsto \color{blue}{\left(a1 \cdot \frac{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}\right) \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}}}\]
    15. Simplified2.2

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

    if 4.966960556448252e-69 < (* a1 a2) < 8.502441457836898e+166

    1. Initial program 3.5

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

      \[\leadsto \color{blue}{\frac{\frac{a1 \cdot a2}{b1}}{b2}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le 4.966960556448252 \cdot 10^{-69}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \left(\left(\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}}\right) \cdot a1\right)\\ \mathbf{elif}\;a1 \cdot a2 \le 8.502441457836898 \cdot 10^{+166}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \left(\left(\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}}\right) \cdot a1\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019128 +o rules:numerics
(FPCore (a1 a2 b1 b2)
  :name "Quotient of products"

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

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