\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -4.57378486630527 \cdot 10^{-309}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 1.1129784645222681 \cdot 10^{+303}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2}}} \cdot \frac{\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}{\frac{\sqrt[3]{\sqrt[3]{b2}}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{\sqrt[3]{b2}}}{\sqrt[3]{a2}}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r49973551 = a1;
double r49973552 = a2;
double r49973553 = r49973551 * r49973552;
double r49973554 = b1;
double r49973555 = b2;
double r49973556 = r49973554 * r49973555;
double r49973557 = r49973553 / r49973556;
return r49973557;
}
double f(double a1, double a2, double b1, double b2) {
double r49973558 = a1;
double r49973559 = a2;
double r49973560 = r49973558 * r49973559;
double r49973561 = b1;
double r49973562 = b2;
double r49973563 = r49973561 * r49973562;
double r49973564 = r49973560 / r49973563;
double r49973565 = -inf.0;
bool r49973566 = r49973564 <= r49973565;
double r49973567 = r49973558 / r49973561;
double r49973568 = r49973559 / r49973562;
double r49973569 = r49973567 * r49973568;
double r49973570 = -4.57378486630527e-309;
bool r49973571 = r49973564 <= r49973570;
double r49973572 = -0.0;
bool r49973573 = r49973564 <= r49973572;
double r49973574 = 1.1129784645222681e+303;
bool r49973575 = r49973564 <= r49973574;
double r49973576 = cbrt(r49973559);
double r49973577 = cbrt(r49973561);
double r49973578 = r49973576 / r49973577;
double r49973579 = cbrt(r49973562);
double r49973580 = cbrt(r49973579);
double r49973581 = r49973578 / r49973580;
double r49973582 = r49973577 * r49973579;
double r49973583 = r49973558 / r49973582;
double r49973584 = r49973583 / r49973582;
double r49973585 = r49973580 / r49973576;
double r49973586 = r49973585 * r49973585;
double r49973587 = r49973584 / r49973586;
double r49973588 = r49973581 * r49973587;
double r49973589 = r49973575 ? r49973564 : r49973588;
double r49973590 = r49973573 ? r49973569 : r49973589;
double r49973591 = r49973571 ? r49973564 : r49973590;
double r49973592 = r49973566 ? r49973569 : r49973591;
return r49973592;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.2 |
|---|---|
| Target | 10.9 |
| Herbie | 1.9 |
if (/ (* a1 a2) (* b1 b2)) < -inf.0 or -4.57378486630527e-309 < (/ (* a1 a2) (* b1 b2)) < -0.0Initial program 18.4
rmApplied times-frac3.0
if -inf.0 < (/ (* a1 a2) (* b1 b2)) < -4.57378486630527e-309 or -0.0 < (/ (* a1 a2) (* b1 b2)) < 1.1129784645222681e+303Initial program 0.8
if 1.1129784645222681e+303 < (/ (* a1 a2) (* b1 b2)) Initial program 60.0
rmApplied associate-/r*45.0
rmApplied add-cube-cbrt45.3
Applied add-cube-cbrt45.5
Applied times-frac12.6
Applied times-frac6.7
Simplified5.7
rmApplied add-cube-cbrt5.9
Applied *-un-lft-identity5.9
Applied add-cube-cbrt6.0
Applied times-frac6.0
Applied times-frac5.3
Applied associate-*r*5.6
Simplified5.6
Final simplification1.9
herbie shell --seed 2019125
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))