\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\
\;\;\;\;\frac{\frac{a1}{\sqrt[3]{b2}}}{\sqrt[3]{b2}} \cdot \frac{\frac{a2}{b1}}{\sqrt[3]{b2}}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -1.5091135102985783 \cdot 10^{-293}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 0.0:\\
\;\;\;\;\left(\frac{\frac{a1}{\sqrt[3]{b2}}}{\sqrt[3]{b2}} \cdot \frac{\sqrt[3]{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}} \cdot \sqrt[3]{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}}{\frac{1}{\frac{\sqrt[3]{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}{\sqrt[3]{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}}}\right) \cdot \frac{\sqrt[3]{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}}{\frac{\sqrt[3]{b2}}{\frac{\sqrt[3]{\sqrt[3]{a2}}}{\sqrt[3]{\sqrt[3]{b1}}}}}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 2.7924622985567088 \cdot 10^{265}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r172273 = a1;
double r172274 = a2;
double r172275 = r172273 * r172274;
double r172276 = b1;
double r172277 = b2;
double r172278 = r172276 * r172277;
double r172279 = r172275 / r172278;
return r172279;
}
double f(double a1, double a2, double b1, double b2) {
double r172280 = a1;
double r172281 = a2;
double r172282 = r172280 * r172281;
double r172283 = b1;
double r172284 = b2;
double r172285 = r172283 * r172284;
double r172286 = r172282 / r172285;
double r172287 = -inf.0;
bool r172288 = r172286 <= r172287;
double r172289 = cbrt(r172284);
double r172290 = r172280 / r172289;
double r172291 = r172290 / r172289;
double r172292 = r172281 / r172283;
double r172293 = r172292 / r172289;
double r172294 = r172291 * r172293;
double r172295 = -1.5091135102985783e-293;
bool r172296 = r172286 <= r172295;
double r172297 = 0.0;
bool r172298 = r172286 <= r172297;
double r172299 = cbrt(r172281);
double r172300 = r172299 * r172299;
double r172301 = cbrt(r172283);
double r172302 = r172301 * r172301;
double r172303 = r172300 / r172302;
double r172304 = cbrt(r172303);
double r172305 = r172304 * r172304;
double r172306 = 1.0;
double r172307 = cbrt(r172300);
double r172308 = cbrt(r172302);
double r172309 = r172307 / r172308;
double r172310 = r172306 / r172309;
double r172311 = r172305 / r172310;
double r172312 = r172291 * r172311;
double r172313 = cbrt(r172299);
double r172314 = cbrt(r172301);
double r172315 = r172313 / r172314;
double r172316 = r172289 / r172315;
double r172317 = r172304 / r172316;
double r172318 = r172312 * r172317;
double r172319 = 2.7924622985567088e+265;
bool r172320 = r172286 <= r172319;
double r172321 = r172280 / r172283;
double r172322 = r172281 / r172284;
double r172323 = r172321 * r172322;
double r172324 = r172320 ? r172286 : r172323;
double r172325 = r172298 ? r172318 : r172324;
double r172326 = r172296 ? r172286 : r172325;
double r172327 = r172288 ? r172294 : r172326;
return r172327;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.4 |
|---|---|
| Target | 11.4 |
| Herbie | 2.0 |
if (/ (* a1 a2) (* b1 b2)) < -inf.0Initial program 64.0
rmApplied associate-/r*34.4
rmApplied add-cube-cbrt34.9
Applied *-un-lft-identity34.9
Applied times-frac16.1
Applied times-frac9.7
Simplified9.7
if -inf.0 < (/ (* a1 a2) (* b1 b2)) < -1.5091135102985783e-293 or 0.0 < (/ (* a1 a2) (* b1 b2)) < 2.7924622985567088e+265Initial program 0.9
if -1.5091135102985783e-293 < (/ (* a1 a2) (* b1 b2)) < 0.0Initial program 13.6
rmApplied associate-/r*6.7
rmApplied add-cube-cbrt6.8
Applied *-un-lft-identity6.8
Applied times-frac4.0
Applied times-frac2.7
Simplified2.7
rmApplied add-cube-cbrt2.7
Applied add-cube-cbrt2.8
Applied times-frac2.8
Applied associate-/l*2.5
rmApplied add-cube-cbrt2.5
Applied cbrt-prod2.5
Applied add-cube-cbrt2.5
Applied cbrt-prod2.5
Applied times-frac2.5
Applied *-un-lft-identity2.5
Applied times-frac2.5
Applied add-cube-cbrt2.5
Applied times-frac2.5
Applied associate-*r*1.1
if 2.7924622985567088e+265 < (/ (* a1 a2) (* b1 b2)) Initial program 54.3
rmApplied times-frac10.1
Final simplification2.0
herbie shell --seed 2020033
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))