Macaulay2 Engine
Loading...
Searching...
No Matches
mutablemat-defs.hpp File Reference

MutableMat<Mat> — the templated bridge from DMat / SMat to the abstract MutableMatrix. More...

#include <iostream>
#include "mat.hpp"
#include "matrix-con.hpp"
#include "dmat.hpp"
#include "smat.hpp"
#include "mat-elem-ops.hpp"
#include "mat-arith.hpp"
#include "mat-linalg.hpp"

Go to the source code of this file.

Classes

struct  EigenTypes< RT >
struct  EigenTypes< M2::ARingRR >
 EigenTypes specialisation for double-precision real matrices. More...
struct  EigenTypes< M2::ARingCC >
 EigenTypes specialisation for double-precision complex matrices. More...
struct  EigenTypes< M2::ARingRRR >
 EigenTypes specialisation for arbitrary-precision real (MPFR) matrices. More...
struct  EigenTypes< M2::ARingCCC >
 EigenTypes specialisation for arbitrary-precision complex (MPC) matrices. More...
class  MutableMat< Mat >

Namespaces

namespace  M2

Functions

template<typename MT>
bool isDense (const MT &mat)
template<typename RT>
bool isDense (const DMat< RT > &mat)
template<typename RT>
bool isDense (const SMat< RT > &mat)
template<typename CoeffRing>
MatrixtoMatrix (const Ring *R, const DMat< CoeffRing > &A)
template<typename CoeffRing>
MatrixtoMatrix (const Ring *R, const SMat< CoeffRing > &A)
bool error_column_bound (size_t c, size_t ncols)
bool error_row_bound (size_t r, size_t nrows)

Detailed Description

MutableMat<Mat> — the templated bridge from DMat / SMat to the abstract MutableMatrix.

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

Declares MutableMat<Mat> (a MutableMatrix subclass owning a Mat, where Mat is one of DMat<R> or SMat<R>) along with the supporting helpers used in the templated linear-algebra path: the isDense<MT> predicate (true for DMat, false for SMat), the EigenTypes<RT> traits struct that maps each numeric aring to its eigenvalue / eigenvector / Hermitian-eigenvalue / Hermitian-eigenvector return types (with ARingRR eigenvalues lifting into ARingCC, MPFR-precision rings lifting into their CCC counterpart), and the toMatrix<CoeffRing>(R, DMat) / toMatrix<CoeffRing>(R, SMat) conversion templates that materialise a DMat or SMat back into an immutable engine Matrix* via MatrixConstructor. The wrapper implements every MutableMatrix virtual by forwarding to the wrapped templated implementation, so the outer interface stays uniform while the inner-loop arithmetic stays fully inlined — the same wrap-templated-implementation-in-a-virtual-base pattern aring-glue.hpp's ConcreteRing<R> uses for rings.

The companion mutablemat-imp.hpp carries the heavy template bodies (which would otherwise drag SLP and NAG includes into every consumer); a translation unit that needs only the declarations pulls in this file via the mutablemat.hpp umbrella and leaves the implementation for instantiation sites.

See also
mutablemat.hpp
mutablemat-imp.hpp
mat.hpp

Definition in file mutablemat-defs.hpp.