\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -9.679895577717099 \cdot 10^{+235}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -8.528837923721859 \cdot 10^{-214}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b2}}{b1}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.8721130835009063 \cdot 10^{-220}:\\
\;\;\;\;\frac{a1}{b2} \cdot \frac{a2}{b1}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.236371655594578 \cdot 10^{+224}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\frac{b1}{\frac{a2}{b2}}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r5313737 = a1;
double r5313738 = a2;
double r5313739 = r5313737 * r5313738;
double r5313740 = b1;
double r5313741 = b2;
double r5313742 = r5313740 * r5313741;
double r5313743 = r5313739 / r5313742;
return r5313743;
}
double f(double a1, double a2, double b1, double b2) {
double r5313744 = a1;
double r5313745 = a2;
double r5313746 = r5313744 * r5313745;
double r5313747 = -9.679895577717099e+235;
bool r5313748 = r5313746 <= r5313747;
double r5313749 = b1;
double r5313750 = r5313744 / r5313749;
double r5313751 = b2;
double r5313752 = r5313745 / r5313751;
double r5313753 = r5313750 * r5313752;
double r5313754 = -8.528837923721859e-214;
bool r5313755 = r5313746 <= r5313754;
double r5313756 = r5313746 / r5313751;
double r5313757 = r5313756 / r5313749;
double r5313758 = 1.8721130835009063e-220;
bool r5313759 = r5313746 <= r5313758;
double r5313760 = r5313744 / r5313751;
double r5313761 = r5313745 / r5313749;
double r5313762 = r5313760 * r5313761;
double r5313763 = 1.236371655594578e+224;
bool r5313764 = r5313746 <= r5313763;
double r5313765 = r5313746 / r5313749;
double r5313766 = r5313765 / r5313751;
double r5313767 = r5313749 / r5313752;
double r5313768 = r5313744 / r5313767;
double r5313769 = r5313764 ? r5313766 : r5313768;
double r5313770 = r5313759 ? r5313762 : r5313769;
double r5313771 = r5313755 ? r5313757 : r5313770;
double r5313772 = r5313748 ? r5313753 : r5313771;
return r5313772;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.2 |
|---|---|
| Target | 10.7 |
| Herbie | 4.9 |
if (* a1 a2) < -9.679895577717099e+235Initial program 42.4
rmApplied times-frac9.0
if -9.679895577717099e+235 < (* a1 a2) < -8.528837923721859e-214Initial program 4.7
Taylor expanded around -inf 4.7
rmApplied associate-/r*4.4
if -8.528837923721859e-214 < (* a1 a2) < 1.8721130835009063e-220Initial program 15.7
Taylor expanded around -inf 15.7
rmApplied times-frac3.8
if 1.8721130835009063e-220 < (* a1 a2) < 1.236371655594578e+224Initial program 4.4
rmApplied associate-/r*4.6
if 1.236371655594578e+224 < (* a1 a2) Initial program 40.0
Taylor expanded around -inf 40.0
rmApplied associate-/r*38.9
rmApplied *-un-lft-identity38.9
Applied times-frac18.5
Applied associate-/l*10.8
Final simplification4.9
herbie shell --seed 2019130 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))