\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 r5607885 = a1;
double r5607886 = a2;
double r5607887 = r5607885 * r5607886;
double r5607888 = b1;
double r5607889 = b2;
double r5607890 = r5607888 * r5607889;
double r5607891 = r5607887 / r5607890;
return r5607891;
}
double f(double a1, double a2, double b1, double b2) {
double r5607892 = a1;
double r5607893 = a2;
double r5607894 = r5607892 * r5607893;
double r5607895 = -9.679895577717099e+235;
bool r5607896 = r5607894 <= r5607895;
double r5607897 = b1;
double r5607898 = r5607892 / r5607897;
double r5607899 = b2;
double r5607900 = r5607893 / r5607899;
double r5607901 = r5607898 * r5607900;
double r5607902 = -8.528837923721859e-214;
bool r5607903 = r5607894 <= r5607902;
double r5607904 = r5607894 / r5607899;
double r5607905 = r5607904 / r5607897;
double r5607906 = 1.8721130835009063e-220;
bool r5607907 = r5607894 <= r5607906;
double r5607908 = r5607892 / r5607899;
double r5607909 = r5607893 / r5607897;
double r5607910 = r5607908 * r5607909;
double r5607911 = 1.236371655594578e+224;
bool r5607912 = r5607894 <= r5607911;
double r5607913 = r5607894 / r5607897;
double r5607914 = r5607913 / r5607899;
double r5607915 = r5607897 / r5607900;
double r5607916 = r5607892 / r5607915;
double r5607917 = r5607912 ? r5607914 : r5607916;
double r5607918 = r5607907 ? r5607910 : r5607917;
double r5607919 = r5607903 ? r5607905 : r5607918;
double r5607920 = r5607896 ? r5607901 : r5607919;
return r5607920;
}




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 0 4.7
rmApplied associate-/r*4.4
if -8.528837923721859e-214 < (* a1 a2) < 1.8721130835009063e-220Initial program 15.7
Taylor expanded around 0 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 0 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
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))