\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -1.4533836186065774 \cdot 10^{+266}:\\
\;\;\;\;\frac{\frac{a1}{b1}}{\frac{b2}{a2}}\\
\mathbf{elif}\;b1 \cdot b2 \le -5.538350108544492 \cdot 10^{-165}:\\
\;\;\;\;\frac{a1}{b1 \cdot b2} \cdot a2\\
\mathbf{elif}\;b1 \cdot b2 \le 4.167031796800163 \cdot 10^{-112}:\\
\;\;\;\;\frac{a1}{\frac{b2}{\sqrt[3]{a2}}} \cdot \frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1}\\
\mathbf{elif}\;b1 \cdot b2 \le 4.502269201920732 \cdot 10^{+155}:\\
\;\;\;\;\frac{a1}{\frac{1}{\frac{a2}{b1 \cdot b2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\frac{b2}{\sqrt[3]{a2}}} \cdot \frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r4913768 = a1;
double r4913769 = a2;
double r4913770 = r4913768 * r4913769;
double r4913771 = b1;
double r4913772 = b2;
double r4913773 = r4913771 * r4913772;
double r4913774 = r4913770 / r4913773;
return r4913774;
}
double f(double a1, double a2, double b1, double b2) {
double r4913775 = b1;
double r4913776 = b2;
double r4913777 = r4913775 * r4913776;
double r4913778 = -1.4533836186065774e+266;
bool r4913779 = r4913777 <= r4913778;
double r4913780 = a1;
double r4913781 = r4913780 / r4913775;
double r4913782 = a2;
double r4913783 = r4913776 / r4913782;
double r4913784 = r4913781 / r4913783;
double r4913785 = -5.538350108544492e-165;
bool r4913786 = r4913777 <= r4913785;
double r4913787 = r4913780 / r4913777;
double r4913788 = r4913787 * r4913782;
double r4913789 = 4.167031796800163e-112;
bool r4913790 = r4913777 <= r4913789;
double r4913791 = cbrt(r4913782);
double r4913792 = r4913776 / r4913791;
double r4913793 = r4913780 / r4913792;
double r4913794 = r4913791 * r4913791;
double r4913795 = r4913794 / r4913775;
double r4913796 = r4913793 * r4913795;
double r4913797 = 4.502269201920732e+155;
bool r4913798 = r4913777 <= r4913797;
double r4913799 = 1.0;
double r4913800 = r4913782 / r4913777;
double r4913801 = r4913799 / r4913800;
double r4913802 = r4913780 / r4913801;
double r4913803 = r4913798 ? r4913802 : r4913796;
double r4913804 = r4913790 ? r4913796 : r4913803;
double r4913805 = r4913786 ? r4913788 : r4913804;
double r4913806 = r4913779 ? r4913784 : r4913805;
return r4913806;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.0 |
|---|---|
| Target | 10.8 |
| Herbie | 5.2 |
if (* b1 b2) < -1.4533836186065774e+266Initial program 19.4
rmApplied associate-/l*19.0
rmApplied *-un-lft-identity19.0
Applied times-frac8.4
Applied associate-/r*3.5
Simplified3.5
if -1.4533836186065774e+266 < (* b1 b2) < -5.538350108544492e-165Initial program 4.6
rmApplied associate-/l*4.8
rmApplied associate-/r/4.4
if -5.538350108544492e-165 < (* b1 b2) < 4.167031796800163e-112 or 4.502269201920732e+155 < (* b1 b2) Initial program 18.7
rmApplied associate-/l*18.5
rmApplied add-cube-cbrt18.9
Applied times-frac11.8
Applied *-un-lft-identity11.8
Applied times-frac7.7
Simplified7.5
if 4.167031796800163e-112 < (* b1 b2) < 4.502269201920732e+155Initial program 3.0
rmApplied associate-/l*3.1
rmApplied clear-num3.4
Final simplification5.2
herbie shell --seed 2019129
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))