\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -4.209800947527883 \cdot 10^{+175}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\
\mathbf{elif}\;a1 \cdot a2 \le -1.856528697270096 \cdot 10^{-61}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -4.151349519826297 \cdot 10^{-252}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a2}}{b2}}{\sqrt[3]{b1}} \cdot \left(a1 \cdot \left(\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}\right)\right)\\
\mathbf{elif}\;a1 \cdot a2 \le 2.5035993978499362 \cdot 10^{-275}:\\
\;\;\;\;\frac{\frac{a2}{\sqrt[3]{b2}}}{b1} \cdot \frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.4951274135627082 \cdot 10^{+288}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r4373206 = a1;
double r4373207 = a2;
double r4373208 = r4373206 * r4373207;
double r4373209 = b1;
double r4373210 = b2;
double r4373211 = r4373209 * r4373210;
double r4373212 = r4373208 / r4373211;
return r4373212;
}
double f(double a1, double a2, double b1, double b2) {
double r4373213 = a1;
double r4373214 = a2;
double r4373215 = r4373213 * r4373214;
double r4373216 = -4.209800947527883e+175;
bool r4373217 = r4373215 <= r4373216;
double r4373218 = b2;
double r4373219 = r4373214 / r4373218;
double r4373220 = b1;
double r4373221 = r4373219 / r4373220;
double r4373222 = r4373213 * r4373221;
double r4373223 = -1.856528697270096e-61;
bool r4373224 = r4373215 <= r4373223;
double r4373225 = r4373215 / r4373220;
double r4373226 = r4373225 / r4373218;
double r4373227 = -4.151349519826297e-252;
bool r4373228 = r4373215 <= r4373227;
double r4373229 = cbrt(r4373214);
double r4373230 = r4373229 / r4373218;
double r4373231 = cbrt(r4373220);
double r4373232 = r4373230 / r4373231;
double r4373233 = r4373229 / r4373231;
double r4373234 = r4373233 * r4373233;
double r4373235 = r4373213 * r4373234;
double r4373236 = r4373232 * r4373235;
double r4373237 = 2.5035993978499362e-275;
bool r4373238 = r4373215 <= r4373237;
double r4373239 = cbrt(r4373218);
double r4373240 = r4373214 / r4373239;
double r4373241 = r4373240 / r4373220;
double r4373242 = r4373239 * r4373239;
double r4373243 = r4373213 / r4373242;
double r4373244 = r4373241 * r4373243;
double r4373245 = 1.4951274135627082e+288;
bool r4373246 = r4373215 <= r4373245;
double r4373247 = r4373246 ? r4373226 : r4373222;
double r4373248 = r4373238 ? r4373244 : r4373247;
double r4373249 = r4373228 ? r4373236 : r4373248;
double r4373250 = r4373224 ? r4373226 : r4373249;
double r4373251 = r4373217 ? r4373222 : r4373250;
return r4373251;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.2 |
|---|---|
| Target | 11.1 |
| Herbie | 5.1 |
if (* a1 a2) < -4.209800947527883e+175 or 1.4951274135627082e+288 < (* a1 a2) Initial program 38.1
rmApplied times-frac9.9
rmApplied div-inv10.0
Applied associate-*l*10.1
Simplified10.1
if -4.209800947527883e+175 < (* a1 a2) < -1.856528697270096e-61 or 2.5035993978499362e-275 < (* a1 a2) < 1.4951274135627082e+288Initial program 4.8
rmApplied associate-/r*4.6
if -1.856528697270096e-61 < (* a1 a2) < -4.151349519826297e-252Initial program 4.6
rmApplied times-frac11.4
rmApplied div-inv11.4
Applied associate-*l*10.5
Simplified10.4
rmApplied add-cube-cbrt11.0
Applied *-un-lft-identity11.0
Applied add-cube-cbrt11.1
Applied times-frac11.1
Applied times-frac8.2
Applied associate-*r*5.9
Simplified5.9
if -4.151349519826297e-252 < (* a1 a2) < 2.5035993978499362e-275Initial program 18.0
rmApplied times-frac3.0
rmApplied div-inv3.0
Applied associate-*l*3.4
Simplified3.4
rmApplied *-un-lft-identity3.4
Applied add-cube-cbrt3.7
Applied *-un-lft-identity3.7
Applied times-frac3.7
Applied times-frac3.5
Applied associate-*r*3.1
Simplified3.1
Final simplification5.1
herbie shell --seed 2019133
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))