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

◆ process_column()

void F4GB::process_column ( int c)
private

Definition at line 243 of file f4.cpp.

244{
245 /* If this column has been handled before, return.
246 Otherwise, find a GB element whose lead term
247 divides this monomial, and either mark this column
248 as not an initial element, OR append a row
249 */
250
251 column_elem &ce = mat->columns[c];
252 if (ce.head >= -1) return;
253 int32_t which;
254 bool found = mLookupTable.find_one_divisor_packed(mMonomialInfo, ce.monom, which);
255 if (found)
256 {
258 mMonomialInfo->unchecked_divide(ce.monom, mGroebnerBasis[which]->f.monoms, n);
259 mMonomialMemoryBlock.intern(1 + mMonomialInfo->monomial_size(n));
260 next_monom = mMonomialMemoryBlock.reserve(1 + mMonomialInfo->max_monomial_size());
261 next_monom++;
262 // M->set_component(which, n);
263 ce.head = INTSIZE(mat->rows);
264 load_row(n, which);
265 }
266 else
267 ce.head = -1;
268}
F4MemoryBlock< monomial_word > mMonomialMemoryBlock
Definition f4.hpp:188
coefficient_matrix * mat
Definition f4.hpp:186
monomial_word * next_monom
Definition f4.hpp:189
void load_row(packed_monomial monom, int which)
Definition f4.cpp:220
const MonomialInfo * mMonomialInfo
Definition f4.hpp:157
MonomialLookupTable mLookupTable
Definition f4.hpp:182
gb_array mGroebnerBasis
Definition f4.hpp:181
monomial_word * packed_monomial
Definition moninfo.hpp:78
packed_monomial monom
Definition f4-types.hpp:168
#define INTSIZE(a)
Definition style.hpp:37

References column_elem::head, INTSIZE, load_row(), mat, mGroebnerBasis, mLookupTable, mMonomialInfo, mMonomialMemoryBlock, column_elem::monom, and next_monom.

Referenced by make_matrix().