Average Error: 10.8 → 4.5
Time: 17.3s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -1.1651635672232977 \cdot 10^{+174}:\\ \;\;\;\;\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}} \cdot \frac{a1}{\left(\frac{\sqrt[3]{b2}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{b2}}{\sqrt[3]{a2}}\right) \cdot b1}\\ \mathbf{elif}\;a1 \cdot a2 \le -1.081528776198653 \cdot 10^{-187}:\\ \;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\ \mathbf{elif}\;a1 \cdot a2 \le 6.553087499451647 \cdot 10^{-288}:\\ \;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.1523086834107354 \cdot 10^{+125}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\sqrt[3]{a1}}{b1} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\right) \cdot \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\frac{\sqrt[3]{b2}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{b2}}{\sqrt[3]{a2}}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -1.1651635672232977 \cdot 10^{+174}:\\
\;\;\;\;\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}} \cdot \frac{a1}{\left(\frac{\sqrt[3]{b2}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{b2}}{\sqrt[3]{a2}}\right) \cdot b1}\\

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

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

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

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r5173778 = a1;
        double r5173779 = a2;
        double r5173780 = r5173778 * r5173779;
        double r5173781 = b1;
        double r5173782 = b2;
        double r5173783 = r5173781 * r5173782;
        double r5173784 = r5173780 / r5173783;
        return r5173784;
}

double f(double a1, double a2, double b1, double b2) {
        double r5173785 = a1;
        double r5173786 = a2;
        double r5173787 = r5173785 * r5173786;
        double r5173788 = -1.1651635672232977e+174;
        bool r5173789 = r5173787 <= r5173788;
        double r5173790 = cbrt(r5173786);
        double r5173791 = b2;
        double r5173792 = cbrt(r5173791);
        double r5173793 = r5173790 / r5173792;
        double r5173794 = r5173792 / r5173790;
        double r5173795 = r5173794 * r5173794;
        double r5173796 = b1;
        double r5173797 = r5173795 * r5173796;
        double r5173798 = r5173785 / r5173797;
        double r5173799 = r5173793 * r5173798;
        double r5173800 = -1.081528776198653e-187;
        bool r5173801 = r5173787 <= r5173800;
        double r5173802 = r5173791 * r5173796;
        double r5173803 = r5173787 / r5173802;
        double r5173804 = 6.553087499451647e-288;
        bool r5173805 = r5173787 <= r5173804;
        double r5173806 = r5173786 / r5173791;
        double r5173807 = r5173806 / r5173796;
        double r5173808 = r5173785 * r5173807;
        double r5173809 = 1.1523086834107354e+125;
        bool r5173810 = r5173787 <= r5173809;
        double r5173811 = r5173787 / r5173796;
        double r5173812 = r5173811 / r5173791;
        double r5173813 = cbrt(r5173785);
        double r5173814 = r5173813 / r5173796;
        double r5173815 = r5173814 * r5173793;
        double r5173816 = r5173813 * r5173813;
        double r5173817 = r5173816 / r5173795;
        double r5173818 = r5173815 * r5173817;
        double r5173819 = r5173810 ? r5173812 : r5173818;
        double r5173820 = r5173805 ? r5173808 : r5173819;
        double r5173821 = r5173801 ? r5173803 : r5173820;
        double r5173822 = r5173789 ? r5173799 : r5173821;
        return r5173822;
}

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

Original10.8
Target10.6
Herbie4.5
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 5 regimes
  2. if (* a1 a2) < -1.1651635672232977e+174

    1. Initial program 28.5

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

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

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

      \[\leadsto \frac{a1}{b1} \cdot \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}}\]
    7. Applied times-frac11.5

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

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

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

    if -1.1651635672232977e+174 < (* a1 a2) < -1.081528776198653e-187

    1. Initial program 3.5

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

      \[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
    4. Taylor expanded around 0 3.5

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

    if -1.081528776198653e-187 < (* a1 a2) < 6.553087499451647e-288

    1. Initial program 16.0

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

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

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

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

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

    if 6.553087499451647e-288 < (* a1 a2) < 1.1523086834107354e+125

    1. Initial program 4.2

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

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

    if 1.1523086834107354e+125 < (* a1 a2)

    1. Initial program 23.4

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

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

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

      \[\leadsto \frac{a1}{b1} \cdot \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}}\]
    7. Applied times-frac13.3

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

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

      \[\leadsto \color{blue}{\frac{a1}{\left(\frac{\sqrt[3]{b2}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{b2}}{\sqrt[3]{a2}}\right) \cdot b1}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\]
    10. Using strategy rm
    11. Applied add-cube-cbrt6.4

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -1.1651635672232977 \cdot 10^{+174}:\\ \;\;\;\;\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}} \cdot \frac{a1}{\left(\frac{\sqrt[3]{b2}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{b2}}{\sqrt[3]{a2}}\right) \cdot b1}\\ \mathbf{elif}\;a1 \cdot a2 \le -1.081528776198653 \cdot 10^{-187}:\\ \;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\ \mathbf{elif}\;a1 \cdot a2 \le 6.553087499451647 \cdot 10^{-288}:\\ \;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.1523086834107354 \cdot 10^{+125}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\sqrt[3]{a1}}{b1} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\right) \cdot \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\frac{\sqrt[3]{b2}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{b2}}{\sqrt[3]{a2}}}\\ \end{array}\]

Reproduce

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

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

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