Macaulay2 Engine
Loading...
Searching...
No Matches
MapPolynomialHeap Class Reference

PolynomialHeap backed by a std::map<Monom, ring_elem, MonomEq>, deduplicating on insert via the map's lookup. More...

Inheritance diagram for MapPolynomialHeap:
PolynomialHeap our_new_delete

Public Types

using Entry = std::pair<Monom, ring_elem>
using ConstEntry = std::pair<const Monom, ring_elem>

Public Member Functions

 MapPolynomialHeap (const FreeAlgebra &F)
virtual ~MapPolynomialHeap ()
void clear () override
MapPolynomialHeap operator= (const MapPolynomialHeap &)=delete
 MapPolynomialHeap (const MapPolynomialHeap &)=delete
void addTerm (Entry tm)
MapPolynomialHeapaddPolynomial (const Poly &poly) override
MapPolynomialHeapaddPolynomial (ring_elem coeff, Word left, Word right, const Poly &poly) override
bool isZero () override
Entry viewLeadTerm () override
void removeLeadTerm () override
Polyvalue () override
size_t getMemoryUsedInBytes () override
std::string getName () const override
Public Member Functions inherited from PolynomialHeap
virtual ~PolynomialHeap ()

Private Attributes

FreeAlgebra mRing
MonomEq mMonomEq
std::map< Monom, ring_elem, MonomEq, gc_allocator< ConstEntry > > mMap
MemoryBlock mMonomialSpace

Additional Inherited Members

Static Public Member Functions inherited from our_new_delete
static void * operator new (size_t size)
static void * operator new[] (size_t size)
static void operator delete (void *obj)
static void operator delete[] (void *obj)
static void * operator new (size_t size, void *existing_memory)
static void * operator new[] (size_t size, void *existing_memory)
static void operator delete (void *obj, void *existing_memory)
static void operator delete[] (void *obj, void *existing_memory)

Detailed Description

PolynomialHeap backed by a std::map<Monom, ring_elem, MonomEq>, deduplicating on insert via the map's lookup.

Note
AI-generated documentation. Verify against the source before relying on it.

Each addTerm does a map::find on the monomial; on hit the coefficients are summed in place, on miss the monomial is copied into mMonomialSpace (a MemoryBlock arena) and inserted. Lead-term extraction uses mMap.begin(), so the map's ordering must agree with the heap's notion of "leading".

Definition at line 620 of file NCReduction.cpp.


The documentation for this class was generated from the following file: