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

◆ select_by_degrees()

M2_arrayintOrNull FreeModule::select_by_degrees ( M2_arrayintOrNull lo,
M2_arrayintOrNull hi ) const

Definition at line 415 of file freemod.cpp.

417{
418 auto D = R->degree_monoid();
419 std::vector<size_t> result;
420 int ndegrees = D->n_vars();
421 exponents_t exp = newarray_atomic(int, ndegrees);
422 for (int i = 0; i < rank(); i++)
423 {
424 D->to_expvector(degree(i), exp);
425#if 0
426 for (int i=0; i<ndegrees; i++)
427 printf("%d ", exp[i]);
428 if (degree_in_box(ndegrees, exp, lo, hi))
429 printf("yes\n");
430 else
431 printf("no\n");
432#endif
433 if (degree_in_box(ndegrees, exp, lo, hi)) result.push_back(i);
434 }
435 M2_arrayint selection = stdvector_to_M2_arrayint(result);
436 freemem(exp);
437 return selection;
438}
exponents::Exponents exponents_t
const_monomial degree(int i) const
Definition freemod.hpp:104
const Ring * R
Definition freemod.hpp:75
int rank() const
Definition freemod.hpp:105
static bool degree_in_box(int len, const_exponents deg, M2_arrayint lo, M2_arrayint hi)
Definition freemod.cpp:404
void freemem(void *s)
Definition m2-mem.cpp:103
VALGRIND_MAKE_MEM_DEFINED & result(result)
const mpreal exp(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
Definition mpreal.h:2298
#define newarray_atomic(T, len)
Definition newdelete.hpp:91
M2_arrayint stdvector_to_M2_arrayint(const std::vector< T > &v)
Definition util.hpp:79

References degree(), degree_in_box(), freemem(), newarray_atomic, R, rank(), result(), and stdvector_to_M2_arrayint().

Referenced by rawFreeModuleSelectByDegrees().