Average Error: 11.5 → 4.5
Time: 5.1s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -2.97251895095999178047329774749525954037 \cdot 10^{245}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -2.538508659456969327282848851815247527073 \cdot 10^{-281} \lor \neg \left(a1 \cdot a2 \le 4.178012939374055441343683101567782411238 \cdot 10^{-287} \lor \neg \left(a1 \cdot a2 \le 3.859905230799150421067740794787184289132 \cdot 10^{236}\right)\right):\\ \;\;\;\;\frac{a1 \cdot a2}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \frac{\frac{1}{\sqrt[3]{b1}}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{a2}{b1 \cdot \sqrt[3]{b2}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -2.97251895095999178047329774749525954037 \cdot 10^{245}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\

\mathbf{elif}\;a1 \cdot a2 \le -2.538508659456969327282848851815247527073 \cdot 10^{-281} \lor \neg \left(a1 \cdot a2 \le 4.178012939374055441343683101567782411238 \cdot 10^{-287} \lor \neg \left(a1 \cdot a2 \le 3.859905230799150421067740794787184289132 \cdot 10^{236}\right)\right):\\
\;\;\;\;\frac{a1 \cdot a2}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \frac{\frac{1}{\sqrt[3]{b1}}}{b2}\\

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r110920 = a1;
        double r110921 = a2;
        double r110922 = r110920 * r110921;
        double r110923 = b1;
        double r110924 = b2;
        double r110925 = r110923 * r110924;
        double r110926 = r110922 / r110925;
        return r110926;
}

double f(double a1, double a2, double b1, double b2) {
        double r110927 = a1;
        double r110928 = a2;
        double r110929 = r110927 * r110928;
        double r110930 = -2.972518950959992e+245;
        bool r110931 = r110929 <= r110930;
        double r110932 = b1;
        double r110933 = r110927 / r110932;
        double r110934 = b2;
        double r110935 = r110928 / r110934;
        double r110936 = r110933 * r110935;
        double r110937 = -2.5385086594569693e-281;
        bool r110938 = r110929 <= r110937;
        double r110939 = 4.1780129393740554e-287;
        bool r110940 = r110929 <= r110939;
        double r110941 = 3.8599052307991504e+236;
        bool r110942 = r110929 <= r110941;
        double r110943 = !r110942;
        bool r110944 = r110940 || r110943;
        double r110945 = !r110944;
        bool r110946 = r110938 || r110945;
        double r110947 = cbrt(r110932);
        double r110948 = r110947 * r110947;
        double r110949 = r110929 / r110948;
        double r110950 = 1.0;
        double r110951 = r110950 / r110947;
        double r110952 = r110951 / r110934;
        double r110953 = r110949 * r110952;
        double r110954 = cbrt(r110934);
        double r110955 = r110954 * r110954;
        double r110956 = r110927 / r110955;
        double r110957 = r110932 * r110954;
        double r110958 = r110928 / r110957;
        double r110959 = r110956 * r110958;
        double r110960 = r110946 ? r110953 : r110959;
        double r110961 = r110931 ? r110936 : r110960;
        return r110961;
}

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

Derivation

  1. Split input into 3 regimes
  2. if (* a1 a2) < -2.972518950959992e+245

    1. Initial program 44.4

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

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

    if -2.972518950959992e+245 < (* a1 a2) < -2.5385086594569693e-281 or 4.1780129393740554e-287 < (* a1 a2) < 3.8599052307991504e+236

    1. Initial program 5.1

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

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

      \[\leadsto \frac{1}{\color{blue}{\frac{b1}{\frac{a1 \cdot a2}{b2}}}}\]
    6. Using strategy rm
    7. Applied div-inv5.7

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

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

      \[\leadsto \frac{1}{\color{blue}{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{a1 \cdot a2} \cdot \frac{\sqrt[3]{b1}}{\frac{1}{b2}}}}\]
    10. Applied add-cube-cbrt4.2

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

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

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

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

    if -2.5385086594569693e-281 < (* a1 a2) < 4.1780129393740554e-287 or 3.8599052307991504e+236 < (* a1 a2)

    1. Initial program 24.4

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

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

      \[\leadsto \frac{1}{\color{blue}{\frac{b1}{\frac{a1 \cdot a2}{b2}}}}\]
    6. Using strategy rm
    7. Applied div-inv24.0

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

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

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

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

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

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

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

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

      \[\leadsto \frac{a1 \cdot a2}{\frac{\color{blue}{1 \cdot b1}}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\sqrt[3]{1}}{\sqrt[3]{b2}}}}\]
    17. Applied times-frac24.5

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -2.97251895095999178047329774749525954037 \cdot 10^{245}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -2.538508659456969327282848851815247527073 \cdot 10^{-281} \lor \neg \left(a1 \cdot a2 \le 4.178012939374055441343683101567782411238 \cdot 10^{-287} \lor \neg \left(a1 \cdot a2 \le 3.859905230799150421067740794787184289132 \cdot 10^{236}\right)\right):\\ \;\;\;\;\frac{a1 \cdot a2}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \frac{\frac{1}{\sqrt[3]{b1}}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{a2}{b1 \cdot \sqrt[3]{b2}}\\ \end{array}\]

Reproduce

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

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

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