1#ifndef _polynomial_hpp_
2#define _polynomial_hpp_
151 if (m1[2] > m2[2])
return GT;
152 if (m1[2] < m2[2])
return LT;
153 if (m1[3] > m2[3])
return GT;
154 if (m1[3] < m2[3])
return LT;
156 for (
int j = 4; j < m1[0]; j++)
158 if (m1[j] > m2[j])
return LT;
159 if (m1[j] < m2[j])
return GT;
167 if (
mValue[0] != rhs[0])
return false;
168 for (
int i=2; i <
mValue[0]; ++i)
169 if (
mValue[i] != rhs[i])
return false;
190 auto begin = allocated_result.first;
203 inserter.push_back(a.
size()-3);
204 for (
int i=4; i<a.
size(); ++i)
205 inserter.push_back(a[i]);
211template<
typename CoefficientRingType>
gc_vector< const Poly * > ConstPolyList
Polynomial< CoefficientRingType > Poly
std::ostream & operator<<(std::ostream &o, const Monom &m)
gc_vector< Poly * > PolyList
ModuleMonom monomToModuleMonom(const Monom &a, int comp, std::pair< int *, int * > allocated_result)
void appendModuleMonomToMonom(const ModuleMonom &a, int &comp, T &inserter)
const int * operator+(int i) const
static int sizeOfCorrespondingModuleMonom(const Monom &m)
int operator[](int i) const
bool operator==(const ModuleMonom &rhs) const
const int * begin() const
static int compare(const ModuleMonom &m1, const ModuleMonom &m2)
void setHashValue() const
Monom extended with a module component, a stored index, and a memoised hash — the value type of IntsS...
coeffConstIterator mCoeffIt
coeffConstIterator cCoeffIterator() const
monomConstIterator mMonomIt
const_iterator(coeffConstIterator coeffIt, monomConstIterator monIt)
bool operator==(const self_type &rhs) const
std::pair< ring_elem, Monom > operator*() const
bool operator!=(const self_type &rhs) const
std::forward_iterator_tag iterator_category
self_type operator++(int junk)
const ring_elem coeff() const
monomConstIterator cMonomIterator() const
friend class M2FreeAlgebraOrQuotient
monomVector::iterator monomIterator
monomVector::const_iterator monomConstIterator
coeffVector & getCoeffInserter()
gc_vector< int > monomVector
coeffConstIterator cendCoeff() const
const_iterator cbegin() const
friend class M2FreeAlgebra
coeffIterator beginCoeff()
CoefficientRingType::ElementType ElementType
coeffVector::const_iterator coeffConstIterator
coeffVector mCoefficients
const coeffVector & getElementArray() const
monomVector & getMonomInserter()
gc_vector< ElementType > coeffVector
monomConstIterator cbeginMonom() const
monomConstIterator cendMonom() const
coeffConstIterator cbeginCoeff() const
coeffVector::iterator coeffIterator
const_iterator cend() const
const monomVector & getMonomVector() const
VALGRIND_MAKE_MEM_DEFINED & result(result)
typename std::vector< T, gc_allocator< T > > gc_vector
a version of the STL vector, which allocates its backing memory with gc.
our_new_delete — per-class opt-in routing of new / delete through bdwgc.
TermIterator< Nterm > begin(Nterm *ptr)
ring_elem — the universal value type carried by every Ring* in the engine.
Default CoefficientRingType parameter for Polynomial<...>: a thin trait whose ElementType is just rin...
const int * begin() const
const int * operator+(int i) const
int operator[](int i) const
Non-owning view onto a [length, degree, v1, v2, ..., vn] packed monomial in some externally managed b...
Engine-wide stylistic constants: LT / EQ / GT codes, INTSIZE, GEOHEAP_SIZE.