FflasFfpack
Namespaces | Data Structures | Enumerations | Functions
FFPACK Namespace Reference

Set of elimination based routines for dense linear algebra with matrices over finite prime field of characteristic less than 2^26. More...

Namespaces

namespace  Protected

Data Structures

class  CharpolyFailed
class  callLUdivine_small
class  callLUdivine_small< double >
class  callLUdivine_small< float >
class  ModularBalanced< double >
class  ModularBalanced< float >
class  ModularBalanced< int32_t >
class  ModularBalanced< int64_t >
class  Modular< double >
class  Modular< float >
class  Modular< int32_t >
 Specialization of Modular to int32_t element type with efficient dot product. More...
class  Modular< int64_t >
 Specialization of Modular to int64_t element type with efficient dot product. More...
class  ModularRandIter
class  ModularBalancedRandIter
class  NonzeroRandIter
 Random iterator for nonzero random numbers. More...
class  UnparametricField
class  Failure
 A precondtion failed. More...

Enumerations

enum  FFPACK_LUDIVINE_TAG { FfpackLQUP = 1, FfpackSingular = 2 }
enum  FFPACK_CHARPOLY_TAG {
  FfpackLUK = 1, FfpackKG = 2, FfpackHybrid = 3, FfpackKGFast = 4,
  FfpackDanilevski = 5, FfpackArithProg = 6, FfpackKGFastG = 7
}
enum  FFPACK_MINPOLY_TAG { FfpackDense = 1, FfpackKGF = 2 }

Functions

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, const size_t cutoff)
 Updates an existing LU factorisation with more rows.
template<class Polynomial , class Field >
Polynomial & mulpoly (const Field &F, Polynomial &res, const Polynomial &P1, const Polynomial &P2)
template<class Field , class Polynomial >
std::list< Polynomial > & Danilevski (const Field &F, std::list< Polynomial > &charp, const size_t N, typename Field::Element *A, const size_t lda)
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 *U, size_t ldu, typename Field::Element *X, size_t ldx, size_t *P)
template<class T >
std::ostream & operator<< (std::ostream &o, const Modular< T > &F)
template<class T >
std::ostream & operator<< (std::ostream &o, const ModularBalanced< T > &F)
template<class T >
std::ostream & operator<< (std::ostream &o, const UnparametricField< T > &F)
template<typename Target , typename Source >
Target & Caster (Target &t, const Source &s)

Detailed Description

Set of elimination based routines for dense linear algebra with matrices over finite prime field of characteristic less than 2^26.

This class only provides a set of static member functions. No instantiation is allowed.

It enlarges the set of BLAS routines of the class FFLAS, with higher level routines based on elimination.


Enumeration Type Documentation

Enumerator:
FfpackLQUP 
FfpackSingular 
Enumerator:
FfpackLUK 
FfpackKG 
FfpackHybrid 
FfpackKGFast 
FfpackDanilevski 
FfpackArithProg 
FfpackKGFastG 
Enumerator:
FfpackDense 
FfpackKGF 

Function Documentation

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,
const size_t  cutoff 
)

Updates an existing LU factorisation with more rows.

Parameters:
FField on which arithmetic is done
DiagIs L unit ? (if so, FFLAS::FflasUnit)
transNot used yet, should be FFLAS::FflasNoTrans
Mrows in A
Ncols in A
AA is already in LU factorisation
ldaleading dimension of A
Rrank of A
Krows in B
Bmore rows to append to A
ldbleading dimension of B (not tested if != lda)
Ppermutation for LU in A. Should be big enough so it can store the permutation for LU of A and B
Qsame as P
LuTagsee LUdivine.
cutoffsee LUdivine.
Returns:
rank of A.append(B)

Todo:
std::swap ?
Todo:
std::swap ?
Todo:
std::swap ?
Todo:
std::swap ?

Polynomial& FFPACK::mulpoly ( const Field F,
Polynomial &  res,
const Polynomial &  P1,
const Polynomial &  P2 
)
std::list<Polynomial>& FFPACK::Danilevski ( const Field F,
std::list< Polynomial > &  charp,
const size_t  N,
typename Field::Element A,
const size_t  lda 
)
Polynomial& FFPACK::MinPoly ( const Field F,
Polynomial &  minP,
const size_t  N,
const typename Field::Element A,
const size_t  lda,
typename Field::Element U,
size_t  ldu,
typename Field::Element X,
size_t  ldx,
size_t *  P 
)
std::ostream& FFPACK::operator<< ( std::ostream &  o,
const Modular< T > &  F 
)
std::ostream& FFPACK::operator<< ( std::ostream &  o,
const ModularBalanced< T > &  F 
)
std::ostream& FFPACK::operator<< ( std::ostream &  o,
const UnparametricField< T > &  F 
)
Target& FFPACK::Caster ( Target &  t,
const Source &  s 
)