Average Error: 11.3 → 6.0
Time: 5.1s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -3.07688363857671596 \cdot 10^{290}:\\ \;\;\;\;\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1} \cdot \left(\left(\sqrt[3]{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{a1}{b2}\right) \cdot \sqrt[3]{\sqrt[3]{a2}}\right)\\ \mathbf{elif}\;b1 \cdot b2 \le -7.33224774175289027 \cdot 10^{-132}:\\ \;\;\;\;\frac{1}{b1 \cdot b2} \cdot \left(a1 \cdot a2\right)\\ \mathbf{elif}\;b1 \cdot b2 \le 1.1938694317181371 \cdot 10^{-187}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;b1 \cdot b2 \le 6.0946661841822745 \cdot 10^{116}:\\ \;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{b1} \cdot \frac{a1}{\frac{b2}{a2}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -3.07688363857671596 \cdot 10^{290}:\\
\;\;\;\;\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1} \cdot \left(\left(\sqrt[3]{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{a1}{b2}\right) \cdot \sqrt[3]{\sqrt[3]{a2}}\right)\\

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

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

\mathbf{elif}\;b1 \cdot b2 \le 6.0946661841822745 \cdot 10^{116}:\\
\;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r211661 = a1;
        double r211662 = a2;
        double r211663 = r211661 * r211662;
        double r211664 = b1;
        double r211665 = b2;
        double r211666 = r211664 * r211665;
        double r211667 = r211663 / r211666;
        return r211667;
}

double f(double a1, double a2, double b1, double b2) {
        double r211668 = b1;
        double r211669 = b2;
        double r211670 = r211668 * r211669;
        double r211671 = -3.076883638576716e+290;
        bool r211672 = r211670 <= r211671;
        double r211673 = a2;
        double r211674 = cbrt(r211673);
        double r211675 = r211674 * r211674;
        double r211676 = r211675 / r211668;
        double r211677 = cbrt(r211675);
        double r211678 = a1;
        double r211679 = r211678 / r211669;
        double r211680 = r211677 * r211679;
        double r211681 = cbrt(r211674);
        double r211682 = r211680 * r211681;
        double r211683 = r211676 * r211682;
        double r211684 = -7.33224774175289e-132;
        bool r211685 = r211670 <= r211684;
        double r211686 = 1.0;
        double r211687 = r211686 / r211670;
        double r211688 = r211678 * r211673;
        double r211689 = r211687 * r211688;
        double r211690 = 1.193869431718137e-187;
        bool r211691 = r211670 <= r211690;
        double r211692 = r211678 / r211668;
        double r211693 = r211673 / r211669;
        double r211694 = r211692 * r211693;
        double r211695 = 6.0946661841822745e+116;
        bool r211696 = r211670 <= r211695;
        double r211697 = r211670 / r211673;
        double r211698 = r211678 / r211697;
        double r211699 = r211686 / r211668;
        double r211700 = r211669 / r211673;
        double r211701 = r211678 / r211700;
        double r211702 = r211699 * r211701;
        double r211703 = r211696 ? r211698 : r211702;
        double r211704 = r211691 ? r211694 : r211703;
        double r211705 = r211685 ? r211689 : r211704;
        double r211706 = r211672 ? r211683 : r211705;
        return r211706;
}

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

Derivation

  1. Split input into 5 regimes
  2. if (* b1 b2) < -3.076883638576716e+290

    1. Initial program 20.2

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

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

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

      \[\leadsto \frac{a1}{\color{blue}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}}\]
    7. Applied *-un-lft-identity9.2

      \[\leadsto \frac{\color{blue}{1 \cdot a1}}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}\]
    8. Applied times-frac2.9

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

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

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

      \[\leadsto \frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1} \cdot \frac{a1}{\frac{b2}{\color{blue}{\sqrt[3]{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \sqrt[3]{\sqrt[3]{a2}}}}}\]
    13. Applied *-un-lft-identity2.8

      \[\leadsto \frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1} \cdot \frac{a1}{\frac{\color{blue}{1 \cdot b2}}{\sqrt[3]{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \sqrt[3]{\sqrt[3]{a2}}}}\]
    14. Applied times-frac2.8

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

      \[\leadsto \frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1} \cdot \frac{\color{blue}{1 \cdot a1}}{\frac{1}{\sqrt[3]{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}} \cdot \frac{b2}{\sqrt[3]{\sqrt[3]{a2}}}}\]
    16. Applied times-frac2.7

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

      \[\leadsto \frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1} \cdot \left(\color{blue}{\sqrt[3]{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}} \cdot \frac{a1}{\frac{b2}{\sqrt[3]{\sqrt[3]{a2}}}}\right)\]
    18. Using strategy rm
    19. Applied associate-/r/2.9

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

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

    if -3.076883638576716e+290 < (* b1 b2) < -7.33224774175289e-132

    1. Initial program 4.4

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

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

      \[\leadsto \frac{a1}{\color{blue}{\left(b1 \cdot b2\right) \cdot \frac{1}{a2}}}\]
    6. Applied *-un-lft-identity4.0

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

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

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

    if -7.33224774175289e-132 < (* b1 b2) < 1.193869431718137e-187

    1. Initial program 26.6

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

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

    if 1.193869431718137e-187 < (* b1 b2) < 6.0946661841822745e+116

    1. Initial program 4.1

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

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

    if 6.0946661841822745e+116 < (* b1 b2)

    1. Initial program 12.5

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

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

      \[\leadsto \frac{a1}{\frac{b1 \cdot b2}{\color{blue}{1 \cdot a2}}}\]
    6. Applied times-frac9.3

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -3.07688363857671596 \cdot 10^{290}:\\ \;\;\;\;\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1} \cdot \left(\left(\sqrt[3]{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{a1}{b2}\right) \cdot \sqrt[3]{\sqrt[3]{a2}}\right)\\ \mathbf{elif}\;b1 \cdot b2 \le -7.33224774175289027 \cdot 10^{-132}:\\ \;\;\;\;\frac{1}{b1 \cdot b2} \cdot \left(a1 \cdot a2\right)\\ \mathbf{elif}\;b1 \cdot b2 \le 1.1938694317181371 \cdot 10^{-187}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;b1 \cdot b2 \le 6.0946661841822745 \cdot 10^{116}:\\ \;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{b1} \cdot \frac{a1}{\frac{b2}{a2}}\\ \end{array}\]

Reproduce

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

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

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