Macaulay2 Engine
Loading...
Searching...
No Matches

◆ computeHashValue()

unsigned int SchurRing2::computeHashValue ( const ring_elem a) const
virtual

Implements Ring.

Definition at line 93 of file schur2.cpp.

94{
95// assuming a normal form: distinct monomials in the linear order introduced by compare_partitions()
96
97 const auto& coeffs = a.get_schur_poly()->coeffs;
98 const auto& monoms = a.get_schur_poly()->monoms;
99
100 size_t seed = 95864398; // using previous M2's constant hash value
101
102 for(auto it=coeffs.begin(); it!=coeffs.end(); ++it)
103 hash_combine(seed, coefficientRing->computeHashValue(*it));
104 for(auto it=monoms.begin(); it!=monoms.end(); ++it)
105 hash_combine(seed, *it);
106
107 return static_cast<unsigned>(seed);
108}
const Ring * coefficientRing
Definition schur2.hpp:154
static void hash_combine(size_t &seed, const T &val)
Definition schur2.cpp:87
const schur_poly * get_schur_poly() const
Definition ringelem.hpp:137

References coefficientRing, ring_elem::get_schur_poly(), and hash_combine().