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

◆ insert()

void MonomialTable::insert ( exponents_t exp,
int comp,
int id )

Definition at line 218 of file montable.cpp.

219{
220 /* Insert 'exp' into the monomial table. These are kept sorted in ascending
221 order
222 in some order (lex order?). No element is ever removed.
223 */
224
225 if (comp >= INTSIZE(_head))
226 {
227 for (int i = INTSIZE(_head); i <= comp; i++)
228 _head.push_back(make_list_head());
229 }
230
231 mon_term *head = _head[comp];
232 mon_term *t;
233
234 /* Make a new mon_term including exp */
235 mon_term *newterm = reinterpret_cast<mon_term *>(mon_term_stash->new_elem());
236 newterm->_lead = exp;
237 newterm->_mask = exponents::mask(_nvars, exp);
238 newterm->_val = id;
239
240 _count++;
241
242/* Find where to put it */
243#ifdef INSERT_AT_END
244 // put it at the end
245 t = head->_prev;
246#else
247 // insert it in sequence (stupid ordering, though)
248 for (t = head; t->_next != head; t = t->_next)
249 {
250 if (exponents_greater(_nvars, newterm->_lead, t->_next->_lead))
251 {
252 /* Time to insert newterm, right between t, t->next */
253 break;
254 }
255 }
256#endif
257
258 /* The actual insertion */
259 newterm->_next = t->_next;
260 newterm->_prev = t;
261 t->_next->_prev = newterm;
262 t->_next = newterm;
263}
static HashExponent mask(int nvars, ConstExponents a)
stash * mon_term_stash
Definition montable.hpp:152
mon_term * make_list_head()
Definition montable.cpp:46
static bool exponents_greater(int nvars, exponents_t a, exponents_t b)
const mpreal exp(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
Definition mpreal.h:2298
Doubly-linked-list node of a MonomialTable's per-component monomial list.
Definition montable.hpp:109
#define INTSIZE(a)
Definition style.hpp:37

References _count, MonomialTable::mon_term::_lead, MonomialTable::mon_term::_mask, MonomialTable::mon_term::_next, _nvars, MonomialTable::mon_term::_prev, MonomialTable::mon_term::_val, exponents_greater(), INTSIZE, make_list_head(), ExponentVector< int, true >::mask(), and mon_term_stash.

Referenced by gbA::minimalize_pairs_non_ZZ().