\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 = -\infty:\\
\;\;\;\;\frac{a2}{\sqrt[3]{b2}} \cdot \left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b2}} \cdot \frac{\frac{\sqrt[3]{a1}}{b1}}{\sqrt[3]{b2}}\right)\\
\mathbf{elif}\;a1 \cdot a2 \le -5.841733098692663762903904892944559559654 \cdot 10^{-155}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 9.870262468729980181103925129699646064015 \cdot 10^{-33}:\\
\;\;\;\;\frac{a2 \cdot \frac{\frac{1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}}}{\sqrt[3]{b2} \cdot \frac{\sqrt[3]{b2}}{\frac{\frac{a1}{\sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2}}}}}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.730858527692710738611248585413969126226 \cdot 10^{90}:\\
\;\;\;\;\frac{1}{\frac{b2 \cdot b1}{a1 \cdot a2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{a2 \cdot \frac{\frac{1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}}}{\sqrt[3]{b2} \cdot \frac{\sqrt[3]{b2}}{\frac{\frac{a1}{\sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2}}}}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r17996121 = a1;
double r17996122 = a2;
double r17996123 = r17996121 * r17996122;
double r17996124 = b1;
double r17996125 = b2;
double r17996126 = r17996124 * r17996125;
double r17996127 = r17996123 / r17996126;
return r17996127;
}
double f(double a1, double a2, double b1, double b2) {
double r17996128 = a1;
double r17996129 = a2;
double r17996130 = r17996128 * r17996129;
double r17996131 = -inf.0;
bool r17996132 = r17996130 <= r17996131;
double r17996133 = b2;
double r17996134 = cbrt(r17996133);
double r17996135 = r17996129 / r17996134;
double r17996136 = cbrt(r17996128);
double r17996137 = r17996136 * r17996136;
double r17996138 = r17996137 / r17996134;
double r17996139 = b1;
double r17996140 = r17996136 / r17996139;
double r17996141 = r17996140 / r17996134;
double r17996142 = r17996138 * r17996141;
double r17996143 = r17996135 * r17996142;
double r17996144 = -5.841733098692664e-155;
bool r17996145 = r17996130 <= r17996144;
double r17996146 = r17996130 / r17996139;
double r17996147 = r17996146 / r17996133;
double r17996148 = 9.87026246872998e-33;
bool r17996149 = r17996130 <= r17996148;
double r17996150 = 1.0;
double r17996151 = cbrt(r17996139);
double r17996152 = r17996151 * r17996151;
double r17996153 = r17996150 / r17996152;
double r17996154 = r17996134 * r17996134;
double r17996155 = cbrt(r17996154);
double r17996156 = r17996153 / r17996155;
double r17996157 = r17996129 * r17996156;
double r17996158 = r17996128 / r17996151;
double r17996159 = cbrt(r17996134);
double r17996160 = r17996158 / r17996159;
double r17996161 = r17996134 / r17996160;
double r17996162 = r17996134 * r17996161;
double r17996163 = r17996157 / r17996162;
double r17996164 = 1.7308585276927107e+90;
bool r17996165 = r17996130 <= r17996164;
double r17996166 = r17996133 * r17996139;
double r17996167 = r17996166 / r17996130;
double r17996168 = r17996150 / r17996167;
double r17996169 = r17996165 ? r17996168 : r17996163;
double r17996170 = r17996149 ? r17996163 : r17996169;
double r17996171 = r17996145 ? r17996147 : r17996170;
double r17996172 = r17996132 ? r17996143 : r17996171;
return r17996172;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.2 |
| Herbie | 5.0 |
if (* a1 a2) < -inf.0Initial program 64.0
rmApplied times-frac5.8
rmApplied add-cube-cbrt6.6
Applied *-un-lft-identity6.6
Applied times-frac6.7
Applied associate-*r*6.6
Simplified6.6
rmApplied add-sqr-sqrt33.3
Applied add-sqr-sqrt33.4
Applied *-un-lft-identity33.4
Applied add-cube-cbrt33.5
Applied times-frac33.5
Applied times-frac31.8
Applied times-frac32.0
Simplified31.9
Simplified3.3
if -inf.0 < (* a1 a2) < -5.841733098692664e-155Initial program 5.1
rmApplied associate-/r*4.9
if -5.841733098692664e-155 < (* a1 a2) < 9.87026246872998e-33 or 1.7308585276927107e+90 < (* a1 a2) Initial program 13.5
rmApplied times-frac8.9
rmApplied add-cube-cbrt9.4
Applied *-un-lft-identity9.4
Applied times-frac9.5
Applied associate-*r*8.0
Simplified8.0
rmApplied add-cube-cbrt8.0
Applied cbrt-prod8.1
Applied add-cube-cbrt8.2
Applied *-un-lft-identity8.2
Applied times-frac8.2
Applied times-frac6.7
Applied associate-/l*6.2
rmApplied frac-times5.5
if 9.87026246872998e-33 < (* a1 a2) < 1.7308585276927107e+90Initial program 2.2
rmApplied clear-num2.4
Final simplification5.0
herbie shell --seed 2019170 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))