1#ifndef _mutable_matrix_h_
2# define _mutable_matrix_h_
51# if defined(__cplusplus)
74# if defined(__cplusplus)
272 engine_RawRingElementArray values);
415 M2_bool use_divide_and_conquer);
602# if defined(__cplusplus)
Abstract base class for mutable matrices over an arbitrary engine Ring, the in-place counterpart of t...
Front-end-visible "ring element" value: an engine ring_elem paired with the Ring* that gives it meani...
Engine-wide include prelude — a single point of truth for portability shims.
M2_arrayint M2_arrayintOrNull
engine_RawRingElementArray engine_RawRingElementArrayOrNull
engine_RawArrayIntPair engine_RawArrayIntPairOrNull
engine_RawRingElementArrayArray engine_RawRingElementArrayArrayOrNull
M2_bool rawMutableMatrixIsDense(const MutableMatrix *M)
MutableMatrix * IM2_MutableMatrix_from_matrix(const Matrix *M, M2_bool prefer_dense)
const RingElement * IM2_MutableMatrix_get_entry(const MutableMatrix *M, int r, int c)
engine_RawRingElementArrayOrNull rawLinAlgMinPoly(MutableMatrix *A)
M2_bool IM2_MutableMatrix_insert_columns(MutableMatrix *M, int i, int n_to_add)
M2_string IM2_MutableMatrix_to_string(const MutableMatrix *M)
MutableMatrix * rawMutableMatrixClean(gmp_RR epsilon, MutableMatrix *M)
const RingElement * rawRingElementClean(gmp_RR epsilon, const RingElement *f)
M2_bool IM2_MutableMatrix_set_entry(MutableMatrix *M, int r, int c, const RingElement *a)
long rawLinAlgRank(MutableMatrix *M)
M2_bool IM2_MutableMatrix_sort_columns(MutableMatrix *M, int lo, int hi)
M2_bool IM2_MutableMatrix_column_scale(MutableMatrix *M, const RingElement *r, int i, M2_bool opposite_mult)
M2_bool IM2_SmithNormalForm(MutableMatrix *M)
M2_bool IM2_MutableMatrix_column_swap(MutableMatrix *M, int i, int j)
M2_bool IM2_MutableMatrix_delete_columns(MutableMatrix *M, int i, int j)
MutableMatrix * IM2_MutableMatrix_identity(const Ring *R, int nrows, M2_bool prefer_dense)
M2_bool rawLLL(MutableMatrix *M, MutableMatrix *U, gmp_QQ threshold, int strategy)
M2_bool IM2_MutableMatrix_insert_rows(MutableMatrix *M, int i, int n_to_add)
M2_bool IM2_MutableMatrix_row_operation(MutableMatrix *M, int i, const RingElement *r, int j, M2_bool opposite_mult)
M2_bool IM2_MutableMatrix_is_zero(const MutableMatrix *M)
MutableMatrix * rawMutableMatrixLift(int *success_return, const Ring *R, const MutableMatrix *f)
M2_arrayintOrNull rawLUincremental(M2_arrayintOrNull P, MutableMatrix *LU, const MutableMatrix *v, int m)
const Matrix * IM2_MutableMatrix_to_matrix(const MutableMatrix *M)
const Matrix * rawMatrixClean(gmp_RR epsilon, const Matrix *M)
M2_bool rawLinAlgSubMult(MutableMatrix *C, const MutableMatrix *A, const MutableMatrix *B)
void rawTriangularSolve(MutableMatrix *Lv, MutableMatrix *x, int m, int strategy)
M2_bool rawEigenvectors(MutableMatrix *A, MutableMatrix *eigenvalues, MutableMatrix *eigenvectors, M2_bool isHermitian)
M2_bool rawQR(const MutableMatrix *A, MutableMatrix *Q, MutableMatrix *R, M2_bool return_QR)
MutableMatrix * rawLinAlgNullSpace(MutableMatrix *A)
engine_RawRingElementArrayOrNull rawLinAlgCharPoly(MutableMatrix *A)
MutableMatrix * rawMutableMatrixPromote(const Ring *R, const MutableMatrix *f)
MutableMatrix * rawMutableMatrixTranspose(MutableMatrix *A)
M2_bool IM2_HermiteNormalForm(MutableMatrix *M)
M2_bool rawLeastSquares(MutableMatrix *A, MutableMatrix *b, MutableMatrix *x, M2_bool assume_full_rank)
engine_RawArrayIntPairOrNull rawLQUPFactorization(MutableMatrix *A)
MutableMatrix * rawLinAlgMult(const MutableMatrix *A, const MutableMatrix *B)
gmp_RRorNull rawMutableMatrixNorm(gmp_RR p, const MutableMatrix *M)
MutableMatrix * IM2_MutableMatrix_submatrix(const MutableMatrix *M, M2_arrayint rows, M2_arrayint cols)
M2_bool IM2_MutableMatrix_column_permute(MutableMatrix *M, int start, M2_arrayint perm)
int IM2_MutableMatrix_n_rows(const MutableMatrix *M)
MutableMatrix * IM2_MutableMatrix_copy(MutableMatrix *M, M2_bool prefer_dense)
gmp_RRorNull rawMatrixNorm(gmp_RR p, const Matrix *M)
M2_bool IM2_MutableMatrix_reduce_by_pivots(MutableMatrix *M)
M2_bool IM2_MutableMatrix_row_scale(MutableMatrix *M, const RingElement *r, int i, M2_bool opposite_mult)
M2_bool IM2_MutableMatrix_set_values(MutableMatrix *M, M2_arrayint rows, M2_arrayint cols, engine_RawRingElementArray values)
M2_bool rawLinAlgAddMult(MutableMatrix *C, const MutableMatrix *A, const MutableMatrix *B)
MutableMatrix * rawLinAlgInverse(MutableMatrix *A)
const RingElement * rawLinAlgDeterminant(MutableMatrix *A)
M2_bool IM2_MutableMatrix_row_2by2(MutableMatrix *M, int r1, int r2, const RingElement *a1, const RingElement *a2, const RingElement *b1, const RingElement *b2, M2_bool opposite_mult)
MutableMatrix * IM2_MutableMatrix_submatrix1(const MutableMatrix *M, M2_arrayint cols)
MutableMatrix * rawLinAlgSolveInvertible(const MutableMatrix *A, const MutableMatrix *B, int *success)
MutableMatrix * rawLinAlgRREF(MutableMatrix *A)
M2_arrayintOrNull rawLinAlgRankProfile(MutableMatrix *A, M2_bool row_profile)
void rawMutableMatrixFillRandom(MutableMatrix *M, long nelems)
M2_bool IM2_MutableMatrix_is_equal(const MutableMatrix *M, const MutableMatrix *N)
M2_bool rawSVD(MutableMatrix *A, MutableMatrix *Sigma, MutableMatrix *U, MutableMatrix *VT, M2_bool use_divide_and_conquer)
M2_bool IM2_MutableMatrix_column_operation(MutableMatrix *M, int i, const RingElement *r, int j, M2_bool opposite_mult)
M2_bool IM2_MutableMatrix_row_swap(MutableMatrix *M, int i, int j)
M2_bool rawEigenvalues(MutableMatrix *A, MutableMatrix *eigenvalues, M2_bool isHermitian)
engine_RawRingElementArrayArrayOrNull IM2_MutableMatrix_get_entries(const MutableMatrix *M)
unsigned int rawMutableMatrixHash(const MutableMatrix *M)
M2_arrayintOrNull rawLU(const MutableMatrix *A, MutableMatrix *L, MutableMatrix *U)
M2_bool IM2_MutableMatrix_row_permute(MutableMatrix *M, int start, M2_arrayint perm)
M2_bool IM2_MutableMatrix_column_2by2(MutableMatrix *M, int c1, int c2, const RingElement *a1, const RingElement *a2, const RingElement *b1, const RingElement *b2, M2_bool opposite_mult)
void rawMutableMatrixFillRandomDensity(MutableMatrix *M, double density, int special_type)
M2_arrayintOrNull IM2_FF_LU(MutableMatrix *M)
gmp_RRorNull rawRingElementNorm(gmp_RR p, const RingElement *f)
int IM2_MutableMatrix_n_cols(const MutableMatrix *M)
M2_bool IM2_MutableMatrix_delete_rows(MutableMatrix *M, int i, int j)
MutableMatrix * IM2_MutableMatrix_make(const Ring *R, int nrows, int ncols, M2_bool prefer_dense)
const RingElement * IM2_Matrix_dot_product(const MutableMatrix *M, int c1, int c2)
MutableMatrix * rawLinAlgSolve(const MutableMatrix *A, const MutableMatrix *B, int *success)