FflasFfpack
|
Finite Field Linear Algebra Subroutines More...
#include <cmath>
#include <cstring>
#include "fflas-ffpack/config-blas.h"
#include "fflas-ffpack/field/unparametric.h"
#include "fflas-ffpack/field/modular-balanced.h"
#include "fflas-ffpack/field/modular-positive.h"
#include "fflas_bounds.inl"
#include "fflas_fgemm.inl"
#include "fflas_fgemv.inl"
#include "fflas_fger.inl"
#include "fflas_ftrsm.inl"
#include "fflas_ftrmm.inl"
#include "fflas_ftrsv.inl"
#include "fflas_faxpy.inl"
#include "fflas_fdot.inl"
#include "fflas_fcopy.inl"
#include "fflas_faddm.inl"
Namespaces | |
namespace | FFLAS |
FFLAS: Finite Field Linear Algebra Subroutines. | |
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 | MatMulParameters (const Field &F, const size_t k, const typename Field::Element &beta, size_t &delayedDim, FFLAS_BASE &base, size_t &winoRecLevel, bool winoLevelProvided=false) |
Computes the threshold parameters for the cascade Matmul algorithm. | |
template<class Field > | |
size_t | DotProdBound (const Field &F, const size_t winoRecLevel, const typename Field::Element &beta, const FFLAS_BASE base) |
Computes the maximal size for delaying the modular reduction in a dotproduct. | |
template<class Field > | |
double | computeFactorWino (const Field &F, const size_t w) |
Internal function for the bound computation. | |
template<class Field > | |
FFLAS_BASE | BaseCompute (const Field &F, const size_t w) |
Determines the type of floating point representation to convert to, for BLAS computations. | |
template<class Field > | |
size_t | TRSMBound (const Field &F) |
Computes the maximal size for delaying the modular reduction in a triangular system resolution. | |
template<class Field > | |
void | fzero (const Field &F, const size_t n, typename Field::Element *X, const size_t incX) |
fzero : ![]() | |
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) |
fscal ![]() | |
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 : ![]() | |
template<class Field > | |
void | faxpy (const Field &F, const size_t N, const typename Field::Element alpha, const typename Field::Element *X, const size_t incX, typename Field::Element *Y, const size_t incY) |
faxpy : ![]() | |
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) |
fdot: dot product ![]() | |
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) |
fswap: ![]() | |
template<class Field > | |
void | fcopy (const Field &F, const size_t m, const size_t n, typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb) |
fcopy : ![]() | |
template<class Field > | |
void | fzero (const Field &F, const size_t m, const size_t n, typename Field::Element *A, const size_t lda) |
fzero : ![]() | |
template<class Field > | |
void | fmove (const Field &F, const size_t m, const size_t n, typename Field::Element *A, const size_t lda, typename Field::Element *B, const size_t ldb) |
fmove : ![]() ![]() | |
template<class Field > | |
void | fadd (const Field &F, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, typename Field::Element *C, const size_t ldc) |
fadd : matrix addition. | |
template<class Field > | |
void | fsub (const Field &F, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, typename Field::Element *C, const size_t ldc) |
fsub : matrix subtraction. | |
template<class Field > | |
void | fgemv (const Field &F, const 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 FFLAS_UPLO Uplo, const FFLAS_TRANSPOSE TransA, const 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 ![]() | |
template<class Field > | |
void | ftrsm (const Field &F, const FFLAS_SIDE Side, const FFLAS_UPLO Uplo, const FFLAS_TRANSPOSE TransA, const 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) |
ftrsm: TRiangular System solve with Matrix. | |
template<class Field > | |
void | ftrmm (const Field &F, const FFLAS_SIDE Side, const FFLAS_UPLO Uplo, const FFLAS_TRANSPOSE TransA, const 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) |
ftrmm: TRiangular Matrix Multiply. | |
template<class Field > | |
Field::Element * | fgemm (const Field &F, const FFLAS_TRANSPOSE ta, const 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 w) |
fgemm: Field GEneral Matrix Multiply. | |
template<class Field > | |
Field::Element * | fgemm (const Field &F, const FFLAS_TRANSPOSE ta, const 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) |
fgemm: Field GEneral Matrix Multiply. | |
template<class Field > | |
Field::Element * | fsquare (const Field &F, const 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) |
fsquare: Squares a matrix. | |
template<class Field > | |
void | faddm (const Field &F, const FFLAS_TRANSPOSE transA, 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) |
faddm A <- A+op(B) with op(B) = B or B^T | |
template<class Field > | |
void | faddm (const Field &F, const FFLAS_TRANSPOSE transA, const FFLAS_TRANSPOSE transB, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, typename Field::Element *C, const size_t ldc) |
faddm C <- op(A)+op(B) with op(B) = B or B^T | |
template<class Field > | |
void | fsubm (const Field &F, const FFLAS_TRANSPOSE transA, 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) |
fsubm A <- A-op(B) with op(B) = B or B^T | |
template<class Field > | |
void | fsubm (const Field &F, const FFLAS_TRANSPOSE transA, const FFLAS_TRANSPOSE transB, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, typename Field::Element *C, const size_t ldc) |
fsubm C <- op(A)-op(B) with op(B) = B or B^T | |
template<class Field > | |
Field::Element * | MatCopy (const Field &F, const size_t M, const size_t N, const typename Field::Element *A, const size_t lda) |
MatCopy makes a copy of the matrix M into a new allocated space. | |
size_t | WinoSteps (const size_t m) |
Winosteps. |
Finite Field Linear Algebra Subroutines