\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -3.21552553834883066 \cdot 10^{-111}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\
\mathbf{elif}\;b1 \cdot b2 \le 4.9910435712265866 \cdot 10^{-165}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;b1 \cdot b2 \le 7.34799870317304565 \cdot 10^{177}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r181729 = a1;
double r181730 = a2;
double r181731 = r181729 * r181730;
double r181732 = b1;
double r181733 = b2;
double r181734 = r181732 * r181733;
double r181735 = r181731 / r181734;
return r181735;
}
double f(double a1, double a2, double b1, double b2) {
double r181736 = b1;
double r181737 = b2;
double r181738 = r181736 * r181737;
double r181739 = -3.2155255383488307e-111;
bool r181740 = r181738 <= r181739;
double r181741 = 1.0;
double r181742 = a1;
double r181743 = a2;
double r181744 = r181742 * r181743;
double r181745 = r181738 / r181744;
double r181746 = r181741 / r181745;
double r181747 = 4.991043571226587e-165;
bool r181748 = r181738 <= r181747;
double r181749 = r181742 / r181736;
double r181750 = r181743 / r181737;
double r181751 = r181749 * r181750;
double r181752 = 7.347998703173046e+177;
bool r181753 = r181738 <= r181752;
double r181754 = r181742 * r181750;
double r181755 = r181754 / r181736;
double r181756 = r181753 ? r181746 : r181755;
double r181757 = r181748 ? r181751 : r181756;
double r181758 = r181740 ? r181746 : r181757;
return r181758;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.2 |
|---|---|
| Target | 11.1 |
| Herbie | 7.4 |
if (* b1 b2) < -3.2155255383488307e-111 or 4.991043571226587e-165 < (* b1 b2) < 7.347998703173046e+177Initial program 6.5
rmApplied clear-num6.8
if -3.2155255383488307e-111 < (* b1 b2) < 4.991043571226587e-165Initial program 23.4
rmApplied times-frac11.6
if 7.347998703173046e+177 < (* b1 b2) Initial program 15.4
rmApplied times-frac4.6
rmApplied associate-*l/4.9
Final simplification7.4
herbie shell --seed 2020059
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))