|
| MutableMatrix * | IM2_MutableMatrix_identity (const Ring *R, int nrows, M2_bool prefer_dense) |
| MutableMatrix * | IM2_MutableMatrix_make (const Ring *R, int nrows, int ncols, M2_bool prefer_dense) |
| MutableMatrix * | IM2_MutableMatrix_from_matrix (const Matrix *M, M2_bool prefer_dense) |
| const Matrix * | IM2_MutableMatrix_to_matrix (const MutableMatrix *M) |
| M2_string | IM2_MutableMatrix_to_string (const MutableMatrix *M) |
| unsigned int | rawMutableMatrixHash (const MutableMatrix *M) |
| int | IM2_MutableMatrix_n_rows (const MutableMatrix *M) |
| int | IM2_MutableMatrix_n_cols (const MutableMatrix *M) |
| void | rawMutableMatrixFillRandomDensity (MutableMatrix *M, double density, int special_type) |
| void | rawMutableMatrixFillRandom (MutableMatrix *M, long nelems) |
| MutableMatrix * | rawMutableMatrixPromote (const Ring *R, const MutableMatrix *f) |
| MutableMatrix * | rawMutableMatrixLift (int *success_return, const Ring *R, const MutableMatrix *f) |
| const RingElement * | IM2_MutableMatrix_get_entry (const MutableMatrix *M, int r, int c) |
| engine_RawRingElementArrayArrayOrNull | IM2_MutableMatrix_get_entries (const MutableMatrix *M) |
| M2_bool | IM2_MutableMatrix_set_entry (MutableMatrix *M, int r, int c, const RingElement *a) |
| M2_bool | IM2_MutableMatrix_row_swap (MutableMatrix *M, int i, int j) |
| M2_bool | IM2_MutableMatrix_column_swap (MutableMatrix *M, int i, int j) |
| M2_bool | IM2_MutableMatrix_row_operation (MutableMatrix *M, int i, const RingElement *r, int j, M2_bool opposite_mult) |
| M2_bool | IM2_MutableMatrix_column_operation (MutableMatrix *M, int i, const RingElement *r, int j, M2_bool opposite_mult) |
| M2_bool | IM2_MutableMatrix_row_scale (MutableMatrix *M, const RingElement *r, int i, M2_bool opposite_mult) |
| M2_bool | IM2_MutableMatrix_column_scale (MutableMatrix *M, const RingElement *r, int i, M2_bool opposite_mult) |
| M2_bool | IM2_MutableMatrix_insert_columns (MutableMatrix *M, int i, int n_to_add) |
| M2_bool | IM2_MutableMatrix_insert_rows (MutableMatrix *M, int i, int n_to_add) |
| M2_bool | IM2_MutableMatrix_delete_columns (MutableMatrix *M, int i, int j) |
| M2_bool | IM2_MutableMatrix_delete_rows (MutableMatrix *M, int i, int j) |
| 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) |
| 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) |
| M2_bool | IM2_MutableMatrix_sort_columns (MutableMatrix *M, int lo, int hi) |
| M2_bool | IM2_MutableMatrix_row_permute (MutableMatrix *M, int start, M2_arrayint perm) |
| M2_bool | IM2_MutableMatrix_column_permute (MutableMatrix *M, int start, M2_arrayint perm) |
| const RingElement * | IM2_Matrix_dot_product (const MutableMatrix *M, int c1, int c2) |
| M2_bool | rawMutableMatrixIsDense (const MutableMatrix *M) |
| M2_bool | IM2_MutableMatrix_is_zero (const MutableMatrix *M) |
| M2_bool | IM2_MutableMatrix_is_equal (const MutableMatrix *M, const MutableMatrix *N) |
| MutableMatrix * | IM2_MutableMatrix_copy (MutableMatrix *M, M2_bool prefer_dense) |
| M2_bool | IM2_MutableMatrix_set_values (MutableMatrix *M, M2_arrayint rows, M2_arrayint cols, engine_RawRingElementArray values) |
| MutableMatrix * | IM2_MutableMatrix_submatrix (const MutableMatrix *M, M2_arrayint rows, M2_arrayint cols) |
| MutableMatrix * | IM2_MutableMatrix_submatrix1 (const MutableMatrix *M, M2_arrayint cols) |
| M2_bool | IM2_MutableMatrix_reduce_by_pivots (MutableMatrix *M) |
| MutableMatrix * | rawMutableMatrixTranspose (MutableMatrix *A) |
| M2_arrayintOrNull | IM2_FF_LU (MutableMatrix *M) |
| M2_bool | rawLLL (MutableMatrix *M, MutableMatrix *U, gmp_QQ threshold, int strategy) |
| M2_bool | IM2_SmithNormalForm (MutableMatrix *M) |
| M2_bool | IM2_HermiteNormalForm (MutableMatrix *M) |
| M2_arrayintOrNull | rawLU (const MutableMatrix *A, MutableMatrix *L, MutableMatrix *U) |
| M2_arrayintOrNull | rawLUincremental (M2_arrayintOrNull P, MutableMatrix *LU, const MutableMatrix *v, int m) |
| void | rawTriangularSolve (MutableMatrix *Lv, MutableMatrix *x, int m, int strategy) |
| M2_bool | rawEigenvalues (MutableMatrix *A, MutableMatrix *eigenvalues, M2_bool isHermitian) |
| M2_bool | rawEigenvectors (MutableMatrix *A, MutableMatrix *eigenvalues, MutableMatrix *eigenvectors, M2_bool isHermitian) |
| M2_bool | rawSVD (MutableMatrix *A, MutableMatrix *Sigma, MutableMatrix *U, MutableMatrix *VT, M2_bool use_divide_and_conquer) |
| M2_bool | rawLeastSquares (MutableMatrix *A, MutableMatrix *b, MutableMatrix *x, M2_bool assume_full_rank) |
| M2_bool | rawQR (const MutableMatrix *A, MutableMatrix *Q, MutableMatrix *R, M2_bool return_QR) |
| long | rawLinAlgRank (MutableMatrix *M) |
| const RingElement * | rawLinAlgDeterminant (MutableMatrix *A) |
| MutableMatrix * | rawLinAlgInverse (MutableMatrix *A) |
| MutableMatrix * | rawLinAlgRREF (MutableMatrix *A) |
| M2_arrayintOrNull | rawLinAlgRankProfile (MutableMatrix *A, M2_bool row_profile) |
| MutableMatrix * | rawLinAlgNullSpace (MutableMatrix *A) |
| MutableMatrix * | rawLinAlgSolve (const MutableMatrix *A, const MutableMatrix *B, int *success) |
| MutableMatrix * | rawLinAlgSolveInvertible (const MutableMatrix *A, const MutableMatrix *B, int *success) |
| M2_bool | rawLinAlgAddMult (MutableMatrix *C, const MutableMatrix *A, const MutableMatrix *B) |
| M2_bool | rawLinAlgSubMult (MutableMatrix *C, const MutableMatrix *A, const MutableMatrix *B) |
| MutableMatrix * | rawLinAlgMult (const MutableMatrix *A, const MutableMatrix *B) |
| engine_RawRingElementArrayOrNull | rawLinAlgCharPoly (MutableMatrix *A) |
| engine_RawRingElementArrayOrNull | rawLinAlgMinPoly (MutableMatrix *A) |
| engine_RawArrayIntPairOrNull | rawLQUPFactorization (MutableMatrix *A) |
| const Matrix * | rawMatrixClean (gmp_RR epsilon, const Matrix *M) |
| const RingElement * | rawRingElementClean (gmp_RR epsilon, const RingElement *f) |
| MutableMatrix * | rawMutableMatrixClean (gmp_RR epsilon, MutableMatrix *M) |
| gmp_RRorNull | rawMatrixNorm (gmp_RR p, const Matrix *M) |
| gmp_RRorNull | rawRingElementNorm (gmp_RR p, const RingElement *f) |
| gmp_RRorNull | rawMutableMatrixNorm (gmp_RR p, const MutableMatrix *M) |
Engine-boundary C API for the engine's in-place MutableMatrix, including dense linear algebra.
- Note
- AI-generated documentation. Verify against the source before relying on it.
Declares the extern "C" entry points the M2 interpreter routes to the engine's mutable matrix type. Construction (IM2_MutableMatrix_make, IM2_MutableMatrix_identity, IM2_MutableMatrix_from_matrix, with prefer_dense choosing dense vs. sparse storage) is paired with the standard read-only queries (IM2_MutableMatrix_to_matrix snapshots back into an immutable Matrix, plus dimension, entry, ring, and string accessors); in-place mutation covers single-entry set, row / column swap, scale, and elementary row / column operations. The dense linear-algebra surface lives on the rawLinAlg* family: rawLinAlgRank, rawLinAlgDeterminant, rawLinAlgInverse, rawLinAlgRREF, rawLinAlgRankProfile, rawLinAlgNullSpace, rawLinAlgSolve, rawLinAlgSolveInvertible, rawLinAlgAddMult / _SubMult / _Mult, and rawLinAlgCharPoly / rawLinAlgMinPoly. Separate rawLU / rawLUincremental provide LU under a LAPACK-style shape, rawFFLU is the fraction-free path, rawLLL runs lattice reduction, rawReduceByPivots does pivot-based row elimination, and rawEigenvalues / rawEigenvectors cover the RR / CC spectral path.
Each linear-algebra entry dispatches inside the engine through the templated DMat<R> family to the back end best suited for the coefficient ring — FFLAS-FFPACK for Z/p (small p), FLINT for ZZ/QQ/GF, Eigen3 for RR/CC (per eigen.hpp), MPFI on the interval side, generic otherwise — so the interpreter never picks the algorithm itself. The mutable / immutable boundary is the standard "snapshot" model: an immutable Matrix is copied in, the algorithm rewrites the mutable buffer, and the caller converts back if it wants an immutable result.
- See also
- mutable-matrix.cpp
-
matrix.h
-
engine-includes.hpp
Definition in file mutable-matrix.h.