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

◆ product()

MonomialOrdering * MonomialOrderings::product ( const std::vector< MonomialOrdering * > & M)
static

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

250{
251 MonomialOrdering *result;
252 int i, j, sum, next, offset;
253 sum = 0;
254 for (i = 0; i < M.size(); i++) sum += M[i]->len;
255
256 result = make_mon_order(sum);
257 next = 0;
258 offset = 0;
259 for (i = 0; i < M.size(); i++)
260 {
261 int nvars = rawNumberOfVariables(M[i]);
262 MonomialOrdering *mo = M2_mo_offset(M[i], offset);
263 for (j = 0; j < mo->len; j++) result->array[next++] = mo->array[j];
264 offset += nvars;
265 }
266 return result;
267}
VALGRIND_MAKE_MEM_DEFINED & result(result)
static MonomialOrdering * M2_mo_offset(const MonomialOrdering *mo, int offset)
static MonomialOrdering * make_mon_order(int n)
int rawNumberOfVariables(const MonomialOrdering *mo)
const mpreal sum(const mpreal tab[], const unsigned long int n, int &status, mp_rnd_t mode=mpreal::get_default_rnd())
Definition mpreal.h:2600

References MonomialOrdering::array, MonomialOrdering::len, M2_mo_offset(), make_mon_order(), rawNumberOfVariables(), and result().