Average Error: 10.9 → 4.3
Time: 29.4s
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 r7230868 = a1;
        double r7230869 = a2;
        double r7230870 = r7230868 * r7230869;
        double r7230871 = b1;
        double r7230872 = b2;
        double r7230873 = r7230871 * r7230872;
        double r7230874 = r7230870 / r7230873;
        return r7230874;
}

double f(double a1, double a2, double b1, double b2) {
        double r7230875 = a1;
        double r7230876 = a2;
        double r7230877 = r7230875 * r7230876;
        double r7230878 = -1.2127685659922545e+214;
        bool r7230879 = r7230877 <= r7230878;
        double r7230880 = b1;
        double r7230881 = r7230876 / r7230880;
        double r7230882 = b2;
        double r7230883 = r7230881 / r7230882;
        double r7230884 = r7230875 * r7230883;
        double r7230885 = -4.4979291324398776e-178;
        bool r7230886 = r7230877 <= r7230885;
        double r7230887 = 1.0;
        double r7230888 = r7230882 * r7230880;
        double r7230889 = r7230887 / r7230888;
        double r7230890 = r7230877 * r7230889;
        double r7230891 = 1.196927419235656e-145;
        bool r7230892 = r7230877 <= r7230891;
        double r7230893 = cbrt(r7230876);
        double r7230894 = cbrt(r7230882);
        double r7230895 = r7230893 / r7230894;
        double r7230896 = r7230880 / r7230895;
        double r7230897 = r7230875 / r7230896;
        double r7230898 = r7230897 * r7230895;
        double r7230899 = r7230887 / r7230895;
        double r7230900 = r7230887 / r7230899;
        double r7230901 = r7230898 * r7230900;
        double r7230902 = 9.61446956110427e+171;
        bool r7230903 = r7230877 <= r7230902;
        double r7230904 = r7230895 * r7230895;
        double r7230905 = r7230880 / r7230904;
        double r7230906 = r7230875 / r7230905;
        double r7230907 = r7230906 * r7230895;
        double r7230908 = r7230903 ? r7230890 : r7230907;
        double r7230909 = r7230892 ? r7230901 : r7230908;
        double r7230910 = r7230886 ? r7230890 : r7230909;
        double r7230911 = r7230879 ? r7230884 : r7230910;
        return r7230911;
}

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)))