Average Error: 10.8 → 5.3
Time: 18.0s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -6.924909185454604 \cdot 10^{+274}:\\ \;\;\;\;\frac{\frac{a2}{\sqrt[3]{b1}}}{b2} \cdot \frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}\\ \mathbf{elif}\;a1 \cdot a2 \le -2.971188960858283 \cdot 10^{-217}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.4403849623548075 \cdot 10^{-51}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 4.993222266344515 \cdot 10^{+173}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1} \cdot \frac{1}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a2}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}} \cdot \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\frac{\left(\sqrt[3]{b1} \cdot \sqrt[3]{b2}\right) \cdot \left(\sqrt[3]{b1} \cdot \sqrt[3]{b2}\right)}{\sqrt[3]{a1}}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -6.924909185454604 \cdot 10^{+274}:\\
\;\;\;\;\frac{\frac{a2}{\sqrt[3]{b1}}}{b2} \cdot \frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}\\

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

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

\mathbf{elif}\;a1 \cdot a2 \le 4.993222266344515 \cdot 10^{+173}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1} \cdot \frac{1}{b2}\\

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r4786848 = a1;
        double r4786849 = a2;
        double r4786850 = r4786848 * r4786849;
        double r4786851 = b1;
        double r4786852 = b2;
        double r4786853 = r4786851 * r4786852;
        double r4786854 = r4786850 / r4786853;
        return r4786854;
}

double f(double a1, double a2, double b1, double b2) {
        double r4786855 = a1;
        double r4786856 = a2;
        double r4786857 = r4786855 * r4786856;
        double r4786858 = -6.924909185454604e+274;
        bool r4786859 = r4786857 <= r4786858;
        double r4786860 = b1;
        double r4786861 = cbrt(r4786860);
        double r4786862 = r4786856 / r4786861;
        double r4786863 = b2;
        double r4786864 = r4786862 / r4786863;
        double r4786865 = r4786861 * r4786861;
        double r4786866 = r4786855 / r4786865;
        double r4786867 = r4786864 * r4786866;
        double r4786868 = -2.971188960858283e-217;
        bool r4786869 = r4786857 <= r4786868;
        double r4786870 = r4786857 / r4786860;
        double r4786871 = r4786870 / r4786863;
        double r4786872 = 1.4403849623548075e-51;
        bool r4786873 = r4786857 <= r4786872;
        double r4786874 = r4786855 / r4786860;
        double r4786875 = r4786856 / r4786863;
        double r4786876 = r4786874 * r4786875;
        double r4786877 = 4.993222266344515e+173;
        bool r4786878 = r4786857 <= r4786877;
        double r4786879 = 1.0;
        double r4786880 = r4786879 / r4786863;
        double r4786881 = r4786870 * r4786880;
        double r4786882 = cbrt(r4786863);
        double r4786883 = r4786861 * r4786882;
        double r4786884 = r4786856 / r4786883;
        double r4786885 = cbrt(r4786855);
        double r4786886 = r4786885 * r4786885;
        double r4786887 = r4786883 * r4786883;
        double r4786888 = r4786887 / r4786885;
        double r4786889 = r4786886 / r4786888;
        double r4786890 = r4786884 * r4786889;
        double r4786891 = r4786878 ? r4786881 : r4786890;
        double r4786892 = r4786873 ? r4786876 : r4786891;
        double r4786893 = r4786869 ? r4786871 : r4786892;
        double r4786894 = r4786859 ? r4786867 : r4786893;
        return r4786894;
}

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 5 regimes
  2. if (* a1 a2) < -6.924909185454604e+274

    1. Initial program 51.0

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

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

      \[\leadsto \frac{\frac{a1 \cdot a2}{b1}}{\color{blue}{1 \cdot b2}}\]
    6. Applied add-cube-cbrt50.1

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

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

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

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

    if -6.924909185454604e+274 < (* a1 a2) < -2.971188960858283e-217

    1. Initial program 5.0

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

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

    if -2.971188960858283e-217 < (* a1 a2) < 1.4403849623548075e-51

    1. Initial program 12.0

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

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

    if 1.4403849623548075e-51 < (* a1 a2) < 4.993222266344515e+173

    1. Initial program 3.3

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

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

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

    if 4.993222266344515e+173 < (* a1 a2)

    1. Initial program 27.5

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

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

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

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

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

      \[\leadsto \color{blue}{\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}}\]
    9. Simplified5.4

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

      \[\leadsto \frac{a1}{\left(\sqrt[3]{b1} \cdot \sqrt[3]{b2}\right) \cdot \left(\sqrt[3]{b1} \cdot \sqrt[3]{b2}\right)} \cdot \color{blue}{\frac{a2}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}\]
    11. Using strategy rm
    12. Applied add-cube-cbrt4.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -6.924909185454604 \cdot 10^{+274}:\\ \;\;\;\;\frac{\frac{a2}{\sqrt[3]{b1}}}{b2} \cdot \frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}\\ \mathbf{elif}\;a1 \cdot a2 \le -2.971188960858283 \cdot 10^{-217}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.4403849623548075 \cdot 10^{-51}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 4.993222266344515 \cdot 10^{+173}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1} \cdot \frac{1}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a2}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}} \cdot \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\frac{\left(\sqrt[3]{b1} \cdot \sqrt[3]{b2}\right) \cdot \left(\sqrt[3]{b1} \cdot \sqrt[3]{b2}\right)}{\sqrt[3]{a1}}}\\ \end{array}\]

Reproduce

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

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

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