Average Error: 10.9 → 4.3
Time: 32.0s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -1.2127685659922545 \cdot 10^{+214}:\\ \;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -4.4979291324398776 \cdot 10^{-178}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{1}{b2 \cdot b1}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.196927419235656 \cdot 10^{-145}:\\ \;\;\;\;\left(\frac{a1}{\frac{b1}{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\right) \cdot \frac{1}{\frac{1}{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}}\\ \mathbf{elif}\;a1 \cdot a2 \le 9.61446956110427 \cdot 10^{+171}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{1}{b2 \cdot b1}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{\frac{b1}{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -1.2127685659922545 \cdot 10^{+214}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\

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

\mathbf{elif}\;a1 \cdot a2 \le 1.196927419235656 \cdot 10^{-145}:\\
\;\;\;\;\left(\frac{a1}{\frac{b1}{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\right) \cdot \frac{1}{\frac{1}{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}}\\

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

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r6430893 = a1;
        double r6430894 = a2;
        double r6430895 = r6430893 * r6430894;
        double r6430896 = b1;
        double r6430897 = b2;
        double r6430898 = r6430896 * r6430897;
        double r6430899 = r6430895 / r6430898;
        return r6430899;
}

double f(double a1, double a2, double b1, double b2) {
        double r6430900 = a1;
        double r6430901 = a2;
        double r6430902 = r6430900 * r6430901;
        double r6430903 = -1.2127685659922545e+214;
        bool r6430904 = r6430902 <= r6430903;
        double r6430905 = b1;
        double r6430906 = r6430901 / r6430905;
        double r6430907 = b2;
        double r6430908 = r6430906 / r6430907;
        double r6430909 = r6430900 * r6430908;
        double r6430910 = -4.4979291324398776e-178;
        bool r6430911 = r6430902 <= r6430910;
        double r6430912 = 1.0;
        double r6430913 = r6430907 * r6430905;
        double r6430914 = r6430912 / r6430913;
        double r6430915 = r6430902 * r6430914;
        double r6430916 = 1.196927419235656e-145;
        bool r6430917 = r6430902 <= r6430916;
        double r6430918 = cbrt(r6430901);
        double r6430919 = cbrt(r6430907);
        double r6430920 = r6430918 / r6430919;
        double r6430921 = r6430905 / r6430920;
        double r6430922 = r6430900 / r6430921;
        double r6430923 = r6430922 * r6430920;
        double r6430924 = r6430912 / r6430920;
        double r6430925 = r6430912 / r6430924;
        double r6430926 = r6430923 * r6430925;
        double r6430927 = 9.61446956110427e+171;
        bool r6430928 = r6430902 <= r6430927;
        double r6430929 = r6430920 * r6430920;
        double r6430930 = r6430905 / r6430929;
        double r6430931 = r6430900 / r6430930;
        double r6430932 = r6430931 * r6430920;
        double r6430933 = r6430928 ? r6430915 : r6430932;
        double r6430934 = r6430917 ? r6430926 : r6430933;
        double r6430935 = r6430911 ? r6430915 : r6430934;
        double r6430936 = r6430904 ? r6430909 : r6430935;
        return r6430936;
}

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

Derivation

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

    1. Initial program 33.2

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

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

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

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

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

    if -1.2127685659922545e+214 < (* a1 a2) < -4.4979291324398776e-178 or 1.196927419235656e-145 < (* a1 a2) < 9.61446956110427e+171

    1. Initial program 4.1

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

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

    if -4.4979291324398776e-178 < (* a1 a2) < 1.196927419235656e-145

    1. Initial program 12.8

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

      \[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt6.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-cbrt6.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-frac6.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*4.0

      \[\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. Simplified3.3

      \[\leadsto \color{blue}{\frac{a1}{\frac{b1}{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\]
    10. Using strategy rm
    11. Applied *-un-lft-identity3.3

      \[\leadsto \frac{a1}{\frac{\color{blue}{1 \cdot b1}}{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\]
    12. Applied times-frac3.0

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

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

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

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

    if 9.61446956110427e+171 < (* a1 a2)

    1. Initial program 31.1

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

      \[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt12.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-cbrt12.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-frac12.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.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -1.2127685659922545 \cdot 10^{+214}:\\ \;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -4.4979291324398776 \cdot 10^{-178}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{1}{b2 \cdot b1}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.196927419235656 \cdot 10^{-145}:\\ \;\;\;\;\left(\frac{a1}{\frac{b1}{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\right) \cdot \frac{1}{\frac{1}{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}}\\ \mathbf{elif}\;a1 \cdot a2 \le 9.61446956110427 \cdot 10^{+171}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{1}{b2 \cdot b1}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{\frac{b1}{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\\ \end{array}\]

Reproduce

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

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

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