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




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.9 |
|---|---|
| Target | 11.0 |
| Herbie | 4.3 |
if (* a1 a2) < -1.2127685659922545e+214Initial program 33.2
rmApplied times-frac9.9
rmApplied div-inv10.0
Applied associate-*l*11.4
Simplified8.9
if -1.2127685659922545e+214 < (* a1 a2) < -4.4979291324398776e-178 or 1.196927419235656e-145 < (* a1 a2) < 9.61446956110427e+171Initial program 4.1
rmApplied div-inv4.4
if -4.4979291324398776e-178 < (* a1 a2) < 1.196927419235656e-145Initial program 12.8
rmApplied times-frac5.7
rmApplied add-cube-cbrt6.1
Applied add-cube-cbrt6.3
Applied times-frac6.3
Applied associate-*r*4.0
Simplified3.3
rmApplied *-un-lft-identity3.3
Applied times-frac3.0
Applied *-un-lft-identity3.0
Applied times-frac2.9
Applied associate-*l*2.9
if 9.61446956110427e+171 < (* a1 a2) Initial program 31.1
rmApplied times-frac11.5
rmApplied add-cube-cbrt12.3
Applied add-cube-cbrt12.5
Applied times-frac12.5
Applied associate-*r*7.8
Simplified6.7
Final simplification4.3
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)))