Average Error: 11.2 → 1.9
Time: 2.7m
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -4.57378486630527 \cdot 10^{-309}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 1.1129784645222681 \cdot 10^{+303}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2}}} \cdot \frac{\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}{\frac{\sqrt[3]{\sqrt[3]{b2}}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{\sqrt[3]{b2}}}{\sqrt[3]{a2}}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\

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

\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\

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

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r49973551 = a1;
        double r49973552 = a2;
        double r49973553 = r49973551 * r49973552;
        double r49973554 = b1;
        double r49973555 = b2;
        double r49973556 = r49973554 * r49973555;
        double r49973557 = r49973553 / r49973556;
        return r49973557;
}

double f(double a1, double a2, double b1, double b2) {
        double r49973558 = a1;
        double r49973559 = a2;
        double r49973560 = r49973558 * r49973559;
        double r49973561 = b1;
        double r49973562 = b2;
        double r49973563 = r49973561 * r49973562;
        double r49973564 = r49973560 / r49973563;
        double r49973565 = -inf.0;
        bool r49973566 = r49973564 <= r49973565;
        double r49973567 = r49973558 / r49973561;
        double r49973568 = r49973559 / r49973562;
        double r49973569 = r49973567 * r49973568;
        double r49973570 = -4.57378486630527e-309;
        bool r49973571 = r49973564 <= r49973570;
        double r49973572 = -0.0;
        bool r49973573 = r49973564 <= r49973572;
        double r49973574 = 1.1129784645222681e+303;
        bool r49973575 = r49973564 <= r49973574;
        double r49973576 = cbrt(r49973559);
        double r49973577 = cbrt(r49973561);
        double r49973578 = r49973576 / r49973577;
        double r49973579 = cbrt(r49973562);
        double r49973580 = cbrt(r49973579);
        double r49973581 = r49973578 / r49973580;
        double r49973582 = r49973577 * r49973579;
        double r49973583 = r49973558 / r49973582;
        double r49973584 = r49973583 / r49973582;
        double r49973585 = r49973580 / r49973576;
        double r49973586 = r49973585 * r49973585;
        double r49973587 = r49973584 / r49973586;
        double r49973588 = r49973581 * r49973587;
        double r49973589 = r49973575 ? r49973564 : r49973588;
        double r49973590 = r49973573 ? r49973569 : r49973589;
        double r49973591 = r49973571 ? r49973564 : r49973590;
        double r49973592 = r49973566 ? r49973569 : r49973591;
        return r49973592;
}

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

Derivation

  1. Split input into 3 regimes
  2. if (/ (* a1 a2) (* b1 b2)) < -inf.0 or -4.57378486630527e-309 < (/ (* a1 a2) (* b1 b2)) < -0.0

    1. Initial program 18.4

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

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

    if -inf.0 < (/ (* a1 a2) (* b1 b2)) < -4.57378486630527e-309 or -0.0 < (/ (* a1 a2) (* b1 b2)) < 1.1129784645222681e+303

    1. Initial program 0.8

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]

    if 1.1129784645222681e+303 < (/ (* a1 a2) (* b1 b2))

    1. Initial program 60.0

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

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

      \[\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-cbrt45.5

      \[\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-frac12.6

      \[\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-frac6.7

      \[\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. Simplified5.7

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

      \[\leadsto \frac{\frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b1}} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\color{blue}{\left(\sqrt[3]{\sqrt[3]{b2}} \cdot \sqrt[3]{\sqrt[3]{b2}}\right) \cdot \sqrt[3]{\sqrt[3]{b2}}}}\]
    12. Applied *-un-lft-identity5.9

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -4.57378486630527 \cdot 10^{-309}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 1.1129784645222681 \cdot 10^{+303}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2}}} \cdot \frac{\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}{\frac{\sqrt[3]{\sqrt[3]{b2}}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{\sqrt[3]{b2}}}{\sqrt[3]{a2}}}\\ \end{array}\]

Reproduce

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

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

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