\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \le -5.383202245290986 \cdot 10^{-156}:\\
\;\;\;\;a1 \cdot \frac{a2}{b2 \cdot b1}\\
\mathbf{elif}\;b1 \le 6.891101720226247 \cdot 10^{-295}:\\
\;\;\;\;\frac{\frac{a1}{b1} \cdot a2}{b2}\\
\mathbf{elif}\;b1 \le 3.3978834778078136 \cdot 10^{-255}:\\
\;\;\;\;a1 \cdot \frac{a2}{b2 \cdot b1}\\
\mathbf{elif}\;b1 \le 2.5097248616828304 \cdot 10^{-195}:\\
\;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\
\mathbf{elif}\;b1 \le 153.50401013691055:\\
\;\;\;\;\frac{\frac{a1}{b1} \cdot a2}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r3309977 = a1;
double r3309978 = a2;
double r3309979 = r3309977 * r3309978;
double r3309980 = b1;
double r3309981 = b2;
double r3309982 = r3309980 * r3309981;
double r3309983 = r3309979 / r3309982;
return r3309983;
}
double f(double a1, double a2, double b1, double b2) {
double r3309984 = b1;
double r3309985 = -5.383202245290986e-156;
bool r3309986 = r3309984 <= r3309985;
double r3309987 = a1;
double r3309988 = a2;
double r3309989 = b2;
double r3309990 = r3309989 * r3309984;
double r3309991 = r3309988 / r3309990;
double r3309992 = r3309987 * r3309991;
double r3309993 = 6.891101720226247e-295;
bool r3309994 = r3309984 <= r3309993;
double r3309995 = r3309987 / r3309984;
double r3309996 = r3309995 * r3309988;
double r3309997 = r3309996 / r3309989;
double r3309998 = 3.3978834778078136e-255;
bool r3309999 = r3309984 <= r3309998;
double r3310000 = 2.5097248616828304e-195;
bool r3310001 = r3309984 <= r3310000;
double r3310002 = r3309988 / r3309989;
double r3310003 = r3309987 * r3310002;
double r3310004 = r3310003 / r3309984;
double r3310005 = 153.50401013691055;
bool r3310006 = r3309984 <= r3310005;
double r3310007 = r3310006 ? r3309997 : r3310004;
double r3310008 = r3310001 ? r3310004 : r3310007;
double r3310009 = r3309999 ? r3309992 : r3310008;
double r3310010 = r3309994 ? r3309997 : r3310009;
double r3310011 = r3309986 ? r3309992 : r3310010;
return r3310011;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.4 |
|---|---|
| Target | 11.4 |
| Herbie | 11.1 |
if b1 < -5.383202245290986e-156 or 6.891101720226247e-295 < b1 < 3.3978834778078136e-255Initial program 10.5
rmApplied times-frac10.5
rmApplied div-inv10.5
Applied associate-*l*9.9
Simplified10.1
rmApplied div-inv10.1
Applied associate-/l*10.7
Simplified10.6
if -5.383202245290986e-156 < b1 < 6.891101720226247e-295 or 2.5097248616828304e-195 < b1 < 153.50401013691055Initial program 13.5
rmApplied times-frac14.3
rmApplied associate-*r/13.1
if 3.3978834778078136e-255 < b1 < 2.5097248616828304e-195 or 153.50401013691055 < b1 Initial program 10.8
rmApplied times-frac10.3
rmApplied associate-*l/10.2
Final simplification11.1
herbie shell --seed 2019156 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))