Definition at line 548 of file imonorder.cpp.
551{
552 if (mo == nullptr) return;
553 int *tmpexp = static_cast<int *>(alloca((mo->nvars + 1) * sizeof(int)));
554 int i, j, nvars;
555 deg_t *degs = mo->degs;
558 int nblocks = mo->nblocks;
559 int *e = expon;
560 const int *
p = psums;
561 for (i = nblocks; i > 0; --i, b++)
switch (b->
typ)
562 {
568 for (j = 0; j <
nvars; j++) *e++ = *
p++;
569 break;
576 break;
583 break;
590 for (j =
nvars - 1; j >= 1; --j, --
p)
592 break;
600 break;
608 for (j =
nvars - 1; j >= 1; --j, --
p)
610 break;
618 break;
626 for (j =
nvars - 1; j >= 1; --j, --
p)
628 break;
633 break;
638 break;
640 break;
643
644 break;
646
647 break;
648 }
649}
static void MO_unpack4(int nvars, const int *slots, int *expon)
static void MO_unpack2(int nvars, const int *slots, int *expon)
static int32_t sub(int32_t x, int32_t y, const char *msg)
static int32_t minus(int32_t x, const char *msg)
enum MonomialOrdering_type typ
References mo_block::first_exp, mo_block::first_slot, safe::minus(), 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_unpack2(), MO_unpack4(), MO_WEIGHTS, mo_block::nvars, p, safe::sub(), and mo_block::typ.
Referenced by Monoid::to_expvector().