|
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 : and . | |
| 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
1.8.0