FflasFfpack
|
Functions | |
template<class Field > | |
size_t | LUdivine_construct (const Field &F, const FFLAS::FFLAS_DIAG Diag, const size_t M, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::Element_ptr X, const size_t ldx, typename Field::Element_ptr u, const size_t incu, size_t *P, bool computeX, const FFPACK_MINPOLY_TAG MinTag=FfpackDense, const size_t kg_mc=0, const size_t kg_mb=0, const size_t kg_j=0) |
template<class Field > | |
size_t | GaussJordan (const Field &F, const size_t M, const size_t N, typename Field::Element_ptr A, const size_t lda, const size_t colbeg, const size_t rowbeg, const size_t colsize, size_t *P, size_t *Q, const FFPACK::FFPACK_LU_TAG LuTag) |
Gauss-Jordan algorithm computing the Reduced Row echelon form and its transform matrix. More... | |
template<class Field , class Polynomial > | |
std::list< Polynomial > & | KellerGehrig (const Field &F, std::list< Polynomial > &charp, const size_t N, typename Field::ConstElement_ptr A, const size_t lda) |
template<class Field , class Polynomial > | |
int | KGFast (const Field &F, std::list< Polynomial > &charp, const size_t N, typename Field::Element_ptr A, const size_t lda, size_t *kg_mc, size_t *kg_mb, size_t *kg_j) |
template<class Field , class Polynomial > | |
std::list< Polynomial > & | KGFast_generalized (const Field &F, std::list< Polynomial > &charp, const size_t N, typename Field::Element_ptr A, const size_t lda) |
template<class Field > | |
void | fgemv_kgf (const Field &F, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr X, const size_t incX, typename Field::Element_ptr Y, const size_t incY, const size_t kg_mc, const size_t kg_mb, const size_t kg_j) |
template<class Field , class Polynomial , class RandIter > | |
std::list< Polynomial > & | LUKrylov (const Field &F, std::list< Polynomial > &charp, const size_t N, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr U, const size_t ldu, RandIter &G) |
template<class Field , class Polynomial > | |
std::list< Polynomial > & | Danilevski (const Field &F, std::list< Polynomial > &charp, const size_t N, typename Field::Element_ptr A, const size_t lda) |
template<class PolRing > | |
std::list< typename PolRing::Element > & | CharpolyArithProg (const PolRing &R, std::list< typename PolRing::Element > &frobeniusForm, const size_t N, typename PolRing::Domain_t::Element_ptr A, const size_t lda, typename PolRing::Domain_t::RandIter &G, const size_t block_size=__FFLASFFPACK_ARITHPROG_THRESHOLD) |
template<class Field , class Polynomial > | |
std::list< Polynomial > & | LUKrylov_KGFast (const Field &F, std::list< Polynomial > &charp, const size_t N, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr X, const size_t ldx) |
template<class Field , class Polynomial > | |
Polynomial & | MatVecMinPoly (const Field &F, Polynomial &minP, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::Element_ptr v, const size_t incv, typename Field::Element_ptr K, const size_t ldk, size_t *P) |
template<class Field , class Polynomial > | |
Polynomial & | Hybrid_KGF_LUK_MinPoly (const Field &F, Polynomial &minP, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::Element_ptr X, const size_t ldx, size_t *P, const FFPACK_MINPOLY_TAG MinTag=FFPACK::FfpackDense, const size_t kg_mc=0, const size_t kg_mb=0, const size_t kg_j=0) |
template<class Field > | |
size_t | updateD (const Field &F, size_t *d, size_t k, std::vector< std::vector< typename Field::Element > > &minpt) |
template<class Field > | |
size_t | newD (const Field &F, size_t *d, bool &KeepOn, const size_t l, const size_t N, typename Field::Element_ptr X, const size_t *Q, std::vector< std::vector< typename Field::Element > > &minpt) |
template<class Field > | |
void | CompressRows (Field &F, const size_t M, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr tmp, const size_t ldtmp, const size_t *d, const size_t nb_blocs) |
template<class Field > | |
void | CompressRowsQK (Field &F, const size_t M, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr tmp, const size_t ldtmp, const size_t *d, const size_t deg, const size_t nb_blocs) |
template<class Field > | |
void | DeCompressRows (Field &F, const size_t M, const size_t N, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr tmp, const size_t ldtmp, const size_t *d, const size_t nb_blocs) |
template<class Field > | |
void | DeCompressRowsQK (Field &F, const size_t M, const size_t N, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr tmp, const size_t ldtmp, const size_t *d, const size_t deg, const size_t nb_blocs) |
template<class Field > | |
void | CompressRowsQA (Field &F, const size_t M, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr tmp, const size_t ldtmp, const size_t *d, const size_t nb_blocs) |
template<class Field > | |
void | DeCompressRowsQA (Field &F, const size_t M, const size_t N, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr tmp, const size_t ldtmp, const size_t *d, const size_t nb_blocs) |
template<class Field > | |
size_t | LUdivine_construct (const Field &F, const FFLAS::FFLAS_DIAG Diag, const size_t M, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::Element_ptr X, const size_t ldx, typename Field::Element_ptr u, const size_t incu, size_t *P, bool computeX, const FFPACK::FFPACK_MINPOLY_TAG MinTag, const size_t kg_mc, const size_t kg_mb, const size_t kg_j) |
size_t FFPACK::Protected::LUdivine_construct | ( | const Field & | F, |
const FFLAS::FFLAS_DIAG | Diag, | ||
const size_t | M, | ||
const size_t | N, | ||
typename Field::ConstElement_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | X, | ||
const size_t | ldx, | ||
typename Field::Element_ptr | u, | ||
const size_t | incu, | ||
size_t * | P, | ||
bool | computeX, | ||
const FFPACK_MINPOLY_TAG | MinTag = FfpackDense , |
||
const size_t | kg_mc = 0 , |
||
const size_t | kg_mb = 0 , |
||
const size_t | kg_j = 0 |
||
) |
|
inline |
Gauss-Jordan algorithm computing the Reduced Row echelon form and its transform matrix.
Rank-profile
revealing Gaussian elimination and the CUP matrix decomposition , J. of Symbolic Comp., 2013 M | row dimension of A | |
N | column dimension of A | |
[in,out] | A | an m x n matrix |
lda | leading dimension of A | |
P | row permutation | |
Q | column permutation | |
LuTag | set the base case to a Tile (FfpackGaussJordanTile) or Slab (FfpackGaussJordanSlab) recursive RedEchelon |
| I | A11 | A12 | | |-—|--—|--—|-—| | |I | *| A22 | | | |0 | 0| A22 | | |-—|--—|--—|-—| | | 0 | A32 | | |-—|--—|--—|-—|
where the transformation matrix is stored at the pivot column position
std::list< Polynomial > & KellerGehrig | ( | const Field & | F, |
std::list< Polynomial > & | charp, | ||
const size_t | N, | ||
typename Field::ConstElement_ptr | A, | ||
const size_t | lda | ||
) |
int KGFast | ( | const Field & | F, |
std::list< Polynomial > & | charp, | ||
const size_t | N, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda, | ||
size_t * | kg_mc, | ||
size_t * | kg_mb, | ||
size_t * | kg_j | ||
) |
std::list< Polynomial > & KGFast_generalized | ( | const Field & | F, |
std::list< Polynomial > & | charp, | ||
const size_t | N, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda | ||
) |
void fgemv_kgf | ( | const Field & | F, |
const size_t | N, | ||
typename Field::ConstElement_ptr | A, | ||
const size_t | lda, | ||
typename Field::ConstElement_ptr | X, | ||
const size_t | incX, | ||
typename Field::Element_ptr | Y, | ||
const size_t | incY, | ||
const size_t | kg_mc, | ||
const size_t | kg_mb, | ||
const size_t | kg_j | ||
) |
std::list< Polynomial > & LUKrylov | ( | const Field & | F, |
std::list< Polynomial > & | charp, | ||
const size_t | N, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | U, | ||
const size_t | ldu, | ||
RandIter & | G | ||
) |
std::list<Polynomial>& FFPACK::Protected::Danilevski | ( | const Field & | F, |
std::list< Polynomial > & | charp, | ||
const size_t | N, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda | ||
) |
std::list< typename PolRing::Element > & CharpolyArithProg | ( | const PolRing & | R, |
std::list< typename PolRing::Element > & | frobeniusForm, | ||
const size_t | N, | ||
typename PolRing::Domain_t::Element_ptr | A, | ||
const size_t | lda, | ||
typename PolRing::Domain_t::RandIter & | G, | ||
const size_t | block_size = __FFLASFFPACK_ARITHPROG_THRESHOLD |
||
) |
std::list< Polynomial > & LUKrylov_KGFast | ( | const Field & | F, |
std::list< Polynomial > & | charp, | ||
const size_t | N, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | X, | ||
const size_t | ldx | ||
) |
|
inline |
Polynomial & Hybrid_KGF_LUK_MinPoly | ( | const Field & | F, |
Polynomial & | minP, | ||
const size_t | N, | ||
typename Field::ConstElement_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | X, | ||
const size_t | ldx, | ||
size_t * | P, | ||
const FFPACK_MINPOLY_TAG | MinTag = FFPACK::FfpackDense , |
||
const size_t | kg_mc = 0 , |
||
const size_t | kg_mb = 0 , |
||
const size_t | kg_j = 0 |
||
) |
size_t FFPACK::Protected::updateD | ( | const Field & | F, |
size_t * | d, | ||
size_t | k, | ||
std::vector< std::vector< typename Field::Element > > & | minpt | ||
) |
size_t FFPACK::Protected::newD | ( | const Field & | F, |
size_t * | d, | ||
bool & | KeepOn, | ||
const size_t | l, | ||
const size_t | N, | ||
typename Field::Element_ptr | X, | ||
const size_t * | Q, | ||
std::vector< std::vector< typename Field::Element > > & | minpt | ||
) |
void CompressRows | ( | Field & | F, |
const size_t | M, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | tmp, | ||
const size_t | ldtmp, | ||
const size_t * | d, | ||
const size_t | nb_blocs | ||
) |
void CompressRowsQK | ( | Field & | F, |
const size_t | M, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | tmp, | ||
const size_t | ldtmp, | ||
const size_t * | d, | ||
const size_t | deg, | ||
const size_t | nb_blocs | ||
) |
void DeCompressRows | ( | Field & | F, |
const size_t | M, | ||
const size_t | N, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | tmp, | ||
const size_t | ldtmp, | ||
const size_t * | d, | ||
const size_t | nb_blocs | ||
) |
void DeCompressRowsQK | ( | Field & | F, |
const size_t | M, | ||
const size_t | N, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | tmp, | ||
const size_t | ldtmp, | ||
const size_t * | d, | ||
const size_t | deg, | ||
const size_t | nb_blocs | ||
) |
void CompressRowsQA | ( | Field & | F, |
const size_t | M, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | tmp, | ||
const size_t | ldtmp, | ||
const size_t * | d, | ||
const size_t | nb_blocs | ||
) |
void DeCompressRowsQA | ( | Field & | F, |
const size_t | M, | ||
const size_t | N, | ||
typename Field::Element_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | tmp, | ||
const size_t | ldtmp, | ||
const size_t * | d, | ||
const size_t | nb_blocs | ||
) |
size_t FFPACK::Protected::LUdivine_construct | ( | const Field & | F, |
const FFLAS::FFLAS_DIAG | Diag, | ||
const size_t | M, | ||
const size_t | N, | ||
typename Field::ConstElement_ptr | A, | ||
const size_t | lda, | ||
typename Field::Element_ptr | X, | ||
const size_t | ldx, | ||
typename Field::Element_ptr | u, | ||
const size_t | incu, | ||
size_t * | P, | ||
bool | computeX, | ||
const FFPACK::FFPACK_MINPOLY_TAG | MinTag, | ||
const size_t | kg_mc, | ||
const size_t | kg_mb, | ||
const size_t | kg_j | ||
) |