Average Error: 10.5 → 4.9
Time: 2.4m
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -4.8687312137033835 \cdot 10^{+179}:\\ \;\;\;\;\frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}}{\frac{b2}{\sqrt[3]{a2}}}\\ \mathbf{elif}\;b1 \cdot b2 \le -2.4341766497423228 \cdot 10^{-119}:\\ \;\;\;\;\frac{a1}{b1 \cdot b2} \cdot a2\\ \mathbf{elif}\;b1 \cdot b2 \le 1.9348661113959857 \cdot 10^{-269}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\ \mathbf{elif}\;b1 \cdot b2 \le 9.736381993966282 \cdot 10^{+134}:\\ \;\;\;\;\frac{a1}{b1 \cdot b2} \cdot a2\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -4.8687312137033835 \cdot 10^{+179}:\\
\;\;\;\;\frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}}{\frac{b2}{\sqrt[3]{a2}}}\\

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

\mathbf{elif}\;b1 \cdot b2 \le 1.9348661113959857 \cdot 10^{-269}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\

\mathbf{elif}\;b1 \cdot b2 \le 9.736381993966282 \cdot 10^{+134}:\\
\;\;\;\;\frac{a1}{b1 \cdot b2} \cdot a2\\

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r11666135 = a1;
        double r11666136 = a2;
        double r11666137 = r11666135 * r11666136;
        double r11666138 = b1;
        double r11666139 = b2;
        double r11666140 = r11666138 * r11666139;
        double r11666141 = r11666137 / r11666140;
        return r11666141;
}

double f(double a1, double a2, double b1, double b2) {
        double r11666142 = b1;
        double r11666143 = b2;
        double r11666144 = r11666142 * r11666143;
        double r11666145 = -4.8687312137033835e+179;
        bool r11666146 = r11666144 <= r11666145;
        double r11666147 = a1;
        double r11666148 = a2;
        double r11666149 = cbrt(r11666148);
        double r11666150 = r11666149 * r11666149;
        double r11666151 = r11666142 / r11666150;
        double r11666152 = r11666147 / r11666151;
        double r11666153 = r11666143 / r11666149;
        double r11666154 = r11666152 / r11666153;
        double r11666155 = -2.4341766497423228e-119;
        bool r11666156 = r11666144 <= r11666155;
        double r11666157 = r11666147 / r11666144;
        double r11666158 = r11666157 * r11666148;
        double r11666159 = 1.9348661113959857e-269;
        bool r11666160 = r11666144 <= r11666159;
        double r11666161 = cbrt(r11666153);
        double r11666162 = r11666149 / r11666161;
        double r11666163 = r11666162 / r11666161;
        double r11666164 = r11666142 / r11666149;
        double r11666165 = r11666147 / r11666164;
        double r11666166 = r11666165 / r11666161;
        double r11666167 = r11666163 * r11666166;
        double r11666168 = 9.736381993966282e+134;
        bool r11666169 = r11666144 <= r11666168;
        double r11666170 = r11666169 ? r11666158 : r11666167;
        double r11666171 = r11666160 ? r11666167 : r11666170;
        double r11666172 = r11666156 ? r11666158 : r11666171;
        double r11666173 = r11666146 ? r11666154 : r11666172;
        return r11666173;
}

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

Derivation

  1. Split input into 3 regimes
  2. if (* b1 b2) < -4.8687312137033835e+179

    1. Initial program 13.0

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

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

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

      \[\leadsto \frac{a1}{\color{blue}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}}\]
    7. Applied associate-/r*5.2

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

    if -4.8687312137033835e+179 < (* b1 b2) < -2.4341766497423228e-119 or 1.9348661113959857e-269 < (* b1 b2) < 9.736381993966282e+134

    1. Initial program 4.1

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

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

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

    if -2.4341766497423228e-119 < (* b1 b2) < 1.9348661113959857e-269 or 9.736381993966282e+134 < (* b1 b2)

    1. Initial program 18.8

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

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

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

      \[\leadsto \frac{a1}{\color{blue}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}}\]
    7. Applied associate-/r*6.4

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

      \[\leadsto \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}}{\color{blue}{\left(\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}} \cdot \sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}\right) \cdot \sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}\]
    10. Applied *-un-lft-identity6.6

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -4.8687312137033835 \cdot 10^{+179}:\\ \;\;\;\;\frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}}{\frac{b2}{\sqrt[3]{a2}}}\\ \mathbf{elif}\;b1 \cdot b2 \le -2.4341766497423228 \cdot 10^{-119}:\\ \;\;\;\;\frac{a1}{b1 \cdot b2} \cdot a2\\ \mathbf{elif}\;b1 \cdot b2 \le 1.9348661113959857 \cdot 10^{-269}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\ \mathbf{elif}\;b1 \cdot b2 \le 9.736381993966282 \cdot 10^{+134}:\\ \;\;\;\;\frac{a1}{b1 \cdot b2} \cdot a2\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\ \end{array}\]

Reproduce

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

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

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