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

◆ set_overflow_flags()

void Monoid::set_overflow_flags ( )
private

used for preventing overflows

Definition at line 242 of file monoid.cpp.

243{
245 enum overflow_type flag;
246 int i = 0, k = 0;
247 for (; i < monorder_->nblocks; i++)
248 {
249 mo_block *b = &monorder_->blocks[i];
250 switch (monorder_->blocks[i].typ)
251 {
252 case MO_REVLEX:
253 case MO_WEIGHTS:
254 case MO_LAURENT:
256 case MO_NC_LEX:
257 flag = OVER;
258 goto fillin;
259 case MO_POSITION_UP:
260 case MO_POSITION_DOWN:
261 ERROR(
262 "internal error - MO_POSITION_DOWN or MO_POSITION_UP "
263 "encountered");
264 assert(0);
265 break;
266 case MO_LEX:
267 case MO_GREVLEX:
268 case MO_GREVLEX_WTS:
269 flag = OVER1;
270 goto fillin;
271 case MO_LEX2:
272 case MO_GREVLEX2:
273 case MO_GREVLEX2_WTS:
274 flag = OVER2;
275 goto fillin;
276 case MO_LEX4:
277 case MO_GREVLEX4:
278 case MO_GREVLEX4_WTS:
279 flag = OVER4;
280 goto fillin;
281 fillin:
282 assert(b->first_slot == k);
283 for (int p = b->nslots; p > 0; p--)
284 {
285 assert(k < monomial_size_);
286 overflow[k++] = flag;
287 }
288 break;
289 default:
290 ERROR("internal error - missing case");
291 assert(0);
292 break;
293 }
294 }
295 assert(k == monomial_size_);
296}
overflow_type
Definition monoid.hpp:146
@ OVER2
Definition monoid.hpp:146
@ OVER4
Definition monoid.hpp:146
@ OVER1
Definition monoid.hpp:146
enum Monoid::overflow_type * overflow
int monomial_size_
size of an encoded monomial
Definition monoid.hpp:123
MonomialOrder * monorder_
Definition monoid.hpp:96
int p
const int ERROR
Definition m2-mem.cpp:55
@ MO_GREVLEX4_WTS
@ MO_LAURENT_REVLEX
@ MO_NC_LEX
@ MO_LEX4
@ MO_REVLEX
@ MO_POSITION_UP
@ MO_LEX
@ MO_GREVLEX
@ MO_LEX2
@ MO_GREVLEX4
@ MO_LAURENT
@ MO_GREVLEX2_WTS
@ MO_WEIGHTS
@ MO_POSITION_DOWN
@ MO_GREVLEX2
@ MO_GREVLEX_WTS
#define newarray_atomic(T, len)
Definition newdelete.hpp:91
int first_slot
Definition imonorder.hpp:53

References ERROR, mo_block::first_slot, MO_GREVLEX, MO_GREVLEX2, MO_GREVLEX2_WTS, MO_GREVLEX4, MO_GREVLEX4_WTS, MO_GREVLEX_WTS, MO_LAURENT, MO_LAURENT_REVLEX, MO_LEX, MO_LEX2, MO_LEX4, MO_NC_LEX, MO_POSITION_DOWN, MO_POSITION_UP, MO_REVLEX, MO_WEIGHTS, monomial_size_, monorder_, newarray_atomic, mo_block::nslots, OVER, OVER1, OVER2, OVER4, overflow, and p.