|
Macaulay2 Engine
|
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> | |
| Matrix * | toMatrix (const Ring *R, const DMat< CoeffRing > &A) |
| template<typename CoeffRing> | |
| Matrix * | toMatrix (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) |
MutableMat<Mat> — the templated bridge from DMat / SMat to the abstract MutableMatrix.
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.
Definition in file mutablemat-defs.hpp.