Average Error: 11.6 → 5.0
Time: 7.7s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -1.4931232845681356 \cdot 10^{168}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -2.0866604942007535 \cdot 10^{-124}:\\ \;\;\;\;\frac{1}{\frac{b2}{\frac{a1 \cdot a2}{b1}}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.01600999395086732 \cdot 10^{-257}:\\ \;\;\;\;\frac{\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \left(\sqrt[3]{a2} \cdot \sqrt[3]{a2}\right)}{\sqrt[3]{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2}}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.59608712487395094 \cdot 10^{126}:\\ \;\;\;\;\frac{1}{\frac{b2}{\frac{a1 \cdot a2}{b1}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -1.4931232845681356 \cdot 10^{168}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\

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

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

\mathbf{elif}\;a1 \cdot a2 \le 1.59608712487395094 \cdot 10^{126}:\\
\;\;\;\;\frac{1}{\frac{b2}{\frac{a1 \cdot a2}{b1}}}\\

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r174058 = a1;
        double r174059 = a2;
        double r174060 = r174058 * r174059;
        double r174061 = b1;
        double r174062 = b2;
        double r174063 = r174061 * r174062;
        double r174064 = r174060 / r174063;
        return r174064;
}

double f(double a1, double a2, double b1, double b2) {
        double r174065 = a1;
        double r174066 = a2;
        double r174067 = r174065 * r174066;
        double r174068 = -1.4931232845681356e+168;
        bool r174069 = r174067 <= r174068;
        double r174070 = b1;
        double r174071 = r174065 / r174070;
        double r174072 = b2;
        double r174073 = r174066 / r174072;
        double r174074 = r174071 * r174073;
        double r174075 = -2.0866604942007535e-124;
        bool r174076 = r174067 <= r174075;
        double r174077 = 1.0;
        double r174078 = r174067 / r174070;
        double r174079 = r174072 / r174078;
        double r174080 = r174077 / r174079;
        double r174081 = 1.0160099939508673e-257;
        bool r174082 = r174067 <= r174081;
        double r174083 = cbrt(r174070);
        double r174084 = r174083 * r174083;
        double r174085 = r174065 / r174084;
        double r174086 = cbrt(r174072);
        double r174087 = r174086 * r174086;
        double r174088 = r174085 / r174087;
        double r174089 = cbrt(r174066);
        double r174090 = r174089 * r174089;
        double r174091 = r174088 * r174090;
        double r174092 = cbrt(r174087);
        double r174093 = r174091 / r174092;
        double r174094 = r174089 / r174083;
        double r174095 = cbrt(r174086);
        double r174096 = r174094 / r174095;
        double r174097 = r174093 * r174096;
        double r174098 = 1.596087124873951e+126;
        bool r174099 = r174067 <= r174098;
        double r174100 = r174066 / r174083;
        double r174101 = r174100 / r174086;
        double r174102 = r174088 * r174101;
        double r174103 = r174099 ? r174080 : r174102;
        double r174104 = r174082 ? r174097 : r174103;
        double r174105 = r174076 ? r174080 : r174104;
        double r174106 = r174069 ? r174074 : r174105;
        return r174106;
}

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.6
Target11.3
Herbie5.0
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 4 regimes
  2. if (* a1 a2) < -1.4931232845681356e+168

    1. Initial program 30.4

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

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

    if -1.4931232845681356e+168 < (* a1 a2) < -2.0866604942007535e-124 or 1.0160099939508673e-257 < (* a1 a2) < 1.596087124873951e+126

    1. Initial program 4.0

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

      \[\leadsto \color{blue}{\frac{\frac{a1 \cdot a2}{b1}}{b2}}\]
    4. Using strategy rm
    5. Applied clear-num4.1

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

    if -2.0866604942007535e-124 < (* a1 a2) < 1.0160099939508673e-257

    1. Initial program 14.7

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

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

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

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

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

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

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

      \[\leadsto \frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\color{blue}{\sqrt[3]{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \sqrt[3]{\sqrt[3]{b2}}}}\]
    12. Applied *-un-lft-identity3.6

      \[\leadsto \frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{a2}{\color{blue}{1 \cdot \sqrt[3]{b1}}}}{\sqrt[3]{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \sqrt[3]{\sqrt[3]{b2}}}\]
    13. Applied add-cube-cbrt3.6

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

      \[\leadsto \frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\color{blue}{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{1} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}}}{\sqrt[3]{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \sqrt[3]{\sqrt[3]{b2}}}\]
    15. Applied times-frac3.0

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

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

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

    if 1.596087124873951e+126 < (* a1 a2)

    1. Initial program 25.3

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -1.4931232845681356 \cdot 10^{168}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -2.0866604942007535 \cdot 10^{-124}:\\ \;\;\;\;\frac{1}{\frac{b2}{\frac{a1 \cdot a2}{b1}}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.01600999395086732 \cdot 10^{-257}:\\ \;\;\;\;\frac{\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \left(\sqrt[3]{a2} \cdot \sqrt[3]{a2}\right)}{\sqrt[3]{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2}}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.59608712487395094 \cdot 10^{126}:\\ \;\;\;\;\frac{1}{\frac{b2}{\frac{a1 \cdot a2}{b1}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \end{array}\]

Reproduce

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

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

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