\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;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.8 |
|---|---|
| Target | 10.9 |
| Herbie | 5.3 |
if (* a1 a2) < -6.924909185454604e+274Initial program 51.0
rmApplied associate-/r*49.9
rmApplied *-un-lft-identity49.9
Applied add-cube-cbrt50.1
Applied times-frac22.5
Applied times-frac6.1
Simplified6.1
if -6.924909185454604e+274 < (* a1 a2) < -2.971188960858283e-217Initial program 5.0
rmApplied associate-/r*4.8
if -2.971188960858283e-217 < (* a1 a2) < 1.4403849623548075e-51Initial program 12.0
rmApplied times-frac6.7
if 1.4403849623548075e-51 < (* a1 a2) < 4.993222266344515e+173Initial program 3.3
rmApplied associate-/r*3.2
rmApplied div-inv3.3
if 4.993222266344515e+173 < (* a1 a2) Initial program 27.5
rmApplied associate-/r*27.9
rmApplied add-cube-cbrt28.4
Applied add-cube-cbrt28.6
Applied times-frac16.7
Applied times-frac6.6
Simplified5.4
Simplified4.6
rmApplied add-cube-cbrt4.7
Applied associate-/l*4.7
Final simplification5.3
herbie shell --seed 2019144
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))