// Default hash/equals functions
//
+static inline uint32_t hash(uint32_t x){ return x; }
+static inline uint32_t hash(uint64_t x){ return (uint32_t)x; }
+static inline uint32_t hash(int32_t x) { return (uint32_t)x; }
+static inline uint32_t hash(int64_t x) { return (uint32_t)x; }
+
template<class K> struct Hash { uint32_t operator()(const K& k) const { return hash(k); } };
template<class K> struct Equal { bool operator()(const K& k1, const K& k2) const { return k1 == k2; } };
template<class K> struct DeepHash { uint32_t operator()(const K* k) const { return hash(*k); } };
template<class K> struct DeepEqual { bool operator()(const K* k1, const K* k2) const { return *k1 == *k2; } };
-static inline uint32_t hash(uint32_t x){ return x; }
-static inline uint32_t hash(uint64_t x){ return (uint32_t)x; }
-static inline uint32_t hash(int32_t x) { return (uint32_t)x; }
-static inline uint32_t hash(int64_t x) { return (uint32_t)x; }
-
//=================================================================================================
// Some primes
}
// We store them into here before sorting them.
- vector<BBNode> t_products[bitWidth];
+ vector<vector<BBNode> > t_products(bitWidth);
for (int i = 0; i < bitWidth; i++)
{
if (x[i] != BBTrue && x[i] != BBFalse)
{
- pushP(t_products, i, y, x[i], nf);
+ pushP(&t_products[0], i, y, x[i], nf);
}
// A bit can not be true or false, as well as one of these two.
if (xt[i] == MINUS_ONE_MT)
{
- pushP(t_products, i, notY, BBTrue, nf);
+ pushP(&t_products[0], i, notY, BBTrue, nf);
t_products[i].push_back(BBTrue);
booth_recoded.insert(n);
}
else if (xt[i] == ONE_MT)
{
- pushP(t_products, i, y, BBTrue, nf);
+ pushP(&t_products[0], i, y, BBTrue, nf);
}
if (t_products[i].size() == 0)