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

◆ M2_mo_offset()

MonomialOrdering * M2_mo_offset ( const MonomialOrdering * mo,
int offset )
static

Definition at line 46 of file monomial-ordering.cpp.

47{
48 int i, j;
50 for (i = 0; i < mo->len; i++)
51 {
52 mon_part p = mo->array[i];
53 if (p->type != MO_WEIGHTS)
54 result->array[i] = mo_make(p->type, p->nvars, p->wts);
55 else
56 {
57 mon_part q = mo_make(MO_WEIGHTS, offset + p->nvars, nullptr);
58 q->wts = getmemvectortype(int, q->nvars);
59 for (j = 0; j < offset; j++) q->wts[j] = 0;
60 for (; j < q->nvars; j++) q->wts[j] = p->wts[j - offset];
61 }
62 }
63 return result;
64}
int p
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define getmemvectortype(S, len)
Definition m2-mem.h:146
static struct mon_part_rec_ * mo_make(enum MonomialOrdering_type type, int nvars, const int *wts)
static MonomialOrdering * make_mon_order(int n)
@ MO_WEIGHTS
Front-end-side description of a monomial ordering as a list of mon_part blocks.

References MonomialOrdering::array, getmemvectortype, MonomialOrdering::len, make_mon_order(), mo_make(), MO_WEIGHTS, p, and result().

Referenced by MonomialOrderings::product(), and rawProductMonomialOrdering().