|
FflasFfpack
|
Set of elimination based routines for dense linear algebra. More...
#include "fflas-ffpack/fflas/fflas.h"#include <list>#include <vector>#include <iostream>#include "ffpack_ludivine.inl"#include "ffpack_minpoly.inl"#include "ffpack_charpoly_kglu.inl"#include "ffpack_charpoly_kgfast.inl"#include "ffpack_charpoly_kgfastgeneralized.inl"#include "ffpack_charpoly_danilevski.inl"#include "ffpack_charpoly.inl"#include "ffpack_krylovelim.inl"#include "ffpack_frobenius.inl"#include "ffpack_echelonforms.inl"Namespaces | |
| namespace | FFPACK |
| Finite Field PACK Set of elimination based routines for dense linear algebra. | |
Functions | |
| template<class Field > | |
| void | applyP (const Field &F, const FFLAS::FFLAS_SIDE Side, const FFLAS::FFLAS_TRANSPOSE Trans, const size_t M, const int ibeg, const int iend, typename Field::Element *A, const size_t lda, const size_t *P) |
| Apply a permutation submatrix of P (between ibeg and iend) to a matrix to (iend-ibeg) vectors of size M stored in A (as column for NoTrans and rows for Trans). | |
| template<class Field > | |
| size_t | Rank (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda) |
| Computes the rank of the given matrix using a LQUP factorization. | |
| template<class Field > | |
| bool | IsSingular (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda) |
| Returns true if the given matrix is singular. | |
| template<class Field > | |
| Field::Element | Det (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda) |
| Returns the determinant of the given matrix. | |
| template<class Field > | |
| void | solveLB2 (const Field &F, const FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, const size_t R, typename Field::Element *L, const size_t ldl, const size_t *Q, typename Field::Element *B, const size_t ldb) |
| Solve L X = B in place. | |
| template<class Field > | |
| void | fgetrs (const Field &F, const FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, const size_t R, typename Field::Element *A, const size_t lda, const size_t *P, const size_t *Q, typename Field::Element *B, const size_t ldb, int *info) |
Solve the system or . | |
| template<class Field > | |
| Field::Element * | fgetrs (const Field &F, const FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, const size_t NRHS, const size_t R, typename Field::Element *A, const size_t lda, const size_t *P, const size_t *Q, typename Field::Element *X, const size_t ldx, const typename Field::Element *B, const size_t ldb, int *info) |
| Solve the system A X = B or X A = B. | |
| template<class Field > | |
| size_t | fgesv (const Field &F, const FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, int *info) |
| Square system solver. | |
| template<class Field > | |
| size_t | fgesv (const Field &F, const FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, const size_t NRHS, typename Field::Element *A, const size_t lda, typename Field::Element *X, const size_t ldx, const typename Field::Element *B, const size_t ldb, int *info) |
| Rectangular system solver. | |
| template<class Field > | |
| Field::Element * | Solve (const Field &F, const size_t M, typename Field::Element *A, const size_t lda, typename Field::Element *x, const int incx, const typename Field::Element *b, const int incb) |
| Solve the system Ax=b. | |
| template<class Field > | |
| size_t | NullSpaceBasis (const Field &F, const FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, typename Field::Element *&NS, size_t &ldn, size_t &NSdim) |
| Computes a basis of the Left/Right nullspace of the matrix A. | |
| template<class Field > | |
| size_t | RowRankProfile (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *&rkprofile) |
| Computes the row rank profile of A. | |
| template<class Field > | |
| size_t | ColumnRankProfile (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *&rkprofile) |
| Computes the column rank profile of A. | |
| template<class Field > | |
| size_t | RowRankProfileSubmatrixIndices (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *&rowindices, size_t *&colindices, size_t &R) |
| RowRankProfileSubmatrixIndices. | |
| template<class Field > | |
| size_t | ColRankProfileSubmatrixIndices (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *&rowindices, size_t *&colindices, size_t &R) |
| Computes the indices of the submatrix r*r X of A whose columns correspond to the column rank profile of A. | |
| template<class Field > | |
| size_t | RowRankProfileSubmatrix (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, typename Field::Element *&X, size_t &R) |
| Compute the r*r submatrix X of A, by picking the row rank profile rows of A. | |
| template<class Field > | |
| size_t | ColRankProfileSubmatrix (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, typename Field::Element *&X, size_t &R) |
Compute the submatrix X of A, by picking the row rank profile rows of A. | |
| template<class Field > | |
| Field::Element * | LQUPtoInverseOfFullRankMinor (const Field &F, const size_t rank, typename Field::Element *A_factors, const size_t lda, const size_t *QtPointer, typename Field::Element *X, const size_t ldx) |
| LQUPtoInverseOfFullRankMinor. | |
| template<class Field > | |
| size_t | TURBO (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *P, size_t *Q, const size_t cutoff) |
| template<class Field > | |
| size_t | LUdivine (const Field &F, const FFLAS::FFLAS_DIAG Diag, const FFLAS::FFLAS_TRANSPOSE trans, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *P, size_t *Qt, const FFPACK_LUDIVINE_TAG LuTag=FfpackLQUP, const size_t cutoff=0) |
| Compute the LQUP factorization of the given matrix. | |
| template<class Field > | |
| size_t | LUpdate (const Field &F, const FFLAS::FFLAS_DIAG Diag, const FFLAS::FFLAS_TRANSPOSE trans, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, const size_t R, const size_t K, typename Field::Element *B, const size_t ldb, size_t *P, size_t *Q, const FFPACK::FFPACK_LUDIVINE_TAG LuTag=FFPACK::FfpackLQUP, const size_t cutoff=0) |
| LUpdate. | |
| template<class Field > | |
| size_t | LUdivine_small (const Field &F, const FFLAS::FFLAS_DIAG Diag, const FFLAS::FFLAS_TRANSPOSE trans, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *P, size_t *Q, const FFPACK_LUDIVINE_TAG LuTag=FfpackLQUP) |
| LUdivine small case. | |
| template<class Field > | |
| size_t | LUdivine_gauss (const Field &F, const FFLAS::FFLAS_DIAG Diag, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *P, size_t *Q, const FFPACK_LUDIVINE_TAG LuTag=FfpackLQUP) |
| LUdivine gauss. | |
| template<class Field > | |
| void | ftrtri (const Field &F, const FFLAS::FFLAS_UPLO Uplo, const FFLAS::FFLAS_DIAG Diag, const size_t N, typename Field::Element *A, const size_t lda) |
| Compute the inverse of a triangular matrix. | |
| template<class Field > | |
| void | ftrtrm (const Field &F, const FFLAS::FFLAS_DIAG diag, const size_t N, typename Field::Element *A, const size_t lda) |
| Compute the product UL. | |
| template<class Field > | |
| size_t | ColumnEchelonForm (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *P, size_t *Qt, bool transform=true) |
| Compute the Column Echelon form of the input matrix in-place. | |
| template<class Field > | |
| size_t | RowEchelonForm (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *P, size_t *Qt, const bool transform=false) |
| Compute the Row Echelon form of the input matrix in-place. | |
| template<class Field > | |
| size_t | ReducedColumnEchelonForm (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *P, size_t *Qt, const bool transform=true) |
| Compute the Reduced Column Echelon form of the input matrix in-place. | |
| template<class Field > | |
| size_t | ReducedRowEchelonForm (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *P, size_t *Qt, const bool transform=true) |
| Compute the Reduced Row Echelon form of the input matrix in-place. | |
| template<class Field > | |
| size_t | ReducedRowEchelonForm2 (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, size_t *P, size_t *Qt, const bool transform=true) |
| Variant by the block recursive algorithm. | |
| template<class Field > | |
| size_t | REF (const Field &F, const size_t M, const size_t N, typename Field::Element *A, const size_t lda, const size_t colbeg, const size_t rowbeg, const size_t colsize, size_t *Qt, size_t *P) |
| REF. | |
| template<class Field > | |
| Field::Element * | Invert (const Field &F, const size_t M, typename Field::Element *A, const size_t lda, int &nullity) |
| Invert the given matrix in place or computes its nullity if it is singular. | |
| template<class Field > | |
| Field::Element * | Invert (const Field &F, const size_t M, const typename Field::Element *A, const size_t lda, typename Field::Element *X, const size_t ldx, int &nullity) |
| Invert the given matrix in place or computes its nullity if it is singular. | |
| template<class Field > | |
| Field::Element * | Invert2 (const Field &F, const size_t M, typename Field::Element *A, const size_t lda, typename Field::Element *X, const size_t ldx, int &nullity) |
| Invert the given matrix or computes its nullity if it is singular. | |
| template<class Field , class Polynomial > | |
| std::list< Polynomial > & | CharPoly (const Field &F, std::list< Polynomial > &charp, const size_t N, typename Field::Element *A, const size_t lda, const FFPACK_CHARPOLY_TAG CharpTag=FfpackArithProg) |
| Compute the characteristic polynomial of A using Krylov Method, and LUP factorization of the Krylov matrix. | |
| template<class Field , class Polynomial > | |
| Polynomial & | MinPoly (const Field &F, Polynomial &minP, const size_t N, const typename Field::Element *A, const size_t lda, typename Field::Element *X, const size_t ldx, size_t *P, const FFPACK::FFPACK_MINPOLY_TAG MinTag=FFPACK::FfpackDense, const size_t kg_mc=0, const size_t kg_mb=0, const size_t kg_j=0) |
| Compute the minimal polynomial. | |
| template<class Field > | |
| void | solveLB (const Field &F, const FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, const size_t R, typename Field::Element *L, const size_t ldl, const size_t *Q, typename Field::Element *B, const size_t ldb) |
| Solve L X = B or X L = B in place. | |
| template<class Field , class Polynomial > | |
| std::list< Polynomial > & | CharpolyArithProg (const Field &F, std::list< Polynomial > &frobeniusForm, const size_t N, typename Field::Element *A, const size_t lda, const size_t c) |
Set of elimination based routines for dense linear algebra.
Matrices are supposed over finite prime field of characteristic less than 2^26.
1.8.1.1