Average Error: 11.5 → 4.9
Time: 14.0s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -2.690573134936579355188068325109566692365 \cdot 10^{214}:\\ \;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\ \mathbf{elif}\;b1 \cdot b2 \le -4.337432395097420768246040584874582122161 \cdot 10^{-223}:\\ \;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \frac{\sqrt[3]{a1} \cdot a2}{b1 \cdot b2}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.239318929799362337308674794520138114567 \cdot 10^{-121}:\\ \;\;\;\;\frac{a2}{b2} \cdot \frac{a1}{b1}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.135669594507262246668248770076436070243 \cdot 10^{239}:\\ \;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \frac{\sqrt[3]{a1} \cdot a2}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -2.690573134936579355188068325109566692365 \cdot 10^{214}:\\
\;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\

\mathbf{elif}\;b1 \cdot b2 \le -4.337432395097420768246040584874582122161 \cdot 10^{-223}:\\
\;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \frac{\sqrt[3]{a1} \cdot a2}{b1 \cdot b2}\\

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

\mathbf{elif}\;b1 \cdot b2 \le 1.135669594507262246668248770076436070243 \cdot 10^{239}:\\
\;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \frac{\sqrt[3]{a1} \cdot a2}{b1 \cdot b2}\\

\mathbf{else}:\\
\;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r101925 = a1;
        double r101926 = a2;
        double r101927 = r101925 * r101926;
        double r101928 = b1;
        double r101929 = b2;
        double r101930 = r101928 * r101929;
        double r101931 = r101927 / r101930;
        return r101931;
}

double f(double a1, double a2, double b1, double b2) {
        double r101932 = b1;
        double r101933 = b2;
        double r101934 = r101932 * r101933;
        double r101935 = -2.6905731349365794e+214;
        bool r101936 = r101934 <= r101935;
        double r101937 = a1;
        double r101938 = a2;
        double r101939 = r101938 / r101933;
        double r101940 = r101937 * r101939;
        double r101941 = r101940 / r101932;
        double r101942 = -4.337432395097421e-223;
        bool r101943 = r101934 <= r101942;
        double r101944 = cbrt(r101937);
        double r101945 = r101944 * r101944;
        double r101946 = r101944 * r101938;
        double r101947 = r101946 / r101934;
        double r101948 = r101945 * r101947;
        double r101949 = 1.2393189297993623e-121;
        bool r101950 = r101934 <= r101949;
        double r101951 = r101937 / r101932;
        double r101952 = r101939 * r101951;
        double r101953 = 1.1356695945072622e+239;
        bool r101954 = r101934 <= r101953;
        double r101955 = r101954 ? r101948 : r101941;
        double r101956 = r101950 ? r101952 : r101955;
        double r101957 = r101943 ? r101948 : r101956;
        double r101958 = r101936 ? r101941 : r101957;
        return r101958;
}

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.3
Herbie4.9
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 3 regimes
  2. if (* b1 b2) < -2.6905731349365794e+214 or 1.1356695945072622e+239 < (* b1 b2)

    1. Initial program 16.9

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Simplified17.1

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

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

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

      \[\leadsto a1 \cdot \left(\color{blue}{\left(\frac{\sqrt[3]{a2}}{b1} \cdot \sqrt[3]{a2}\right)} \cdot \frac{\sqrt[3]{a2}}{b2}\right)\]
    7. Using strategy rm
    8. Applied associate-*l/7.6

      \[\leadsto a1 \cdot \left(\color{blue}{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1}} \cdot \frac{\sqrt[3]{a2}}{b2}\right)\]
    9. Applied associate-*l/7.7

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

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

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

    if -2.6905731349365794e+214 < (* b1 b2) < -4.337432395097421e-223 or 1.2393189297993623e-121 < (* b1 b2) < 1.1356695945072622e+239

    1. Initial program 4.6

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Simplified4.1

      \[\leadsto \color{blue}{a1 \cdot \frac{a2}{b1 \cdot b2}}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt4.9

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

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

      \[\leadsto a1 \cdot \left(\color{blue}{\left(\frac{\sqrt[3]{a2}}{b1} \cdot \sqrt[3]{a2}\right)} \cdot \frac{\sqrt[3]{a2}}{b2}\right)\]
    7. Using strategy rm
    8. Applied pow19.9

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

      \[\leadsto a1 \cdot \left(\left(\frac{\sqrt[3]{a2}}{b1} \cdot \color{blue}{{\left(\sqrt[3]{a2}\right)}^{1}}\right) \cdot {\left(\frac{\sqrt[3]{a2}}{b2}\right)}^{1}\right)\]
    10. Applied pow19.9

      \[\leadsto a1 \cdot \left(\left(\color{blue}{{\left(\frac{\sqrt[3]{a2}}{b1}\right)}^{1}} \cdot {\left(\sqrt[3]{a2}\right)}^{1}\right) \cdot {\left(\frac{\sqrt[3]{a2}}{b2}\right)}^{1}\right)\]
    11. Applied pow-prod-down9.9

      \[\leadsto a1 \cdot \left(\color{blue}{{\left(\frac{\sqrt[3]{a2}}{b1} \cdot \sqrt[3]{a2}\right)}^{1}} \cdot {\left(\frac{\sqrt[3]{a2}}{b2}\right)}^{1}\right)\]
    12. Applied pow-prod-down9.9

      \[\leadsto a1 \cdot \color{blue}{{\left(\left(\frac{\sqrt[3]{a2}}{b1} \cdot \sqrt[3]{a2}\right) \cdot \frac{\sqrt[3]{a2}}{b2}\right)}^{1}}\]
    13. Simplified11.0

      \[\leadsto a1 \cdot {\color{blue}{\left(\frac{\frac{a2}{b2}}{b1}\right)}}^{1}\]
    14. Using strategy rm
    15. Applied add-cube-cbrt11.7

      \[\leadsto \color{blue}{\left(\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \sqrt[3]{a1}\right)} \cdot {\left(\frac{\frac{a2}{b2}}{b1}\right)}^{1}\]
    16. Applied associate-*l*11.7

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

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

    if -4.337432395097421e-223 < (* b1 b2) < 1.2393189297993623e-121

    1. Initial program 27.1

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Simplified28.8

      \[\leadsto \color{blue}{a1 \cdot \frac{a2}{b1 \cdot b2}}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity28.8

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -2.690573134936579355188068325109566692365 \cdot 10^{214}:\\ \;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\ \mathbf{elif}\;b1 \cdot b2 \le -4.337432395097420768246040584874582122161 \cdot 10^{-223}:\\ \;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \frac{\sqrt[3]{a1} \cdot a2}{b1 \cdot b2}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.239318929799362337308674794520138114567 \cdot 10^{-121}:\\ \;\;\;\;\frac{a2}{b2} \cdot \frac{a1}{b1}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.135669594507262246668248770076436070243 \cdot 10^{239}:\\ \;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \frac{\sqrt[3]{a1} \cdot a2}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\ \end{array}\]

Reproduce

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

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

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