|
Macaulay2 Engine
|
Umbrella header for DMat<R> LU — declares DMatLinAlg<RingType> and pulls in every back-end variant. More...
#include "dmat.hpp"#include "mat-elem-ops.hpp"#include "mat-util.hpp"#include "dmat-lu-inplace.hpp"#include "dmat-lu-zzp-ffpack.hpp"#include "dmat-lu-zzp-flint.hpp"#include "dmat-lu-qq.hpp"Go to the source code of this file.
Classes | |
| class | DMatLinAlg< RingType > |
Typedefs | |
| typedef DMat< M2::ARingGFFlintBig > | DMatGFFlintBig |
Functions | |
| template<class Mat> | |
| void | permuteRows (const Mat &B, const std::vector< size_t > permutation, Mat &result) |
| template<class Mat> | |
| void | solveLowerTriangular (const Mat &LU, const Mat &B, Mat &X) |
| template<> | |
| void | solveLowerTriangular< DMatGFFlintBig > (const DMatGFFlintBig &LU, const DMatGFFlintBig &B, DMatGFFlintBig &X) |
| template<> | |
| void | solveLowerTriangular< DMatGFFlint > (const DMatGFFlint &LU, const DMatGFFlint &B, DMatGFFlint &X) |
| template<class Mat> | |
| void | solveUpperTriangular (const Mat &LU, const Mat &B, Mat &X) |
| template<> | |
| void | solveUpperTriangular< DMatGFFlint > (const DMatGFFlint &LU, const DMatGFFlint &B, DMatGFFlint &X) |
| template<> | |
| void | solveUpperTriangular< DMatGFFlintBig > (const DMatGFFlintBig &LU, const DMatGFFlintBig &B, DMatGFFlintBig &X) |
Umbrella header for DMat<R> LU — declares DMatLinAlg<RingType> and pulls in every back-end variant.
Declares the dispatch template DMatLinAlg<RingType> and #includes the per-ring LU specialisations: dmat-lu-inplace.hpp (the DMatLUinPlace<RingType> worker that the generic body holds as its mLUObject), dmat-lu-zzp-ffpack.hpp (Z/p via FFLAS-FFPACK), dmat-lu-zzp-flint.hpp (Z/p via FLINT), and dmat-lu-qq.hpp (rational LU). Each RingType with a specialisation overrides the template to route into a back-end-native routine; rings without one fall through to the generic in-place implementation laid out in this file.
The public API of DMatLinAlg<RingType> is solve(B, X), solveInvertible(B, X), inverse(X), determinant(result), matrixPLU(P, L, U) (P as std::vector<size_t>, with L and U returned as separate matrices — setUpperLower splits the internal packed LU into them), kernel(X), rank(), and columnRankProfile(profile). Consumers include the dispatching mat-linalg.hpp family, the SLP machinery (SLP-imp.hpp), and the resolution boundary code in schreyer-resolution/res-f4-m2-interface.cpp. The file also defines free templates permuteRows, solveLowerTriangular, and solveUpperTriangular (with FLINT fq_zech / fq_nmod specialisations for the GF variants).
Definition in file dmat-lu.hpp.