FflasFfpack
Namespaces | Typedefs | Enumerations | Functions
FFLAS Namespace Reference

FFLAS: Finite Field Linear Algebra Subroutines. More...

Namespaces

namespace  Protected

Typedefs

typedef
FFPACK::UnparametricField
< float > 
FloatDomain
typedef
FFPACK::UnparametricField
< double > 
DoubleDomain

Enumerations

enum  FFLAS_TRANSPOSE { FflasNoTrans = 111, FflasTrans = 112 }
 Is matrix transposed ? More...
enum  FFLAS_UPLO { FflasUpper = 121, FflasLower = 122 }
 Is triangular matrix's shape upper ? More...
enum  FFLAS_DIAG { FflasNonUnit = 131, FflasUnit = 132 }
 Is Matrix diagonal implicit ? More...
enum  FFLAS_SIDE { FflasLeft = 141, FflasRight = 142 }
 On what side ? More...
enum  FFLAS_BASE { FflasDouble = 151, FflasFloat = 152, FflasGeneric = 153 }
 FFLAS_BASE determines the type of the element representation for Matrix Mult kernel. More...

Functions

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)
 fcopy : $x \gets y $.
template<class Field >
void fzero (const Field &F, const size_t n, typename Field::Element *X, const size_t incX)
 fzero : $A \gets 0 $.
template<>
void faxpy (const DoubleDomain &, const size_t N, const DoubleDomain::Element a, const DoubleDomain::Element *x, const size_t incx, DoubleDomain::Element *y, const size_t incy)
template<>
DoubleDomain::Element fdot (const DoubleDomain &, const size_t N, const DoubleDomain::Element *x, const size_t incx, const DoubleDomain::Element *y, const size_t incy)
template<>
double * fgemm< FFPACK::UnparametricField< double > > (const FFPACK::UnparametricField< double > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const double alpha, const double *A, const size_t lda, const double *B, const size_t ldb, const double beta, double *C, const size_t ldc, const size_t w)
template<>
float * fgemm< FFPACK::UnparametricField< float > > (const FFPACK::UnparametricField< float > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const float alpha, const float *A, const size_t lda, const float *B, const size_t ldb, const float beta, float *C, const size_t ldc, const size_t w)
template<>
double * fgemm< FFPACK::UnparametricField< double > > (const FFPACK::UnparametricField< double > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const double alpha, const double *A, const size_t lda, const double *B, const size_t ldb, const double beta, double *C, const size_t ldc)
template<>
float * fgemm< FFPACK::UnparametricField< float > > (const FFPACK::UnparametricField< float > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const float alpha, const float *A, const size_t lda, const float *B, const size_t ldb, const float beta, float *C, const size_t ldc)
template<>
double * fsquare (const FFPACK::ModularBalanced< double > &F, const FFLAS_TRANSPOSE ta, const size_t n, const double alpha, const double *A, const size_t lda, const double beta, double *C, const size_t ldc)
template<>
float * fsquare (const FFPACK::ModularBalanced< float > &F, const FFLAS_TRANSPOSE ta, const size_t n, const float alpha, const float *A, const size_t lda, const float beta, float *C, const size_t ldc)
template<>
double * fsquare (const FFPACK::Modular< double > &F, const FFLAS_TRANSPOSE ta, const size_t n, const double alpha, const double *A, const size_t lda, const double beta, double *C, const size_t ldc)
template<>
float * fsquare (const FFPACK::Modular< float > &F, const FFLAS_TRANSPOSE ta, const size_t n, const float alpha, const float *A, const size_t lda, const float beta, float *C, const size_t ldc)
template<>
void fgemv (const DoubleDomain &, const FFLAS_TRANSPOSE TransA, const size_t M, const size_t N, const DoubleDomain::Element alpha, const DoubleDomain::Element *A, const size_t lda, const DoubleDomain::Element *X, const size_t incX, const DoubleDomain::Element beta, DoubleDomain::Element *Y, const size_t incY)
template<>
void fgemv (const FloatDomain &, const FFLAS_TRANSPOSE TransA, const size_t M, const size_t N, const FloatDomain::Element alpha, const FloatDomain::Element *A, const size_t lda, const FloatDomain::Element *X, const size_t incX, const FloatDomain::Element beta, FloatDomain::Element *Y, const size_t incY)
template<>
void fger (const DoubleDomain &, const size_t M, const size_t N, const DoubleDomain::Element alpha, const DoubleDomain::Element *x, const size_t incx, const DoubleDomain::Element *y, const size_t incy, DoubleDomain::Element *A, const size_t lda)

Detailed Description

FFLAS: Finite Field Linear Algebra Subroutines.


Typedef Documentation


Enumeration Type Documentation

Is matrix transposed ?

Enumerator:
FflasNoTrans 

Matrix is not transposed.

FflasTrans 

Matrix is transposed.

enum FFLAS_UPLO

Is triangular matrix's shape upper ?

Enumerator:
FflasUpper 

Triangular matrix is Upper triangular (if $i>j$ then $T_{i,j} = 0$)

FflasLower 

Triangular matrix is Lower triangular (if $i<j$ then $T_{i,j} = 0$)

enum FFLAS_DIAG

Is Matrix diagonal implicit ?

Enumerator:
FflasNonUnit 

Triangular matrix has an explicit general diagonal.

FflasUnit 

Triangular matrix has an implicit unit diagonal ( $T_{i,i} = 1$)

enum FFLAS_SIDE

On what side ?

Enumerator:
FflasLeft 

Operator applied on the left.

FflasRight 

Operator applied on the rigth.

enum FFLAS_BASE

FFLAS_BASE determines the type of the element representation for Matrix Mult kernel.

Enumerator:
FflasDouble 

to use the double precision BLAS

FflasFloat 

to use the single precison BLAS

FflasGeneric 

for any other domain, that can not be converted to floating point integers


Function Documentation

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]

fcopy : $x \gets y $.

Parameters:
Ffield
Nsize of the vectors
Xvector in F
incXstride of X
Yvector in F
incYstride of Y
void FFLAS::fzero ( const Field F,
const size_t  n,
typename Field::Element X,
const size_t  incX 
)

fzero : $A \gets 0 $.

Parameters:
Ffield
nnumber of elements to zero
Xvector in F
incXstride of X
void FFLAS::faxpy ( const DoubleDomain &  ,
const size_t  N,
const DoubleDomain::Element  a,
const DoubleDomain::Element *  x,
const size_t  incx,
DoubleDomain::Element *  y,
const size_t  incy 
) [inline]
DoubleDomain::Element FFLAS::fdot ( const DoubleDomain &  ,
const size_t  N,
const DoubleDomain::Element *  x,
const size_t  incx,
const DoubleDomain::Element *  y,
const size_t  incy 
) [inline]
double* FFLAS::fgemm< FFPACK::UnparametricField< double > > ( const FFPACK::UnparametricField< double > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const double  alpha,
const double *  A,
const size_t  lda,
const double *  B,
const size_t  ldb,
const double  beta,
double *  C,
const size_t  ldc,
const size_t  w 
) [inline]
float* FFLAS::fgemm< FFPACK::UnparametricField< float > > ( const FFPACK::UnparametricField< float > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const float  alpha,
const float *  A,
const size_t  lda,
const float *  B,
const size_t  ldb,
const float  beta,
float *  C,
const size_t  ldc,
const size_t  w 
) [inline]
double* FFLAS::fgemm< FFPACK::UnparametricField< double > > ( const FFPACK::UnparametricField< double > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const double  alpha,
const double *  A,
const size_t  lda,
const double *  B,
const size_t  ldb,
const double  beta,
double *  C,
const size_t  ldc 
) [inline]
float* FFLAS::fgemm< FFPACK::UnparametricField< float > > ( const FFPACK::UnparametricField< float > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const float  alpha,
const float *  A,
const size_t  lda,
const float *  B,
const size_t  ldb,
const float  beta,
float *  C,
const size_t  ldc 
) [inline]
double* FFLAS::fsquare ( const FFPACK::ModularBalanced< double > &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  n,
const double  alpha,
const double *  A,
const size_t  lda,
const double  beta,
double *  C,
const size_t  ldc 
) [inline]
float* FFLAS::fsquare ( const FFPACK::ModularBalanced< float > &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  n,
const float  alpha,
const float *  A,
const size_t  lda,
const float  beta,
float *  C,
const size_t  ldc 
) [inline]
double* FFLAS::fsquare ( const FFPACK::Modular< double > &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  n,
const double  alpha,
const double *  A,
const size_t  lda,
const double  beta,
double *  C,
const size_t  ldc 
) [inline]
float* FFLAS::fsquare ( const FFPACK::Modular< float > &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  n,
const float  alpha,
const float *  A,
const size_t  lda,
const float  beta,
float *  C,
const size_t  ldc 
) [inline]
void FFLAS::fgemv ( const DoubleDomain &  ,
const FFLAS_TRANSPOSE  TransA,
const size_t  M,
const size_t  N,
const DoubleDomain::Element  alpha,
const DoubleDomain::Element *  A,
const size_t  lda,
const DoubleDomain::Element *  X,
const size_t  incX,
const DoubleDomain::Element  beta,
DoubleDomain::Element *  Y,
const size_t  incY 
) [inline]
void FFLAS::fgemv ( const FloatDomain &  ,
const FFLAS_TRANSPOSE  TransA,
const size_t  M,
const size_t  N,
const FloatDomain::Element  alpha,
const FloatDomain::Element *  A,
const size_t  lda,
const FloatDomain::Element *  X,
const size_t  incX,
const FloatDomain::Element  beta,
FloatDomain::Element *  Y,
const size_t  incY 
) [inline]
void FFLAS::fger ( const DoubleDomain &  ,
const size_t  M,
const size_t  N,
const DoubleDomain::Element  alpha,
const DoubleDomain::Element *  x,
const size_t  incx,
const DoubleDomain::Element *  y,
const size_t  incy,
DoubleDomain::Element *  A,
const size_t  lda 
) [inline]