\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -5.357495374115058859574803759498417143626 \cdot 10^{281} \lor \neg \left(a1 \cdot a2 \le -1.889894252236271565593841678846670543341 \cdot 10^{-219} \lor \neg \left(a1 \cdot a2 \le 6.190439332305387269953729326062688466342 \cdot 10^{-251} \lor \neg \left(a1 \cdot a2 \le 5.085740809466005128807940672201688268012 \cdot 10^{138}\right)\right)\right):\\
\;\;\;\;\frac{a1}{b2} \cdot \frac{a2}{b1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}}{\sqrt[3]{b2} \cdot b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r102473 = a1;
double r102474 = a2;
double r102475 = r102473 * r102474;
double r102476 = b1;
double r102477 = b2;
double r102478 = r102476 * r102477;
double r102479 = r102475 / r102478;
return r102479;
}
double f(double a1, double a2, double b1, double b2) {
double r102480 = a1;
double r102481 = a2;
double r102482 = r102480 * r102481;
double r102483 = -5.357495374115059e+281;
bool r102484 = r102482 <= r102483;
double r102485 = -1.8898942522362716e-219;
bool r102486 = r102482 <= r102485;
double r102487 = 6.190439332305387e-251;
bool r102488 = r102482 <= r102487;
double r102489 = 5.085740809466005e+138;
bool r102490 = r102482 <= r102489;
double r102491 = !r102490;
bool r102492 = r102488 || r102491;
double r102493 = !r102492;
bool r102494 = r102486 || r102493;
double r102495 = !r102494;
bool r102496 = r102484 || r102495;
double r102497 = b2;
double r102498 = r102480 / r102497;
double r102499 = b1;
double r102500 = r102481 / r102499;
double r102501 = r102498 * r102500;
double r102502 = cbrt(r102497);
double r102503 = r102502 * r102502;
double r102504 = r102482 / r102503;
double r102505 = r102502 * r102499;
double r102506 = r102504 / r102505;
double r102507 = r102496 ? r102501 : r102506;
return r102507;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.3 |
|---|---|
| Target | 10.7 |
| Herbie | 4.5 |
if (* a1 a2) < -5.357495374115059e+281Initial program 52.3
rmApplied times-frac8.2
if -5.357495374115059e+281 < (* a1 a2) < -1.8898942522362716e-219 or 6.190439332305387e-251 < (* a1 a2) < 5.085740809466005e+138Initial program 5.0
rmApplied associate-/r*4.5
rmApplied add-cube-cbrt5.3
Applied div-inv5.3
Applied times-frac3.4
if -1.8898942522362716e-219 < (* a1 a2) < 6.190439332305387e-251Initial program 15.7
rmApplied associate-/r*15.2
rmApplied *-un-lft-identity15.2
Applied times-frac6.9
Applied associate-/l*3.6
rmApplied associate-/r/3.6
Simplified3.6
if 5.085740809466005e+138 < (* a1 a2) Initial program 28.6
rmApplied associate-/r*27.4
rmApplied *-un-lft-identity27.4
Applied times-frac16.3
Applied associate-/l*12.8
Final simplification4.5
herbie shell --seed 2019294
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))