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

PolynomialHeap backed by a std::priority_queue of (Monom, ring_elem) entries, with deduplication done lazily on lead-term extraction. More...

Inheritance diagram for PriorityQueuePolynomialHeap:
PolynomialHeap our_new_delete

Public Types

using Entry = std::pair<Monom, ring_elem>
using Container = std::vector<Entry, StatsAllocator<Entry>>

Public Member Functions

 PriorityQueuePolynomialHeap (const FreeAlgebra &F)
virtual ~PriorityQueuePolynomialHeap ()
void clear () override
PriorityQueuePolynomialHeap operator= (const PriorityQueuePolynomialHeap &)=delete
 PriorityQueuePolynomialHeap (const PriorityQueuePolynomialHeap &)=delete
PriorityQueuePolynomialHeapaddEntry (const Entry &entry)
PriorityQueuePolynomialHeapaddPolynomial (const Poly &poly) override
PriorityQueuePolynomialHeapaddPolynomial (ring_elem coeff, Word left, Word right, const Poly &poly) override
bool isZero () override
std::pair< Monom, ring_elemviewLeadTerm () 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
EntryConfig mEntryConfig
std::priority_queue< Entry, Container, EntryConfigmQueue
MemoryBlock mMonomialSpace
bool mLeadTermSet
Entry mLeadTerm

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::priority_queue of (Monom, ring_elem) entries, with deduplication done lazily on lead-term extraction.

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

Insertions copy each Monom into mMonomialSpace (a MemoryBlock arena) and push the entry onto the queue. isZero() pops the top entry and keeps summing in any subsequent entries with the same monomial until either a smaller monomial appears (giving the next lead term, cached in mLeadTerm) or the running coefficient becomes zero (in which case the loop continues). The cached mLeadTerm is pushed back onto the queue on the next addPolynomial call.

Definition at line 966 of file NCReduction.cpp.


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