\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -1.578959191412524580749417655732052670367 \cdot 10^{249}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -1.642650394240659557808641160626266142058 \cdot 10^{-267}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 0.0:\\
\;\;\;\;\frac{\frac{a1}{b1}}{\frac{b2}{a2}}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 2.397032039407073387947567697695123600538 \cdot 10^{295}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\frac{b1}{\frac{a2}{b2}}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r10614009 = a1;
double r10614010 = a2;
double r10614011 = r10614009 * r10614010;
double r10614012 = b1;
double r10614013 = b2;
double r10614014 = r10614012 * r10614013;
double r10614015 = r10614011 / r10614014;
return r10614015;
}
double f(double a1, double a2, double b1, double b2) {
double r10614016 = a1;
double r10614017 = a2;
double r10614018 = r10614016 * r10614017;
double r10614019 = b1;
double r10614020 = b2;
double r10614021 = r10614019 * r10614020;
double r10614022 = r10614018 / r10614021;
double r10614023 = -1.5789591914125246e+249;
bool r10614024 = r10614022 <= r10614023;
double r10614025 = r10614016 / r10614019;
double r10614026 = r10614017 / r10614020;
double r10614027 = r10614025 * r10614026;
double r10614028 = -1.6426503942406596e-267;
bool r10614029 = r10614022 <= r10614028;
double r10614030 = 0.0;
bool r10614031 = r10614022 <= r10614030;
double r10614032 = r10614020 / r10614017;
double r10614033 = r10614025 / r10614032;
double r10614034 = 2.3970320394070734e+295;
bool r10614035 = r10614022 <= r10614034;
double r10614036 = r10614019 / r10614026;
double r10614037 = r10614016 / r10614036;
double r10614038 = r10614035 ? r10614022 : r10614037;
double r10614039 = r10614031 ? r10614033 : r10614038;
double r10614040 = r10614029 ? r10614022 : r10614039;
double r10614041 = r10614024 ? r10614027 : r10614040;
return r10614041;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.4 |
|---|---|
| Target | 11.1 |
| Herbie | 3.3 |
if (/ (* a1 a2) (* b1 b2)) < -1.5789591914125246e+249Initial program 42.4
rmApplied times-frac17.5
if -1.5789591914125246e+249 < (/ (* a1 a2) (* b1 b2)) < -1.6426503942406596e-267 or 0.0 < (/ (* a1 a2) (* b1 b2)) < 2.3970320394070734e+295Initial program 0.7
if -1.6426503942406596e-267 < (/ (* a1 a2) (* b1 b2)) < 0.0Initial program 12.8
rmApplied associate-/l*7.5
rmApplied *-un-lft-identity7.5
Applied times-frac4.4
Applied associate-/r*3.2
Simplified3.2
if 2.3970320394070734e+295 < (/ (* a1 a2) (* b1 b2)) Initial program 61.5
rmApplied associate-/l*46.3
rmApplied *-un-lft-identity46.3
Applied *-un-lft-identity46.3
Applied times-frac46.3
Simplified46.3
rmApplied associate-/l*12.8
Final simplification3.3
herbie shell --seed 2019173
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))