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

◆ support()

M2_arrayint PolyRing::support ( const ring_elem a) const
virtual

Implements PolynomialRing.

Definition at line 339 of file poly.cpp.

340{
343 for (int i = 0; i < n_vars(); i++) EXP1[i] = 0;
344 for (Nterm& t : f)
345 {
346 M_->to_expvector(t.monom, EXP2);
347 exponents::lcm(n_vars(), EXP1, EXP2, EXP1);
348 }
349 int nelems = 0;
350 for (int i = 0; i < n_vars(); i++)
351 if (EXP1[i] > 0) nelems++;
352 M2_arrayint result = M2_makearrayint(nelems);
353 int next = 0;
354 for (int i = 0; i < n_vars(); i++)
355 if (EXP1[i] > 0) result->array[next++] = i;
356 return result;
357}
exponents::Exponents exponents_t
static void lcm(int nvars, ConstExponents a, ConstExponents b, Exponents result)
const Monoid * M_
Definition polyring.hpp:124
int n_vars() const
Definition polyring.hpp:196
VALGRIND_MAKE_MEM_DEFINED & result(result)
M2_arrayint M2_makearrayint(int n)
Definition m2-types.cpp:6
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62

References ALLOCATE_EXPONENTS, PolynomialRing::exp_size, ExponentVector< int, true >::lcm(), M2_makearrayint(), PolynomialRing::M_, PolynomialRing::n_vars(), and result().