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

◆ findDivisor()

bool F4Res::findDivisor ( res_const_packed_monomial m,
res_packed_monomial result )
private

findDivisor

Definition at line 109 of file res-f4.cpp.

110{
111 // get component of m
112 // find the range of monomials to check
113 // for each of these, check divisibility in turn
114 // if one works, then return true, and set result.
115 long comp =
116 monoid().get_component(m); // component is an index into level mLevel-2
117 auto& elem = mFrame.level(mThisLevel - 2)[comp];
118 auto& lev = mFrame.level(mThisLevel - 1);
119 for (auto j = elem.mBegin; j < elem.mEnd; ++j)
120 {
121 // Check divisibility of m by this element
122 res_packed_monomial pj = lev[j].mMonom;
123 if (monoid().divide(m, pj, result)) // this sets the component to be 0
124 {
125 monoid().set_component(j, result); // this sets component correctly
126 return true;
127 }
128 }
129 return false;
130}
int mThisLevel
Definition res-f4.hpp:164
const ResMonoid & monoid() const
Definition res-f4.hpp:103
SchreyerFrame & mFrame
Definition res-f4.hpp:159
component_index get_component(res_const_packed_monomial m) const
void set_component(component_index component, res_packed_monomial m) const
VALGRIND_MAKE_MEM_DEFINED & result(result)
res_monomial_word * res_packed_monomial

References ResMonoidDense::get_component(), mFrame, monoid(), mThisLevel, result(), and ResMonoidDense::set_component().

Referenced by processCurrentMonomial().