Macaulay2 Engine
Loading...
Searching...
No Matches
MutableMatrix Class Referenceabstract

Abstract base class for mutable matrices over an arbitrary engine Ring, the in-place counterpart of the immutable Matrix. More...

#include <mat.hpp>

Inheritance diagram for MutableMatrix:
MutableEngineObject our_gc_cleanup our_new_delete MutableMat< Mat >

Public Member Functions

virtual ~MutableMatrix ()
virtual const Ringget_ring () const =0
virtual size_t n_rows () const =0
virtual size_t n_cols () const =0
virtual bool is_dense () const =0
virtual Matrixto_matrix () const =0
void text_out (buffer &o) const
virtual MutableMatrixcopy (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 MutableMatrixsubmatrix (M2_arrayint rows, M2_arrayint cols) const =0
virtual MutableMatrixsubmatrix (M2_arrayint cols) const =0
virtual bool is_zero () const =0
virtual bool is_equal (const MutableMatrix *B) const =0
virtual MutableMatrixadd (const MutableMatrix *B) const =0
virtual MutableMatrixsubtract (const MutableMatrix *B) const =0
virtual MutableMatrixmult (const RingElement *f) const =0
virtual MutableMatrixnegate () const =0
virtual MutableMatrixtranspose () 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 RingElementdeterminant () const =0
virtual MutableMatrixinvert () const =0
virtual MutableMatrixrowReducedEchelonForm () const =0
virtual M2_arrayintOrNull rankProfile (bool row_profile) const =0
virtual MutableMatrixnullSpace () const =0
virtual MutableMatrixsolveLinear (const MutableMatrix *B) const =0
virtual MutableMatrixsolveInvertible (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 MutableMatrixmult (const MutableMatrix *B) const =0
virtual void clean (gmp_RR epsilon)=0
virtual gmp_RRorNull norm () const =0
virtual M2SLEvaluatorcreateSLEvaluator (M2SLProgram *P, M2_arrayint constsPos, M2_arrayint varsPos) const =0
virtual M2SLEvaluatorcreateCompiledSLEvaluator (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 MutableMatrixzero_matrix (const Ring *R, size_t nrows, size_t ncols, bool dense)
static MutableMatrixidentity (const Ring *R, size_t nrows, bool dense)
static MutableMatrixfrom_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 ()

Detailed Description

Abstract base class for mutable matrices over an arbitrary engine Ring, the in-place counterpart of the immutable Matrix.

Note
AI-generated documentation. Verify against the source before relying on it.

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.

Definition at line 78 of file mat.hpp.


The documentation for this class was generated from the following files: