FflasFfpack
Data Structures | 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...

Data Structures

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  NonzeroRandIter
 Random iterator for nonzero random numbers. More...
class  Failure
 A precondtion failed. More...

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.

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.


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 ?