\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -2.11620674526193 \cdot 10^{+207}:\\
\;\;\;\;\frac{a1}{\frac{b2}{\frac{a2}{b1}}}\\
\mathbf{elif}\;a1 \cdot a2 \le -1.65549822385213 \cdot 10^{-190}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 2.2374340498592432 \cdot 10^{-200}:\\
\;\;\;\;\frac{a1}{\frac{b2}{\frac{a2}{b1}}}\\
\mathbf{elif}\;a1 \cdot a2 \le 3.054460206803236 \cdot 10^{+166}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a2}{\sqrt[3]{b1}}}{b2} \cdot \frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r2517749 = a1;
double r2517750 = a2;
double r2517751 = r2517749 * r2517750;
double r2517752 = b1;
double r2517753 = b2;
double r2517754 = r2517752 * r2517753;
double r2517755 = r2517751 / r2517754;
return r2517755;
}
double f(double a1, double a2, double b1, double b2) {
double r2517756 = a1;
double r2517757 = a2;
double r2517758 = r2517756 * r2517757;
double r2517759 = -2.11620674526193e+207;
bool r2517760 = r2517758 <= r2517759;
double r2517761 = b2;
double r2517762 = b1;
double r2517763 = r2517757 / r2517762;
double r2517764 = r2517761 / r2517763;
double r2517765 = r2517756 / r2517764;
double r2517766 = -1.65549822385213e-190;
bool r2517767 = r2517758 <= r2517766;
double r2517768 = r2517758 / r2517762;
double r2517769 = r2517768 / r2517761;
double r2517770 = 2.2374340498592432e-200;
bool r2517771 = r2517758 <= r2517770;
double r2517772 = 3.054460206803236e+166;
bool r2517773 = r2517758 <= r2517772;
double r2517774 = cbrt(r2517762);
double r2517775 = r2517757 / r2517774;
double r2517776 = r2517775 / r2517761;
double r2517777 = r2517774 * r2517774;
double r2517778 = r2517756 / r2517777;
double r2517779 = r2517776 * r2517778;
double r2517780 = r2517773 ? r2517769 : r2517779;
double r2517781 = r2517771 ? r2517765 : r2517780;
double r2517782 = r2517767 ? r2517769 : r2517781;
double r2517783 = r2517760 ? r2517765 : r2517782;
return r2517783;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.2 |
| Herbie | 4.9 |
if (* a1 a2) < -2.11620674526193e+207 or -1.65549822385213e-190 < (* a1 a2) < 2.2374340498592432e-200Initial program 18.4
rmApplied associate-/r*18.4
rmApplied *-un-lft-identity18.4
Applied times-frac9.6
Applied associate-/l*5.0
if -2.11620674526193e+207 < (* a1 a2) < -1.65549822385213e-190 or 2.2374340498592432e-200 < (* a1 a2) < 3.054460206803236e+166Initial program 4.2
rmApplied associate-/r*4.3
if 3.054460206803236e+166 < (* a1 a2) Initial program 29.0
rmApplied associate-/r*28.8
rmApplied *-un-lft-identity28.8
Applied add-cube-cbrt29.3
Applied times-frac17.3
Applied times-frac9.4
Simplified9.4
Final simplification4.9
herbie shell --seed 2019151
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))