|
Macaulay2 Engine
|
PolynomialHeap backed by a std::map<Monom, ring_elem, MonomEq>, deduplicating on insert via the map's lookup. More...
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) |
| MapPolynomialHeap & | addPolynomial (const Poly &poly) override |
| MapPolynomialHeap & | addPolynomial (ring_elem coeff, Word left, Word right, const Poly &poly) override |
| bool | isZero () override |
| Entry | viewLeadTerm () override |
| void | removeLeadTerm () override |
| Poly * | value () 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) |
PolynomialHeap backed by a std::map<Monom, ring_elem, MonomEq>, deduplicating on insert via the map's lookup.
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.