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

◆ insertBasic()

void SchreyerFrame::insertBasic ( int lev,
res_packed_monomial monom,
int degree )

Definition at line 605 of file res-schreyer-frame.cpp.

606{
607 assert(lev >= 1); // Should not be called with lev==0.
608 // if lev >= 2, then level(lev-1)[comp].(mBegin,mEnd) is set separately.
609 auto& myframe = level(lev);
610 long idx = myframe.size();
611 myframe.emplace_back(FrameElement(monom, degree));
612 auto& myelem = myframe[idx];
613 myelem.mSyzygy.coeffs = vectorArithmetic().allocateElementArray();
614 // The rest of this code simply sets the total monomial for the Schreyer order
615 // and should be moved out of here. (MES 3 Feb 2016)
616 auto& myorder = schreyerOrder(lev);
617 auto myTotalMonom = monomialBlock().allocate(monoid().max_monomial_size());
618 auto& prevorder = schreyerOrder(lev - 1);
619 component_index comp = monoid().get_component(myelem.mMonom);
621 myelem.mMonom, prevorder.mTotalMonom[comp], myTotalMonom);
622 monoid().set_component(monoid().get_component(prevorder.mTotalMonom[comp]),
623 myTotalMonom);
624 myorder.mTotalMonom.push_back(myTotalMonom);
625}
T * allocate(int len=1)
component_index get_component(res_const_packed_monomial m) const
void set_component(component_index component, res_packed_monomial m) const
void unchecked_mult(res_const_packed_monomial m, res_const_packed_monomial n, res_packed_monomial result) const
int degree(int lev, component_index component) const
SchreyerFrameTypes::FrameElement FrameElement
const ResMonoid & monoid() const
ResMemoryBlock< res_monomial_word > & monomialBlock()
std::vector< FrameElement > & level(int lev)
const VectorArithmetic & vectorArithmetic() const
ResSchreyerOrder & schreyerOrder(int lev)
ElementArray allocateElementArray(ComponentIndex nelems) const
Create a coefficient vector with room for nelems coefficients.
myword component_index

References ResMemoryBlock< T, NSLAB >::allocate(), VectorArithmetic::allocateElementArray(), degree(), ResMonoidDense::get_component(), level(), monoid(), monomialBlock(), schreyerOrder(), ResMonoidDense::set_component(), ResMonoidDense::unchecked_mult(), and vectorArithmetic().

Referenced by computeIdealQuotient(), and insertLevelOne().