7#define HASHVALUE(m) (M->hash_value(m))
8#define MONOMIAL_EQUAL(m, n) (M->is_equal(m, n))
10template <
typename ValueType>
23template <
typename ValueType>
36template <
typename ValueType>
44 if (hashval ==
size) hashval = 0;
51template <
typename ValueType>
56 std::unique_ptr<value[]> oldtab = std::move(
hashtab);
59 for (
long i = 0; i < oldsize; i++)
60 if (oldtab[i])
insert(oldtab[i]);
63template <
typename ValueType>
82template <
typename ValueType>
103 if (i == hashtop) i =
hashtab.get();
125template <
typename ValueType>
128 std::cout <<
"--hash table info--" << std::endl;
129 std::cout <<
" size of hashtable = " <<
size << std::endl;
130 std::cout <<
" number of monoms = " <<
count << std::endl;
132 std::cout <<
" number of clashes = " <<
nclashes << std::endl;
138template <
typename ValueType>
142 for (
long i = 0; i <
size; i++)
151 std::cerr <<
"-- " << nzeros <<
" zero elements --" << std::endl;
154 std::cerr <<
"hash " <<
M->hash_value(m) <<
" monomial ";
156 std::cerr << std::endl;
159 if (nzeros > 0) std::cerr <<
"-- " << nzeros <<
" zero elements --" << std::endl;
unsigned long monequal_count
std::unique_ptr< value[]> hashtab
MonomialHashTable(const ValueType *M0, int logsize=24)
unsigned long monequal_fails
void initialize(int logsize0)
bool find_or_insert(value m, value &result)
unsigned long max_run_length
unsigned long nfind_or_insert
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define MONOMIAL_EQUAL(m, n)
MonomialHashTable<ValueType> — open-addressing intern table for F4 and resolution monomials.