\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -6.112419174821975432135783811036282806513 \cdot 10^{173}:\\
\;\;\;\;\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \left(\sqrt[3]{a2} \cdot \sqrt[3]{a2}\right)}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\
\mathbf{elif}\;b1 \cdot b2 \le -4.251241574118469563607708541008145541133 \cdot 10^{-252}:\\
\;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\
\mathbf{elif}\;b1 \cdot b2 \le 5.86129416444517535704513449031412392708 \cdot 10^{-283}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;b1 \cdot b2 \le 9.3869286443022839600436283384046295134 \cdot 10^{260}:\\
\;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \left(\sqrt[3]{a2} \cdot \sqrt[3]{a2}\right)}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r137332 = a1;
double r137333 = a2;
double r137334 = r137332 * r137333;
double r137335 = b1;
double r137336 = b2;
double r137337 = r137335 * r137336;
double r137338 = r137334 / r137337;
return r137338;
}
double f(double a1, double a2, double b1, double b2) {
double r137339 = b1;
double r137340 = b2;
double r137341 = r137339 * r137340;
double r137342 = -6.112419174821975e+173;
bool r137343 = r137341 <= r137342;
double r137344 = a1;
double r137345 = cbrt(r137339);
double r137346 = r137345 * r137345;
double r137347 = r137344 / r137346;
double r137348 = a2;
double r137349 = cbrt(r137348);
double r137350 = r137349 * r137349;
double r137351 = r137347 * r137350;
double r137352 = cbrt(r137340);
double r137353 = r137352 * r137352;
double r137354 = r137351 / r137353;
double r137355 = r137349 / r137345;
double r137356 = r137355 / r137352;
double r137357 = r137354 * r137356;
double r137358 = -4.2512415741184696e-252;
bool r137359 = r137341 <= r137358;
double r137360 = r137348 / r137341;
double r137361 = r137344 * r137360;
double r137362 = 5.861294164445175e-283;
bool r137363 = r137341 <= r137362;
double r137364 = r137344 / r137339;
double r137365 = r137348 / r137340;
double r137366 = r137364 * r137365;
double r137367 = 9.386928644302284e+260;
bool r137368 = r137341 <= r137367;
double r137369 = r137368 ? r137361 : r137357;
double r137370 = r137363 ? r137366 : r137369;
double r137371 = r137359 ? r137361 : r137370;
double r137372 = r137343 ? r137357 : r137371;
return r137372;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.6 |
| Herbie | 5.1 |
if (* b1 b2) < -6.112419174821975e+173 or 9.386928644302284e+260 < (* b1 b2) Initial program 16.3
rmApplied associate-/r*8.6
rmApplied add-cube-cbrt8.9
Applied add-cube-cbrt9.0
Applied times-frac4.4
Applied times-frac3.9
rmApplied *-un-lft-identity3.9
Applied *-un-lft-identity3.9
Applied add-cube-cbrt4.0
Applied times-frac4.0
Applied times-frac3.9
Applied associate-*r*3.4
Simplified3.4
if -6.112419174821975e+173 < (* b1 b2) < -4.2512415741184696e-252 or 5.861294164445175e-283 < (* b1 b2) < 9.386928644302284e+260Initial program 4.9
rmApplied associate-/r*11.0
rmApplied *-un-lft-identity11.0
Applied *-un-lft-identity11.0
Applied times-frac13.8
Applied times-frac11.6
Simplified11.6
Simplified5.1
if -4.2512415741184696e-252 < (* b1 b2) < 5.861294164445175e-283Initial program 44.0
rmApplied times-frac10.3
Final simplification5.1
herbie shell --seed 2019291
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))