31 ERROR(
"freemodule rank must be non-negative");
48 unsigned int eachdeg = D->
n_vars();
51 ERROR(
"rawFreeModule: degree rank 0, but sequence of degrees given");
54 unsigned int rank = degs->len / eachdeg;
55 if (rank * eachdeg != degs->len)
57 ERROR(
"inappropriate number of degrees");
62 for (
unsigned int i = 0; i < rank; i++)
64 D->from_expvector(degs->array + i * eachdeg, deg);
93 for (
int i = 0; i < r; i++)
Append-only GC-backed byte buffer used throughout the engine for text output.
unsigned int hash() const
FreeModule * transpose() const
M2_arrayintOrNull select_by_degrees(M2_arrayintOrNull lo, M2_arrayintOrNull hi) const
FreeModule * tensor(const FreeModule *G) const
const Ring * get_ring() const
const_monomial degree(int i) const
void append(const_monomial d)
FreeModule * exterior(int p) const
FreeModule * symm(int p) const
bool is_equal(const FreeModule *F) const
Matrix * get_induced_order() const
FreeModule * sub_space(int n) const
FreeModule * direct_sum(const FreeModule *G) const
static FreeModule * make_schreyer(const Matrix *m)
void text_out(buffer &o) const
Engine-side free module R^n over a Ring.
virtual FreeModule * make_FreeModule() const
const Monoid * degree_monoid() const
Engine error-reporting primitives: ERROR, INTERNAL_ERROR, error, error_message.
namespace exc — internal C++ exception types and the TRY / CATCH macro pair.
FreeModule — finite-rank free module R^n, the type-level anchor for every Matrix.
const Ring * IM2_FreeModule_ring(const FreeModule *F)
unsigned int rawFreeModuleHash(const FreeModule *F)
M2_bool IM2_FreeModule_is_equal(const FreeModule *F, const FreeModule *G)
const FreeModule * IM2_FreeModule_tensor(const FreeModule *F, const FreeModule *G)
const FreeModule * IM2_FreeModule_symm(int n, const FreeModule *F)
const Matrix * IM2_FreeModule_get_schreyer(const FreeModule *F)
const FreeModule * IM2_FreeModule_exterior(int n, const FreeModule *F)
const FreeModule * IM2_FreeModule_submodule(const FreeModule *F, M2_arrayint selection)
const FreeModule * IM2_FreeModule_sum(const FreeModule *F, const FreeModule *G)
const FreeModule * IM2_FreeModule_dual(const FreeModule *F)
int IM2_FreeModule_rank(const FreeModule *F)
M2_arrayintOrNull rawFreeModuleSelectByDegrees(const FreeModule *F, M2_arrayint lo, M2_arrayint hi)
const FreeModule * IM2_FreeModule_make(const Ring *R, int rank)
const FreeModule * IM2_FreeModule_make_degs(const Ring *R, M2_arrayint degs)
M2_string IM2_FreeModule_to_string(const FreeModule *F)
M2_arrayint IM2_FreeModule_get_degrees(const FreeModule *F)
const FreeModule * IM2_FreeModule_make_schreyer(const Matrix *m)
Engine-boundary C API for constructing and querying FreeModules.
VALGRIND_MAKE_MEM_DEFINED & result(result)
M2_arrayint M2_makearrayint(int n)
M2_arrayint M2_arrayintOrNull
Monoid — variable count, naming, grading, and monomial order of a polynomial ring.
our_new_delete — per-class opt-in routing of new / delete through bdwgc.
Ring — the legacy abstract base class for every coefficient and polynomial ring.