Average Error: 10.8 → 5.3
Time: 5.0m
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -6.897241169256815 \cdot 10^{+159}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}} \cdot \frac{\sqrt[3]{a1}}{\sqrt[3]{b1}}}{\frac{b2}{\frac{1}{\frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}\\ \mathbf{elif}\;a1 \cdot a2 \le -4.213300454402738 \cdot 10^{-210}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 2.8391901767890553 \cdot 10^{-163}:\\ \;\;\;\;\frac{\frac{a2}{b1}}{\frac{b2}{a1}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.3171664498037926 \cdot 10^{+299}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a2}{b2} \cdot \frac{a1}{b1}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -6.897241169256815 \cdot 10^{+159}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}} \cdot \frac{\sqrt[3]{a1}}{\sqrt[3]{b1}}}{\frac{b2}{\frac{1}{\frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}\\

\mathbf{elif}\;a1 \cdot a2 \le -4.213300454402738 \cdot 10^{-210}:\\
\;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\

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

\mathbf{elif}\;a1 \cdot a2 \le 1.3171664498037926 \cdot 10^{+299}:\\
\;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r37159594 = a1;
        double r37159595 = a2;
        double r37159596 = r37159594 * r37159595;
        double r37159597 = b1;
        double r37159598 = b2;
        double r37159599 = r37159597 * r37159598;
        double r37159600 = r37159596 / r37159599;
        return r37159600;
}

double f(double a1, double a2, double b1, double b2) {
        double r37159601 = a1;
        double r37159602 = a2;
        double r37159603 = r37159601 * r37159602;
        double r37159604 = -6.897241169256815e+159;
        bool r37159605 = r37159603 <= r37159604;
        double r37159606 = cbrt(r37159601);
        double r37159607 = b1;
        double r37159608 = cbrt(r37159607);
        double r37159609 = r37159606 / r37159608;
        double r37159610 = r37159609 * r37159609;
        double r37159611 = b2;
        double r37159612 = 1.0;
        double r37159613 = r37159608 / r37159602;
        double r37159614 = r37159613 / r37159606;
        double r37159615 = r37159612 / r37159614;
        double r37159616 = r37159611 / r37159615;
        double r37159617 = r37159610 / r37159616;
        double r37159618 = -4.213300454402738e-210;
        bool r37159619 = r37159603 <= r37159618;
        double r37159620 = r37159612 / r37159607;
        double r37159621 = r37159620 / r37159611;
        double r37159622 = r37159603 * r37159621;
        double r37159623 = 2.8391901767890553e-163;
        bool r37159624 = r37159603 <= r37159623;
        double r37159625 = r37159602 / r37159607;
        double r37159626 = r37159611 / r37159601;
        double r37159627 = r37159625 / r37159626;
        double r37159628 = 1.3171664498037926e+299;
        bool r37159629 = r37159603 <= r37159628;
        double r37159630 = r37159602 / r37159611;
        double r37159631 = r37159601 / r37159607;
        double r37159632 = r37159630 * r37159631;
        double r37159633 = r37159629 ? r37159622 : r37159632;
        double r37159634 = r37159624 ? r37159627 : r37159633;
        double r37159635 = r37159619 ? r37159622 : r37159634;
        double r37159636 = r37159605 ? r37159617 : r37159635;
        return r37159636;
}

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

Derivation

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

    1. Initial program 26.1

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

      \[\leadsto \color{blue}{\frac{\frac{a1 \cdot a2}{b1}}{b2}}\]
    4. Using strategy rm
    5. Applied associate-/l*15.6

      \[\leadsto \frac{\color{blue}{\frac{a1}{\frac{b1}{a2}}}}{b2}\]
    6. Using strategy rm
    7. Applied clear-num15.7

      \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\frac{b1}{a2}}{a1}}}}{b2}\]
    8. Using strategy rm
    9. Applied add-cube-cbrt16.3

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

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

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

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

      \[\leadsto \frac{\frac{1}{\color{blue}{\frac{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{1}}{\sqrt[3]{a1} \cdot \sqrt[3]{a1}} \cdot \frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}{b2}\]
    14. Applied *-un-lft-identity15.3

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

      \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{1}}{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}} \cdot \frac{1}{\frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}{b2}\]
    16. Applied associate-/l*8.9

      \[\leadsto \color{blue}{\frac{\frac{1}{\frac{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{1}}{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}}}{\frac{b2}{\frac{1}{\frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}}\]
    17. Simplified8.9

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

    if -6.897241169256815e+159 < (* a1 a2) < -4.213300454402738e-210 or 2.8391901767890553e-163 < (* a1 a2) < 1.3171664498037926e+299

    1. Initial program 4.7

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

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

      \[\leadsto \frac{\frac{a1 \cdot a2}{b1}}{\color{blue}{1 \cdot b2}}\]
    6. Applied div-inv4.4

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

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

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

    if -4.213300454402738e-210 < (* a1 a2) < 2.8391901767890553e-163

    1. Initial program 13.5

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

      \[\leadsto \color{blue}{\frac{\frac{a1 \cdot a2}{b1}}{b2}}\]
    4. Using strategy rm
    5. Applied associate-/l*7.6

      \[\leadsto \frac{\color{blue}{\frac{a1}{\frac{b1}{a2}}}}{b2}\]
    6. Using strategy rm
    7. Applied clear-num8.0

      \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\frac{b1}{a2}}{a1}}}}{b2}\]
    8. Using strategy rm
    9. Applied associate-/r/7.7

      \[\leadsto \frac{\color{blue}{\frac{1}{\frac{b1}{a2}} \cdot a1}}{b2}\]
    10. Applied associate-/l*5.3

      \[\leadsto \color{blue}{\frac{\frac{1}{\frac{b1}{a2}}}{\frac{b2}{a1}}}\]
    11. Simplified5.0

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

    if 1.3171664498037926e+299 < (* a1 a2)

    1. Initial program 57.6

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

      \[\leadsto \color{blue}{\frac{\frac{a1 \cdot a2}{b1}}{b2}}\]
    4. Using strategy rm
    5. Applied associate-/l*24.9

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

      \[\leadsto \frac{\frac{a1}{\frac{b1}{a2}}}{\color{blue}{1 \cdot b2}}\]
    8. Applied associate-/r/25.0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -6.897241169256815 \cdot 10^{+159}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}} \cdot \frac{\sqrt[3]{a1}}{\sqrt[3]{b1}}}{\frac{b2}{\frac{1}{\frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}\\ \mathbf{elif}\;a1 \cdot a2 \le -4.213300454402738 \cdot 10^{-210}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 2.8391901767890553 \cdot 10^{-163}:\\ \;\;\;\;\frac{\frac{a2}{b1}}{\frac{b2}{a1}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.3171664498037926 \cdot 10^{+299}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a2}{b2} \cdot \frac{a1}{b1}\\ \end{array}\]

Reproduce

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

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

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