Macaulay2 Engine
Loading...
Searching...
No Matches
dmat-lu.hpp File Reference

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::ARingGFFlintBigDMatGFFlintBig

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)

Detailed Description

Umbrella header for DMat<R> LU — declares DMatLinAlg<RingType> and pulls in every back-end variant.

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

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).

See also
dmat.hpp
mat-linalg.hpp
mat-elem-ops.hpp

Definition in file dmat-lu.hpp.