\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -3.975410788026315 \cdot 10^{+305}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -5.1555799853760176 \cdot 10^{-213}:\\
\;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.1084891218651217 \cdot 10^{-234}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 5.666768526518194 \cdot 10^{+83}:\\
\;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r2733908 = a1;
double r2733909 = a2;
double r2733910 = r2733908 * r2733909;
double r2733911 = b1;
double r2733912 = b2;
double r2733913 = r2733911 * r2733912;
double r2733914 = r2733910 / r2733913;
return r2733914;
}
double f(double a1, double a2, double b1, double b2) {
double r2733915 = a1;
double r2733916 = a2;
double r2733917 = r2733915 * r2733916;
double r2733918 = -3.975410788026315e+305;
bool r2733919 = r2733917 <= r2733918;
double r2733920 = b1;
double r2733921 = r2733915 / r2733920;
double r2733922 = b2;
double r2733923 = r2733916 / r2733922;
double r2733924 = r2733921 * r2733923;
double r2733925 = -5.1555799853760176e-213;
bool r2733926 = r2733917 <= r2733925;
double r2733927 = r2733922 * r2733920;
double r2733928 = r2733917 / r2733927;
double r2733929 = 1.1084891218651217e-234;
bool r2733930 = r2733917 <= r2733929;
double r2733931 = r2733916 / r2733920;
double r2733932 = r2733931 / r2733922;
double r2733933 = r2733915 * r2733932;
double r2733934 = 5.666768526518194e+83;
bool r2733935 = r2733917 <= r2733934;
double r2733936 = r2733935 ? r2733928 : r2733924;
double r2733937 = r2733930 ? r2733933 : r2733936;
double r2733938 = r2733926 ? r2733928 : r2733937;
double r2733939 = r2733919 ? r2733924 : r2733938;
return r2733939;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.8 |
|---|---|
| Target | 11.0 |
| Herbie | 5.2 |
if (* a1 a2) < -3.975410788026315e+305 or 5.666768526518194e+83 < (* a1 a2) Initial program 28.2
rmApplied times-frac10.8
if -3.975410788026315e+305 < (* a1 a2) < -5.1555799853760176e-213 or 1.1084891218651217e-234 < (* a1 a2) < 5.666768526518194e+83Initial program 3.9
if -5.1555799853760176e-213 < (* a1 a2) < 1.1084891218651217e-234Initial program 15.4
rmApplied times-frac4.5
rmApplied div-inv4.5
Applied associate-*l*4.6
Simplified4.4
Final simplification5.2
herbie shell --seed 2019154
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))