FflasFfpack
FFPACK::Protected Namespace Reference

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.
 
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 >
void RandomKrylovPrecond (const PolRing &PR, std::list< typename PolRing::Element > &completedFactors, const size_t N, typename PolRing::Domain_t::Element_ptr A, const size_t lda, size_t &Nb, typename PolRing::Domain_t::Element_ptr &B, size_t &ldb, typename PolRing::Domain_t::RandIter &g, const size_t degree=__FFLASFFPACK_ARITHPROG_THRESHOLD)
 
template<class PolRing >
std::list< typename PolRing::Element > & ArithProg (const PolRing &PR, std::list< typename PolRing::Element > &frobeniusForm, const size_t N, typename PolRing::Domain_t::Element_ptr A, const size_t lda, const size_t degree)
 
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)
 

Function Documentation

◆ LUdivine_construct() [1/2]

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 )

◆ GaussJordan()

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

Gauss-Jordan algorithm computing the Reduced Row echelon form and its transform matrix.

Bibliography
  • Algorithm 2.8 of A. Storjohann Thesis 2000,
  • Algorithm 11 of Jeannerod C-P., Pernet, C. and Storjohann, A. Rank-profile revealing Gaussian elimination and the CUP matrix decomposition , J. of Symbolic Comp., 2013
Parameters
Mrow dimension of A
Ncolumn dimension of A
[in,out]Aan m x n matrix
ldaleading dimension of A
Prow permutation
Qcolumn permutation
LuTagset 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

◆ KellerGehrig()

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 )

◆ KGFast()

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 )

◆ KGFast_generalized()

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 )

◆ fgemv_kgf()

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 )

◆ LUKrylov()

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 )

◆ Danilevski()

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 )

◆ RandomKrylovPrecond()

template<class PolRing >
void RandomKrylovPrecond ( const PolRing & PR,
std::list< typename PolRing::Element > & completedFactors,
const size_t N,
typename PolRing::Domain_t::Element_ptr A,
const size_t lda,
size_t & Nb,
typename PolRing::Domain_t::Element_ptr & B,
size_t & ldb,
typename PolRing::Domain_t::RandIter & g,
const size_t degree = __FFLASFFPACK_ARITHPROG_THRESHOLD )
inline
Todo
swap to save space ??
Todo
Todo
don't assing K2 c*noc x N but only mas (c,noc) x N and store each one after the other
Todo
swap to save space ??
Todo
Todo
don't assing K2 c*noc x N but only mas (c,noc) x N and store each one after the other

◆ ArithProg()

template<class PolRing >
std::list< typename PolRing::Element > & ArithProg ( const PolRing & PR,
std::list< typename PolRing::Element > & frobeniusForm,
const size_t N,
typename PolRing::Domain_t::Element_ptr A,
const size_t lda,
const size_t degree )
inline

◆ LUKrylov_KGFast()

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 )

◆ MatVecMinPoly()

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

◆ Hybrid_KGF_LUK_MinPoly()

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 )

◆ updateD()

template<class Field >
size_t updateD ( const Field & F,
size_t * d,
size_t k,
std::vector< std::vector< typename Field::Element > > & minpt )

◆ newD()

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 )

◆ CompressRows()

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

◆ CompressRowsQK()

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

◆ DeCompressRows()

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

◆ DeCompressRowsQK()

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

◆ CompressRowsQA()

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

◆ DeCompressRowsQA()

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

◆ LUdivine_construct() [2/2]

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 )