Average Error: 11.7 → 2.5
Time: 35.1s
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 r8576853 = a1;
        double r8576854 = a2;
        double r8576855 = r8576853 * r8576854;
        double r8576856 = b1;
        double r8576857 = b2;
        double r8576858 = r8576856 * r8576857;
        double r8576859 = r8576855 / r8576858;
        return r8576859;
}

double f(double a1, double a2, double b1, double b2) {
        double r8576860 = a1;
        double r8576861 = a2;
        double r8576862 = r8576860 * r8576861;
        double r8576863 = 4.966960556448252e-69;
        bool r8576864 = r8576862 <= r8576863;
        double r8576865 = cbrt(r8576861);
        double r8576866 = b2;
        double r8576867 = cbrt(r8576866);
        double r8576868 = r8576865 / r8576867;
        double r8576869 = b1;
        double r8576870 = cbrt(r8576869);
        double r8576871 = r8576868 / r8576870;
        double r8576872 = r8576871 * r8576871;
        double r8576873 = r8576872 * r8576860;
        double r8576874 = r8576871 * r8576873;
        double r8576875 = 8.502441457836898e+166;
        bool r8576876 = r8576862 <= r8576875;
        double r8576877 = r8576862 / r8576869;
        double r8576878 = r8576877 / r8576866;
        double r8576879 = r8576876 ? r8576878 : r8576874;
        double r8576880 = r8576864 ? r8576874 : r8576879;
        return r8576880;
}

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 associate-*l/10.9

      \[\leadsto \color{blue}{\frac{a1 \cdot \frac{a2}{b2}}{b1}}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity10.9

      \[\leadsto \frac{a1 \cdot \frac{a2}{b2}}{\color{blue}{1 \cdot b1}}\]
    8. Applied times-frac10.4

      \[\leadsto \color{blue}{\frac{a1}{1} \cdot \frac{\frac{a2}{b2}}{b1}}\]
    9. Simplified10.4

      \[\leadsto \color{blue}{a1} \cdot \frac{\frac{a2}{b2}}{b1}\]
    10. Using strategy rm
    11. 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}}}\]
    12. 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}}\]
    13. 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}}\]
    14. 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}}\]
    15. 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)}\]
    16. 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}}}\]
    17. 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 
(FPCore (a1 a2 b1 b2)
  :name "Quotient of products"

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

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