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

◆ findAllDivisees() [2/2]

void newf4::MonomialLookupTable::findAllDivisees ( const MonomialView monView,
std::vector< int > & result ) const

Definition at line 75 of file MonomialLookupTable.cpp.

76{
77 int curIndex = 0;
78 MonomialMask mask = createMask(monView);
79 for (; curIndex < mMonomialInfo.size(); ++curIndex)
80 {
81 auto m = mMonomialInfo[curIndex];
82 if (m.mIsUsed && maskDivides(mask,m.mMask))
83 {
84 // ugh with the const_cast, but MonomialInt doesn't store const pointers
85 MonomialView mvDivisee(const_cast<MonomialInt*>(mMonomialSpace.data() + m.mOffset));
86 if ((monView.simpleDegree() <= m.mSimpleDegree) &&
87 (MonomialView::monomialDivides(monView, mvDivisee)))
88 {
89 result.push_back(curIndex);
90 }
91 }
92 }
93}
static MonomialMask createMask(const MonomialView &monView)
std::vector< MonomialInt > mMonomialSpace
std::vector< MonomialInfo > mMonomialInfo
static bool maskDivides(MonomialMask divisor, MonomialMask divisee)
static bool monomialDivides(const MonomialView &divisor, const MonomialView &divisee)
VALGRIND_MAKE_MEM_DEFINED & result(result)
int32_t MonomialInt
uint64_t MonomialMask

References createMask(), maskDivides(), mMonomialInfo, mMonomialSpace, newf4::MonomialView::monomialDivides(), result(), and newf4::MonomialView::simpleDegree().