Main Page | Modules | Namespace List | Class Hierarchy | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages

FFLAS Class Reference
[linbox/fflas]

#include <fflas.h>

Inheritance diagram for FFLAS:

FFPACK

Detailed Description

BLAS for matrices over finite fields.

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


Public Types

typedef UnparametricField<
double > 
DoubleDomain
enum  FFLAS_TRANSPOSE { FflasNoTrans = 111, FflasTrans = 112 }
enum  FFLAS_UPLO { FflasUpper = 121, FflasLower = 122 }
enum  FFLAS_DIAG { FflasNonUnit = 131, FflasUnit = 132 }
enum  FFLAS_SIDE { FflasLeft = 141, FflasRight = 142 }

Static Public Member Functions

template<class Field> void MatF2MatD (const Field &F, DoubleDomain::Element *S, const size_t lds, const typename Field::Element *E, const size_t lde, const size_t m, const size_t n)
template<class Field> void MatF2MatD_Triangular (const Field &F, typename DoubleDomain::Element *S, const size_t lds, const typename Field::Element *const E, const size_t lde, const size_t m, const size_t n)
template<class Field> void MatD2MatF (const Field &F, typename Field::Element *S, const size_t lds, const typename DoubleDomain::Element *E, const size_t lde, const size_t m, const size_t n)
template<class Field> void fscal (const Field &F, const size_t n, const typename Field::Element alpha, typename Field::Element *X, const size_t incX)
template<class Field> void fcopy (const Field &F, const size_t N, typename Field::Element *X, const size_t incX, const typename Field::Element *Y, const size_t incY)
template<class Field> void faxpy (const Field &F, const size_t N, const typename Field::Element a, const typename Field::Element *X, const size_t incX, typename Field::Element *Y, const size_t incY)
template<class Field> Field::Element fdot (const Field &F, const size_t N, const typename Field::Element *X, const size_t incX, const typename Field::Element *Y, const size_t incY)
template<class Field> void fswap (const Field &F, const size_t N, typename Field::Element *X, const size_t incX, typename Field::Element *Y, const size_t incY)
template<class Field> void fgemv (const Field &F, const enum FFLAS_TRANSPOSE TransA, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, const typename Field::Element *X, const size_t incX, const typename Field::Element beta, typename Field::Element *Y, const size_t incY)
 finite prime Field GEneral Matrix Vector multiplication

template<class Field> void fger (const Field &F, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::Element *x, const size_t incx, const typename Field::Element *y, const size_t incy, typename Field::Element *A, const size_t lda)
 fger: GEneral ?

template<class Field> void ftrsv (const Field &F, const enum FFLAS_UPLO Uplo, const enum FFLAS_TRANSPOSE TransA, const enum FFLAS_DIAG Diag, const size_t N, const typename Field::Element *A, const size_t lda, typename Field::Element *X, int incX)
 ftrsv: TRiangular System solve with Vector Computes X <- op(A^-1).X\ size of X is m

template<class Field> void ftrsm (const Field &F, const enum FFLAS_SIDE Side, const enum FFLAS_UPLO Uplo, const enum FFLAS_TRANSPOSE TransA, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb)
template<class Field> void ftrmm (const Field &F, const enum FFLAS_SIDE Side, const enum FFLAS_UPLO Uplo, const enum FFLAS_TRANSPOSE TransA, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb)
template<class Field> Field::Elementfgemm (const Field &F, const enum FFLAS_TRANSPOSE ta, const enum FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, const size_t winostep)
 Field GEneral Matrix Multiply.

template<class Field> Field::Elementfgemm (const Field &F, const enum FFLAS_TRANSPOSE ta, const enum FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc)
template<class Field> Field::Elementfsquare (const Field &F, const enum FFLAS_TRANSPOSE ta, const size_t n, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, const typename Field::Element beta, typename Field::Element *C, const size_t ldc)

Protected Member Functions

 FFLAS ()

Static Protected Member Functions

template<class Field> size_t FflasKmaxCompute (const Field &F, const size_t w, const typename Field::Element &beta)
template<class Field> size_t FflasKmax (const Field &F, const size_t w, const typename Field::Element &beta)
template<class Field> void DynamicPealing (const Field &F, const enum FFLAS_TRANSPOSE ta, const enum FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, const size_t kmax)
template<class Field> void MatVectProd (const Field &F, const enum FFLAS_TRANSPOSE TransA, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, const typename Field::Element *X, const size_t incX, const typename Field::Element beta, typename Field::Element *Y, const size_t incY)
template<class Field> void ClassicMatmul (const Field &F, const enum FFLAS_TRANSPOSE ta, const enum FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, const size_t kmax)
template<class Field> void WinoCalc (const Field &F, const enum FFLAS_TRANSPOSE ta, const enum FFLAS_TRANSPOSE tb, const size_t mr, const size_t nr, const size_t kr, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, const size_t kmax, const size_t w)
template<class Field> void WinoMain (const Field &F, const enum FFLAS_TRANSPOSE ta, const enum FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, const size_t kmax, const size_t w)
template<class Field> void ftrsmLeftUpNoTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb)
template<class Field> void ftrsmLeftUpTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb)
template<class Field> void ftrsmLeftLowNoTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, const size_t nmax)
template<class Field> void ftrsmLeftLowTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb)
template<class Field> void ftrsmRightUpNoTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, const size_t nmax)
template<class Field> void ftrsmRightUpTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb)
template<class Field> void ftrsmRightLowNoTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb)
template<class Field> void ftrsmRightLowTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb)
template<class Field> void ftrmmLeftUpNoTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, const size_t nmax)
template<class Field> void ftrmmLeftUpTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, const size_t nmax)
template<class Field> void ftrmmLeftLowNoTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, const size_t nmax)
template<class Field> void ftrmmLeftLowTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, const size_t nmax)
template<class Field> void ftrmmRightUpNoTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, const size_t nmax)
template<class Field> void ftrmmRightUpTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, const size_t nmax)
template<class Field> void ftrmmRightLowNoTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, const size_t nmax)
template<class Field> void ftrmmRightLowTrans (const Field &F, const enum FFLAS_DIAG Diag, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb, const size_t nmax)


Member Typedef Documentation

typedef UnparametricField<double> DoubleDomain
 


Member Enumeration Documentation

enum FFLAS_TRANSPOSE
 

Enumeration values:
FflasNoTrans 
FflasTrans 

enum FFLAS_UPLO
 

Enumeration values:
FflasUpper 
FflasLower 

enum FFLAS_DIAG
 

Enumeration values:
FflasNonUnit 
FflasUnit 

enum FFLAS_SIDE
 

Enumeration values:
FflasLeft 
FflasRight 


Constructor & Destructor Documentation

FFLAS  )  [inline, protected]
 


Member Function Documentation

void MatF2MatD const Field F,
DoubleDomain::Element S,
const size_t  lds,
const typename Field::Element E,
const size_t  lde,
const size_t  m,
const size_t  n
[inline, static]
 

void MatF2MatD_Triangular const Field F,
typename DoubleDomain::Element S,
const size_t  lds,
const typename Field::Element *const  E,
const size_t  lde,
const size_t  m,
const size_t  n
[inline, static]
 

void MatD2MatF const Field F,
typename Field::Element S,
const size_t  lds,
const typename DoubleDomain::Element E,
const size_t  lde,
const size_t  m,
const size_t  n
[inline, static]
 

void fscal const Field F,
const size_t  n,
const typename Field::Element  alpha,
typename Field::Element X,
const size_t  incX
[inline, static]
 

void fcopy const Field F,
const size_t  N,
typename Field::Element X,
const size_t  incX,
const typename Field::Element Y,
const size_t  incY
[inline, static]
 

void faxpy const Field F,
const size_t  N,
const typename Field::Element  a,
const typename Field::Element X,
const size_t  incX,
typename Field::Element Y,
const size_t  incY
[static]
 

Field::Element fdot const Field F,
const size_t  N,
const typename Field::Element X,
const size_t  incX,
const typename Field::Element Y,
const size_t  incY
[static]
 

void fswap const Field F,
const size_t  N,
typename Field::Element X,
const size_t  incX,
typename Field::Element Y,
const size_t  incY
[inline, static]
 

void fgemv const Field F,
const enum FFLAS_TRANSPOSE  TransA,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
const typename Field::Element X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element Y,
const size_t  incY
[static]
 

finite prime Field GEneral Matrix Vector multiplication

Computes Y <- alpha op(A).X + beta.Y \ A is m*n

void fger const Field F,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
const typename Field::Element x,
const size_t  incx,
const typename Field::Element y,
const size_t  incy,
typename Field::Element A,
const size_t  lda
[static]
 

fger: GEneral ?

Computes A <- alpha x . y^T + A \ A is m*n, x and y are vectors of size m and n

void ftrsv const Field F,
const enum FFLAS_UPLO  Uplo,
const enum FFLAS_TRANSPOSE  TransA,
const enum FFLAS_DIAG  Diag,
const size_t  N,
const typename Field::Element A,
const size_t  lda,
typename Field::Element X,
int  incX
[static]
 

ftrsv: TRiangular System solve with Vector Computes X <- op(A^-1).X\ size of X is m

void ftrsm const Field F,
const enum FFLAS_SIDE  Side,
const enum FFLAS_UPLO  Uplo,
const enum FFLAS_TRANSPOSE  TransA,
const enum FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::Element A,
const size_t  lda,
typename Field::Element B,
const size_t  ldb
[static]
 

void ftrmm const Field F,
const enum FFLAS_SIDE  Side,
const enum FFLAS_UPLO  Uplo,
const enum FFLAS_TRANSPOSE  TransA,
const enum FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::Element A,
const size_t  lda,
typename Field::Element B,
const size_t  ldb
[static]
 

Field::Element* fgemm const Field F,
const enum FFLAS_TRANSPOSE  ta,
const enum FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
const typename Field::Element B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element C,
const size_t  ldc,
const size_t  winostep
[static]
 

Field GEneral Matrix Multiply.

Computes C = alpha.op(A)*op(B) + beta.C , op(A) = A, AT Winograd's fast algorithm is used

Field::Element* fgemm const Field F,
const enum FFLAS_TRANSPOSE  ta,
const enum FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
const typename Field::Element B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element C,
const size_t  ldc
[inline, static]
 

Field::Element* fsquare const Field F,
const enum FFLAS_TRANSPOSE  ta,
const size_t  n,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element C,
const size_t  ldc
[static]
 

size_t FflasKmaxCompute const Field F,
const size_t  w,
const typename Field::Element beta
[static, protected]
 

size_t FflasKmax const Field F,
const size_t  w,
const typename Field::Element beta
[static, protected]
 

void DynamicPealing const Field F,
const enum FFLAS_TRANSPOSE  ta,
const enum FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
const typename Field::Element B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element C,
const size_t  ldc,
const size_t  kmax
[static, protected]
 

void MatVectProd const Field F,
const enum FFLAS_TRANSPOSE  TransA,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
const typename Field::Element X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element Y,
const size_t  incY
[static, protected]
 

void ClassicMatmul const Field F,
const enum FFLAS_TRANSPOSE  ta,
const enum FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
const typename Field::Element B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element C,
const size_t  ldc,
const size_t  kmax
[static, protected]
 

void WinoCalc const Field F,
const enum FFLAS_TRANSPOSE  ta,
const enum FFLAS_TRANSPOSE  tb,
const size_t  mr,
const size_t  nr,
const size_t  kr,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
const typename Field::Element B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element C,
const size_t  ldc,
const size_t  kmax,
const size_t  w
[static, protected]
 

void WinoMain const Field F,
const enum FFLAS_TRANSPOSE  ta,
const enum FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
const typename Field::Element B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element C,
const size_t  ldc,
const size_t  kmax,
const size_t  w
[static, protected]
 

void ftrsmLeftUpNoTrans const Field F,
const enum FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
typename Field::Element B,
const size_t  ldb
[static, protected]
 

void ftrsmLeftUpTrans const Field F,
const enum FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
typename Field::Element B,
const size_t  ldb
[static, protected]
 

void ftrsmLeftLowNoTrans const Field F,
const enum FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::Element A,
const size_t  lda,
typename Field::Element B,
const size_t  ldb,
const size_t  nmax
[static, protected]
 

void ftrsmLeftLowTrans const Field F,
const enum FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
typename Field::Element B,
const size_t  ldb
[static, protected]
 

void ftrsmRightUpNoTrans const Field F,
const enum FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::Element A,
const size_t  lda,
typename Field::Element B,
const size_t  ldb,
const size_t  nmax
[static, protected]
 

void ftrsmRightUpTrans const Field F,
const enum FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
typename Field::Element B,
const size_t  ldb
[static, protected]
 

void ftrsmRightLowNoTrans const Field F,
const enum FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
const typename Field::Element A,
const size_t  lda,
typename Field::Element B,
const size_t  ldb
[static, protected]
 

<
void ftrsmRightLowTrans const Field F,
const enum FFLAS_DIAG  Diag,
const size_t  M,