|
Macaulay2 Engine
|
Abstract base class for mutable matrices over an arbitrary engine Ring, the in-place counterpart of the immutable Matrix. More...
#include <mat.hpp>
Public Member Functions | |
| virtual | ~MutableMatrix () |
| virtual const Ring * | get_ring () const =0 |
| virtual size_t | n_rows () const =0 |
| virtual size_t | n_cols () const =0 |
| virtual bool | is_dense () const =0 |
| virtual Matrix * | to_matrix () const =0 |
| void | text_out (buffer &o) const |
| virtual MutableMatrix * | copy (bool prefer_dense) const =0 |
| bool | set_values (M2_arrayint rows, M2_arrayint cols, engine_RawRingElementArray values) |
| template<typename MatType> | |
| MutableMat< MatType > * | cast_to_MutableMat () |
| template<typename MatType> | |
| const MutableMat< MatType > * | cast_to_MutableMat () const |
| template<typename MatT> | |
| MatT * | coerce () |
| template<typename MatT> | |
| const MatT * | coerce_const () const |
| virtual size_t | lead_row (size_t col) const =0 |
| virtual size_t | lead_row (size_t col, ring_elem &result) const =0 |
| virtual bool | get_entry (size_t r, size_t c, ring_elem &result) const =0 |
| virtual bool | set_entry (size_t r, size_t c, const ring_elem a)=0 |
| virtual bool | interchange_rows (size_t i, size_t j)=0 |
| virtual bool | interchange_columns (size_t i, size_t j)=0 |
| virtual bool | scale_row (size_t i, ring_elem r)=0 |
| virtual bool | scale_column (size_t i, ring_elem r)=0 |
| virtual bool | divide_row (size_t i, ring_elem r)=0 |
| virtual bool | divide_column (size_t i, ring_elem r)=0 |
| virtual bool | row_op (size_t i, ring_elem r, size_t j)=0 |
| virtual bool | column_op (size_t i, ring_elem r, size_t j)=0 |
| virtual bool | column2by2 (size_t c1, size_t c2, ring_elem a1, ring_elem a2, ring_elem b1, ring_elem b2)=0 |
| virtual bool | row2by2 (size_t r1, size_t r2, ring_elem a1, ring_elem a2, ring_elem b1, ring_elem b2)=0 |
| virtual bool | dot_product (size_t i, size_t j, ring_elem &result) const =0 |
| virtual bool | row_permute (size_t start_row, M2_arrayint perm)=0 |
| virtual bool | column_permute (size_t start_col, M2_arrayint perm)=0 |
| virtual bool | insert_columns (size_t i, size_t n_to_add)=0 |
| virtual bool | insert_rows (size_t i, size_t n_to_add)=0 |
| virtual bool | delete_columns (size_t i, size_t j)=0 |
| virtual bool | delete_rows (size_t i, size_t j)=0 |
| virtual void | reduce_by_pivots ()=0 |
| virtual MutableMatrix * | submatrix (M2_arrayint rows, M2_arrayint cols) const =0 |
| virtual MutableMatrix * | submatrix (M2_arrayint cols) const =0 |
| virtual bool | is_zero () const =0 |
| virtual bool | is_equal (const MutableMatrix *B) const =0 |
| virtual MutableMatrix * | add (const MutableMatrix *B) const =0 |
| virtual MutableMatrix * | subtract (const MutableMatrix *B) const =0 |
| virtual MutableMatrix * | mult (const RingElement *f) const =0 |
| virtual MutableMatrix * | negate () const =0 |
| virtual MutableMatrix * | transpose () const =0 |
| virtual M2_arrayintOrNull | LU (MutableMatrix *L, MutableMatrix *U) const =0 |
| virtual M2_arrayintOrNull | LUincremental (std::vector< size_t > &P, const MutableMatrix *v, int m)=0 |
| virtual void | triangularSolve (MutableMatrix *x, int m, int strategy)=0 |
| virtual bool | eigenvalues (MutableMatrix *eigenvals, bool is_symm_or_hermitian) const =0 |
| virtual bool | eigenvectors (MutableMatrix *eigenvals, MutableMatrix *eigenvecs, bool is_symm_or_hermitian) const =0 |
| virtual bool | SVD (MutableMatrix *Sigma, MutableMatrix *U, MutableMatrix *Vt, bool use_divide_and_conquer) const =0 |
| virtual bool | least_squares (const MutableMatrix *b, MutableMatrix *x, bool assume_full_rank) const =0 |
| virtual bool | QR (MutableMatrix *Q, MutableMatrix *R, bool return_QR) const =0 |
| virtual engine_RawArrayIntPairOrNull | LQUPFactorizationInPlace (bool transpose) |
| LU decomposition routines /////. | |
| virtual size_t | rank () const =0 |
| Fast linear algebra routines (well, fast for some rings). | |
| virtual const RingElement * | determinant () const =0 |
| virtual MutableMatrix * | invert () const =0 |
| virtual MutableMatrix * | rowReducedEchelonForm () const =0 |
| virtual M2_arrayintOrNull | rankProfile (bool row_profile) const =0 |
| virtual MutableMatrix * | nullSpace () const =0 |
| virtual MutableMatrix * | solveLinear (const MutableMatrix *B) const =0 |
| virtual MutableMatrix * | solveInvertible (const MutableMatrix *B) const =0 |
| virtual void | addMultipleTo (const MutableMatrix *A, const MutableMatrix *B)=0 |
| virtual void | subtractMultipleTo (const MutableMatrix *A, const MutableMatrix *B)=0 |
| virtual MutableMatrix * | mult (const MutableMatrix *B) const =0 |
| virtual void | clean (gmp_RR epsilon)=0 |
| virtual gmp_RRorNull | norm () const =0 |
| virtual M2SLEvaluator * | createSLEvaluator (M2SLProgram *P, M2_arrayint constsPos, M2_arrayint varsPos) const =0 |
| virtual M2SLEvaluator * | createCompiledSLEvaluator (M2_string libName, int nInputs, int nOutputs) const =0 |
| Public Member Functions inherited from MutableEngineObject | |
| MutableEngineObject () | |
| virtual | ~MutableEngineObject () |
| unsigned int | hash () const |
| Public Member Functions inherited from our_gc_cleanup | |
| our_gc_cleanup () | |
| virtual | ~our_gc_cleanup () |
Static Public Member Functions | |
| static MutableMatrix * | zero_matrix (const Ring *R, size_t nrows, size_t ncols, bool dense) |
| static MutableMatrix * | identity (const Ring *R, size_t nrows, bool dense) |
| static MutableMatrix * | from_matrix (const Matrix *N, bool is_dense) |
| Static Public Member Functions inherited from our_new_delete | |
| static void * | operator new (size_t size) |
| static void * | operator new[] (size_t size) |
| static void | operator delete (void *obj) |
| static void | operator delete[] (void *obj) |
| static void * | operator new (size_t size, void *existing_memory) |
| static void * | operator new[] (size_t size, void *existing_memory) |
| static void | operator delete (void *obj, void *existing_memory) |
| static void | operator delete[] (void *obj, void *existing_memory) |
Protected Member Functions | |
| MutableMatrix () | |
Abstract base class for mutable matrices over an arbitrary engine Ring, the in-place counterpart of the immutable Matrix.
Defines the pure-virtual operation surface (get_entry / set_entry / row_op / column_op / addRow / solve / ...) that engine code reduces against, and lets MutableMat<DMat<R>> and MutableMat<SMat<R>> (the dense / sparse templated subclasses) pick storage. Inherits MutableEngineObject so mutation does not invalidate the identity-based hash. Used as the run-time type behind the front end's MutableMatrix interface for ring rings other than the numerical ones handled by LAPACK.