FflasFfpack
Namespaces | Data Structures | Typedefs | Enumerations | Functions
FFLAS Namespace Reference

Namespaces

namespace  _ftranspose_impl
 
namespace  BLAS3
 
namespace  csr_hyb_details
 
namespace  CuttingStrategy
 
namespace  details
 
namespace  details_spmv
 
namespace  ElementCategories
 
namespace  ell_r_details
 
namespace  FieldCategories
 Traits and categories will need to be placed in a proper file later.
 
namespace  MMHelperAlgo
 
namespace  ModeCategories
 Specifies the mode of action for an algorithm w.r.t.
 
namespace  ParSeqHelper
 ParSeqHelper for both fgemm and ftrsm.
 
namespace  Protected
 
namespace  sell_details
 
namespace  sparse_details
 
namespace  sparse_details_impl
 
namespace  StrategyParameter
 
namespace  StructureHelper
 StructureHelper for ftrsm.
 
namespace  vectorised
 

Data Structures

struct  AlgoChooser
 
struct  AlgoChooser< ModeCategories::ConvertTo< ElementCategories::RNSElementTag >, ParSeq >
 
struct  associatedDelayedField
 
struct  associatedDelayedField< const FFPACK::RNSIntegerMod< RNS > >
 
struct  associatedDelayedField< const Givaro::Modular< T, X > >
 
struct  associatedDelayedField< const Givaro::ModularBalanced< T > >
 
struct  associatedDelayedField< const Givaro::ZRing< T > >
 
struct  BlockTransposeSIMD
 
struct  Checker_Empty
 
class  CheckerImplem_fgemm
 
class  CheckerImplem_ftrsm
 
struct  CooMat
 
struct  CsrMat
 
struct  ElementTraits
 ElementTraits. More...
 
struct  ElementTraits< double >
 
struct  ElementTraits< FFPACK::rns_double_elt >
 
struct  ElementTraits< float >
 
struct  ElementTraits< Givaro::Integer >
 
struct  ElementTraits< int16_t >
 
struct  ElementTraits< int32_t >
 
struct  ElementTraits< int64_t >
 
struct  ElementTraits< int8_t >
 
struct  ElementTraits< RecInt::rint< K > >
 
struct  ElementTraits< RecInt::rmint< K, MG > >
 
struct  ElementTraits< RecInt::ruint< K > >
 
struct  ElementTraits< uint16_t >
 
struct  ElementTraits< uint32_t >
 
struct  ElementTraits< uint64_t >
 
struct  ElementTraits< uint8_t >
 
struct  EllMat
 
struct  FieldTraits
 FieldTrait. More...
 
struct  FieldTraits< FFPACK::RNSInteger< T > >
 
struct  FieldTraits< FFPACK::RNSIntegerMod< T > >
 
struct  FieldTraits< Givaro::Modular< Element > >
 
struct  FieldTraits< Givaro::ModularBalanced< Element > >
 
struct  FieldTraits< Givaro::ZRing< double > >
 
struct  FieldTraits< Givaro::ZRing< float > >
 
struct  FieldTraits< Givaro::ZRing< Givaro::Integer > >
 
struct  FieldTraits< Givaro::ZRing< int16_t > >
 
struct  FieldTraits< Givaro::ZRing< int32_t > >
 
struct  FieldTraits< Givaro::ZRing< int64_t > >
 
struct  FieldTraits< Givaro::ZRing< RecInt::ruint< K > > >
 
struct  FieldTraits< Givaro::ZRing< uint16_t > >
 
struct  FieldTraits< Givaro::ZRing< uint32_t > >
 
struct  FieldTraits< Givaro::ZRing< uint64_t > >
 
struct  ForStrategy1D
 
struct  ForStrategy2D
 
struct  has_minus_eq_impl
 
struct  has_minus_impl
 
struct  has_mul_eq_impl
 
struct  has_mul_impl
 
struct  has_operation
 
struct  has_plus_eq_impl
 
struct  has_plus_impl
 
struct  HelperFlag
 
struct  isSparseMatrix
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::COO > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::COO_ZO > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::CSR > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::CSR_HYB > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::CSR_ZO > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::ELL > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::ELL_simd > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::ELL_simd_ZO > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::ELL_ZO > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::HYB_ZO > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::SELL > >
 
struct  isSparseMatrix< Field, Sparse< Field, SparseMatrix_t::SELL_ZO > >
 
struct  isSparseMatrixMKLFormat
 
struct  isSparseMatrixSimdFormat
 
struct  isZOSparseMatrix
 
struct  isZOSparseMatrix< Field, Sparse< Field, SparseMatrix_t::COO_ZO > >
 
struct  isZOSparseMatrix< Field, Sparse< Field, SparseMatrix_t::CSR_ZO > >
 
struct  isZOSparseMatrix< Field, Sparse< Field, SparseMatrix_t::ELL_simd_ZO > >
 
struct  isZOSparseMatrix< Field, Sparse< Field, SparseMatrix_t::ELL_ZO > >
 
struct  isZOSparseMatrix< Field, Sparse< Field, SparseMatrix_t::SELL_ZO > >
 
struct  MMHelper
 
struct  MMHelper< FFPACK::RNSInteger< E >, AlgoTrait, ModeCategories::DefaultTag, ParSeqTrait >
 
struct  MMHelper< FFPACK::RNSIntegerMod< E >, AlgoTrait, ModeCategories::DefaultTag, ParSeqTrait >
 
struct  MMHelper< Field, AlgoTrait, ModeCategories::ConvertTo< Dest >, ParSeqTrait >
 
struct  MMHelper< Field, AlgoTrait, ModeCategories::ConvertTo< ElementCategories::RNSElementTag >, ParSeqTrait >
 
struct  MMHelper< Field, AlgoTrait, ModeCategories::DefaultTag, ParSeqTrait >
 FGEMM Helper for Default and ConvertTo modes of operation. More...
 
struct  ModeTraits
 ModeTraits. More...
 
struct  ModeTraits< Givaro::Modular< Element, Compute > >
 
struct  ModeTraits< Givaro::Modular< Givaro::Integer, Compute > >
 
struct  ModeTraits< Givaro::Modular< int16_t, Compute > >
 
struct  ModeTraits< Givaro::Modular< int32_t, Compute > >
 
struct  ModeTraits< Givaro::Modular< int64_t, uint64_t > >
 
struct  ModeTraits< Givaro::Modular< int8_t, Compute > >
 
struct  ModeTraits< Givaro::Modular< RecInt::ruint< K >, Compute > >
 
struct  ModeTraits< Givaro::Modular< uint16_t, Compute > >
 
struct  ModeTraits< Givaro::Modular< uint32_t, Compute > >
 
struct  ModeTraits< Givaro::Modular< uint8_t, Compute > >
 
struct  ModeTraits< Givaro::ModularBalanced< Element > >
 
struct  ModeTraits< Givaro::ModularBalanced< Givaro::Integer > >
 
struct  ModeTraits< Givaro::ModularBalanced< int16_t > >
 
struct  ModeTraits< Givaro::ModularBalanced< int32_t > >
 
struct  ModeTraits< Givaro::ModularBalanced< int8_t > >
 
struct  ModeTraits< Givaro::Montgomery< T > >
 
struct  ModeTraits< Givaro::ZRing< double > >
 
struct  ModeTraits< Givaro::ZRing< float > >
 
struct  ModeTraits< Givaro::ZRing< Givaro::Integer > >
 
struct  Packer
 
struct  Packer< double, 2 >
 
struct  readMyMachineType
 
struct  readMyMachineType< Field, mpz_t >
 
struct  Sparse
 
struct  Sparse< _Field, SparseMatrix_t::COO >
 
struct  Sparse< _Field, SparseMatrix_t::COO_ZO >
 
struct  Sparse< _Field, SparseMatrix_t::CSR >
 
struct  Sparse< _Field, SparseMatrix_t::CSR_HYB >
 
struct  Sparse< _Field, SparseMatrix_t::CSR_ZO >
 
struct  Sparse< _Field, SparseMatrix_t::ELL >
 
struct  Sparse< _Field, SparseMatrix_t::ELL_R >
 
struct  Sparse< _Field, SparseMatrix_t::ELL_R_ZO >
 
struct  Sparse< _Field, SparseMatrix_t::ELL_simd >
 
struct  Sparse< _Field, SparseMatrix_t::ELL_simd_ZO >
 
struct  Sparse< _Field, SparseMatrix_t::ELL_ZO >
 
struct  Sparse< _Field, SparseMatrix_t::HYB_ZO >
 
struct  Sparse< _Field, SparseMatrix_t::SELL >
 
struct  Sparse< _Field, SparseMatrix_t::SELL_ZO >
 
struct  SpMat
 
struct  StatsMatrix
 
struct  support_fast_mod
 
struct  support_fast_mod< double >
 
struct  support_fast_mod< float >
 
struct  support_fast_mod< int64_t >
 
struct  support_simd
 
struct  support_simd_add
 
struct  support_simd_mod
 
struct  tfn_minus
 
struct  tfn_minus_eq
 
struct  tfn_mul
 
struct  tfn_mul_eq
 
struct  tfn_plus
 
struct  tfn_plus_eq
 
struct  TRSMHelper
 TRSM Helper. More...
 

Typedefs

template<class Field >
using Checker_fgemm = FFLAS::Checker_Empty< Field >
 
template<class Field >
using Checker_ftrsm = FFLAS::Checker_Empty< Field >
 
template<class Field >
using ForceCheck_fgemm = CheckerImplem_fgemm< Field >
 
template<class Field >
using ForceCheck_ftrsm = CheckerImplem_ftrsm< Field >
 
using ZOSparseMatrix = std::true_type
 
using NotZOSparseMatrix = std::false_type
 
using SimdSparseMatrix = std::true_type
 
using NoSimdSparseMatrix = std::false_type
 
using MKLSparseMatrixFormat = std::true_type
 
using NotMKLSparseMatrixFormat = std::false_type
 
template<class T >
using has_plus = typename std::conditional< std::is_arithmetic< T >::value, std::true_type, has_plus_impl< T > >::type
 
template<class T >
using has_minus = typename std::conditional< std::is_arithmetic< T >::value, std::true_type, has_minus_impl< T > >::type
 
template<class T >
using has_equal = typename std::conditional< std::is_arithmetic< T >::value, std::true_type, std::is_copy_assignable< T > >::type
 
template<class T >
using has_plus_eq = typename std::conditional< std::is_arithmetic< T >::value, std::true_type, has_plus_eq_impl< T > >::type
 
template<class T >
using has_minus_eq = typename std::conditional< std::is_arithmetic< T >::value, std::true_type, has_minus_eq_impl< T > >::type
 
template<class T >
using has_mul = typename std::conditional< std::is_arithmetic< T >::value, std::true_type, has_mul_impl< T > >::type
 
template<class T >
using has_mul_eq = typename std::conditional< std::is_arithmetic< T >::value, std::true_type, has_mul_eq_impl< T > >::type
 
typedef Givaro::Timer Timer
 
typedef Givaro::BaseTimer BaseTimer
 
typedef Givaro::UserTimer UserTimer
 
typedef Givaro::SysTimer SysTimer
 

Enumerations

enum  FFLAS_ORDER { FflasRowMajor =101 , FflasColMajor =102 }
 Storage by row or col ? More...
 
enum  FFLAS_TRANSPOSE { FflasNoTrans = 111 , FflasTrans = 112 }
 Is matrix transposed ? More...
 
enum  FFLAS_UPLO { FflasUpper = 121 , FflasLower = 122 , FflasLeftTri = 123 , FflasRightTri = 124 }
 Is triangular matrix's shape upper ? More...
 
enum  FFLAS_DIAG { FflasNonUnit = 131 , FflasUnit = 132 }
 Is the triangular matrix implicitly unit diagonal ? 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...
 
enum  number_kind { zero =0 , one =1 , mone =-1 , other =2 }
 
enum class  SparseMatrix_t {
  CSR , CSR_ZO , CSC , CSC_ZO ,
  COO , COO_ZO , ELL , ELL_ZO ,
  SELL , SELL_ZO , ELL_simd , ELL_simd_ZO ,
  CSR_HYB , HYB_ZO
}
 
enum  FFLAS_FORMAT {
  FflasAuto = 0 , FflasDense = 1 , FflasSMS = 2 , FflasBinary = 3 ,
  FflasMath = 4 , FflasMaple = 5 , FflasSageMath = 6
}
 

Functions

Givaro::Integer InfNorm (const size_t M, const size_t N, const Givaro::Integer *A, const size_t lda)
 
template<class T >
const T & min3 (const T &m, const T &n, const T &k)
 
template<class T >
const T & max3 (const T &m, const T &n, const T &k)
 
template<class T >
const T & min4 (const T &m, const T &n, const T &k, const T &l)
 
template<class T >
const T & max4 (const T &m, const T &n, const T &k, const T &l)
 
template<class Field >
void fadd (const Field &F, const size_t N, typename Field::ConstElement_ptr A, const size_t inca, typename Field::ConstElement_ptr B, const size_t incb, typename Field::Element_ptr C, const size_t incc)
 
template<class Field >
void faddin (const Field &F, const size_t N, typename Field::ConstElement_ptr B, const size_t incb, typename Field::Element_ptr C, const size_t incc)
 
template<class Field >
void fsub (const Field &F, const size_t N, typename Field::ConstElement_ptr A, const size_t inca, typename Field::ConstElement_ptr B, const size_t incb, typename Field::Element_ptr C, const size_t incc)
 
template<class Field >
void fsubin (const Field &F, const size_t N, typename Field::ConstElement_ptr B, const size_t incb, typename Field::Element_ptr C, const size_t incc)
 
template<class Field >
void fadd (const Field &F, const size_t N, typename Field::ConstElement_ptr A, const size_t inca, const typename Field::Element alpha, typename Field::ConstElement_ptr B, const size_t incb, typename Field::Element_ptr C, const size_t incc)
 
template<class Field >
void pfadd (const Field &F, const size_t M, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr C, const size_t ldc, const size_t numths)
 
template<class Field >
void pfsub (const Field &F, const size_t M, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr C, const size_t ldc, const size_t numths)
 
template<class Field >
void pfaddin (const Field &F, const size_t M, const size_t N, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr C, const size_t ldc, size_t numths)
 
template<class Field >
void pfsubin (const Field &F, const size_t M, const size_t N, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr C, const size_t ldc, size_t numths)
 
template<class Field >
void fadd (const Field &F, const size_t M, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr C, const size_t ldc)
 fadd : matrix addition. More...
 
template<class Field >
void fsub (const Field &F, const size_t M, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr C, const size_t ldc)
 fsub : matrix subtraction. More...
 
template<class Field >
void faddin (const Field &F, const size_t M, const size_t N, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr C, const size_t ldc)
 faddin More...
 
template<class Field >
void faddin (const Field &F, const FFLAS_UPLO uplo, const size_t N, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr C, const size_t ldc)
 fadding for symmetric matrices More...
 
template<class Field >
void fsubin (const Field &F, const size_t M, const size_t N, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr C, const size_t ldc)
 fsubin C = C - B More...
 
template<class Field >
void fadd (const Field &F, const size_t M, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element alpha, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr C, const size_t ldc)
 fadd : matrix addition with scaling. More...
 
template<class Field >
void fassign (const Field &F, const size_t N, typename Field::ConstElement_ptr Y, const size_t incY, typename Field::Element_ptr X, const size_t incX)
 fassign : $x \gets y $. More...
 
template<>
void fassign (const Givaro::Modular< float > &F, const size_t N, const float *Y, const size_t incY, float *X, const size_t incX)
 
template<>
void fassign (const Givaro::ModularBalanced< float > &F, const size_t N, const float *Y, const size_t incY, float *X, const size_t incX)
 
template<>
void fassign (const Givaro::ZRing< float > &F, const size_t N, const float *Y, const size_t incY, float *X, const size_t incX)
 
template<>
void fassign (const Givaro::Modular< double > &F, const size_t N, const double *Y, const size_t incY, double *X, const size_t incX)
 
template<>
void fassign (const Givaro::ModularBalanced< double > &F, const size_t N, const double *Y, const size_t incY, double *X, const size_t incX)
 
template<>
void fassign (const Givaro::ZRing< double > &F, const size_t N, const double *Y, const size_t incY, double *X, const size_t incX)
 
template<class Field >
void fassign (const Field &F, const size_t m, const size_t n, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr A, const size_t lda)
 fassign : $A \gets B $. More...
 
template<class Field >
void faxpy (const Field &F, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr X, const size_t incX, typename Field::Element_ptr Y, const size_t incY)
 faxpy : $y \gets \alpha \cdot x + y$. More...
 
template<>
void faxpy (const Givaro::DoubleDomain &, const size_t N, const Givaro::DoubleDomain::Element a, Givaro::DoubleDomain::ConstElement_ptr x, const size_t incx, Givaro::DoubleDomain::Element_ptr y, const size_t incy)
 
template<>
void faxpy (const Givaro::FloatDomain &, const size_t N, const Givaro::FloatDomain::Element a, Givaro::FloatDomain::ConstElement_ptr x, const size_t incx, Givaro::FloatDomain::Element_ptr y, const size_t incy)
 
template<class Field >
void faxpy (const Field &F, const size_t m, const size_t n, const typename Field::Element alpha, typename Field::ConstElement_ptr X, const size_t ldx, typename Field::Element_ptr Y, const size_t ldy)
 faxpy : $y \gets \alpha \cdot x + y$. More...
 
template<class Field >
Field::Element fdot (const Field &F, const size_t N, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, ModeCategories::DefaultTag &MT)
 
template<class Field >
Field::Element fdot (const Field &F, const size_t N, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, ModeCategories::DelayedTag &MT)
 
template<>
Givaro::DoubleDomain::Element fdot (const Givaro::DoubleDomain &, const size_t N, Givaro::DoubleDomain::ConstElement_ptr x, const size_t incx, Givaro::DoubleDomain::ConstElement_ptr y, const size_t incy, ModeCategories::DefaultTag &MT)
 
template<>
Givaro::FloatDomain::Element fdot (const Givaro::FloatDomain &, const size_t N, Givaro::FloatDomain::ConstElement_ptr x, const size_t incx, Givaro::FloatDomain::ConstElement_ptr y, const size_t incy, ModeCategories::DefaultTag &MT)
 
template<class Field , class T >
Field::Element fdot (const Field &F, const size_t N, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, ModeCategories::ConvertTo< T > &MT)
 
template<class Field >
Field::Element fdot (const Field &F, const size_t N, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, ModeCategories::DefaultBoundedTag &dbt)
 
template<class Field >
Field::Element fdot (const Field &F, const size_t N, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, const ParSeqHelper::Sequential seq)
 
template<class Field >
Field::Element fdot (const Field &F, const size_t N, typename Field::ConstElement_ptr X, const size_t incX, typename Field::ConstElement_ptr Y, const size_t incY)
 fdot: dot product $x^T  y$. More...
 
template<class Field >
Field::Element_ptr 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, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, ModeCategories::ConvertTo< ElementCategories::MachineFloatTag >, ParSeqHelper::Sequential > &H)
 
template<typename Field >
Field::Element_ptr 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, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, const ParSeqHelper::Sequential seq)
 
template<typename Field , class Cut , class Param >
Field::Element_ptr 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, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, const ParSeqHelper::Parallel< Cut, Param > par)
 
template<typename Field >
Field::Element_ptr 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, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc)
 fgemm: Field GEneral Matrix Multiply. More...
 
template<typename Field , class ModeT , class ParSeq >
Field::Element_ptr 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, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Auto, ModeT, ParSeq > &H)
 
template<class Field >
Field::Element_ptr 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, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, ModeCategories::DelayedTag, ParSeqHelper::Sequential > &H)
 
template<class Field >
Field::Element_ptr fsquare (const Field &F, const FFLAS_TRANSPOSE ta, const size_t n, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc)
 fsquare: Squares a matrix. More...
 
template<>
double * fsquare (const Givaro::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 Givaro::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 Givaro::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 Givaro::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<typename RNS , typename ParSeqTrait >
FFPACK::RNSInteger< RNS >::Element_ptr fgemm (const FFPACK::RNSInteger< RNS > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename FFPACK::RNSInteger< RNS >::Element alpha, typename FFPACK::RNSInteger< RNS >::ConstElement_ptr Ad, const size_t lda, typename FFPACK::RNSInteger< RNS >::ConstElement_ptr Bd, const size_t ldb, const typename FFPACK::RNSInteger< RNS >::Element beta, typename FFPACK::RNSInteger< RNS >::Element_ptr Cd, const size_t ldc, MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Classic, ModeCategories::DefaultTag, ParSeqHelper::Compose< ParSeqHelper::Sequential, ParSeqTrait > > &H)
 
template<typename RNS >
FFPACK::RNSInteger< RNS >::Element_ptr fgemm (const FFPACK::RNSInteger< RNS > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename FFPACK::RNSInteger< RNS >::Element alpha, typename FFPACK::RNSInteger< RNS >::ConstElement_ptr Ad, const size_t lda, typename FFPACK::RNSInteger< RNS >::ConstElement_ptr Bd, const size_t ldb, const typename FFPACK::RNSInteger< RNS >::Element beta, typename FFPACK::RNSInteger< RNS >::Element_ptr Cd, const size_t ldc, MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Classic, ModeCategories::DefaultTag, ParSeqHelper::Sequential > &H)
 
template<typename RNS , typename ParSeqTrait >
FFPACK::RNSInteger< RNS >::Element_ptr fgemm (const FFPACK::RNSInteger< RNS > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename FFPACK::RNSInteger< RNS >::Element alpha, typename FFPACK::RNSInteger< RNS >::ConstElement_ptr Ad, const size_t lda, typename FFPACK::RNSInteger< RNS >::ConstElement_ptr Bd, const size_t ldb, const typename FFPACK::RNSInteger< RNS >::Element beta, typename FFPACK::RNSInteger< RNS >::Element_ptr Cd, const size_t ldc, MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Classic, ModeCategories::DefaultTag, ParSeqHelper::Compose< ParSeqHelper::Parallel< CuttingStrategy::RNSModulus, StrategyParameter::Threads >, ParSeqTrait > > &H)
 
template<typename RNS , typename Cut , typename Param >
FFPACK::RNSInteger< RNS >::Element_ptr fgemm (const FFPACK::RNSInteger< RNS > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename FFPACK::RNSInteger< RNS >::Element alpha, typename FFPACK::RNSInteger< RNS >::ConstElement_ptr Ad, const size_t lda, typename FFPACK::RNSInteger< RNS >::ConstElement_ptr Bd, const size_t ldb, const typename FFPACK::RNSInteger< RNS >::Element beta, typename FFPACK::RNSInteger< RNS >::Element_ptr Cd, const size_t ldc, MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Classic, ModeCategories::DefaultTag, ParSeqHelper::Parallel< Cut, Param > > &H)
 
template<class ParSeq >
Givaro::Integer * fgemm (const Givaro::ZRing< Givaro::Integer > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const Givaro::Integer alpha, const Givaro::Integer *A, const size_t lda, const Givaro::Integer *B, const size_t ldb, Givaro::Integer beta, Givaro::Integer *C, const size_t ldc, MMHelper< Givaro::ZRing< Givaro::Integer >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag >, ParSeq > &H)
 
template<typename RNS , class ModeT >
RNS::Element_ptr fgemm (const FFPACK::RNSInteger< RNS > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename RNS::Element alpha, typename RNS::ConstElement_ptr Ad, const size_t lda, typename RNS::ConstElement_ptr Bd, const size_t ldb, const typename RNS::Element beta, typename RNS::Element_ptr Cd, const size_t ldc, MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Winograd, ModeT, ParSeqHelper::Sequential > &H)
 
template<typename RNS >
RNS::Element_ptr fgemm (const FFPACK::RNSIntegerMod< RNS > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename RNS::Element alpha, typename RNS::ConstElement_ptr Ad, const size_t lda, typename RNS::ConstElement_ptr Bd, const size_t ldb, const typename RNS::Element beta, typename RNS::Element_ptr Cd, const size_t ldc, MMHelper< FFPACK::RNSIntegerMod< RNS >, MMHelperAlgo::Winograd > &H)
 
Givaro::Integer * fgemm (const Givaro::Modular< Givaro::Integer > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const Givaro::Integer alpha, const Givaro::Integer *A, const size_t lda, const Givaro::Integer *B, const size_t ldb, const Givaro::Integer beta, Givaro::Integer *C, const size_t ldc, MMHelper< Givaro::Modular< Givaro::Integer >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag > > &H)
 
template<class ParSeq >
Givaro::Integer * fgemm (const Givaro::Modular< Givaro::Integer > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const Givaro::Integer alpha, const Givaro::Integer *A, const size_t lda, const Givaro::Integer *B, const size_t ldb, const Givaro::Integer beta, Givaro::Integer *C, const size_t ldc, MMHelper< Givaro::Modular< Givaro::Integer >, MMHelperAlgo::Auto, ModeCategories::ConvertTo< ElementCategories::RNSElementTag >, ParSeq > &H)
 
template<size_t K1, size_t K2, class ParSeq >
RecInt::ruint< K1 > * fgemm (const Givaro::Modular< RecInt::ruint< K1 >, RecInt::ruint< K2 > > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const RecInt::ruint< K1 > alpha, const RecInt::ruint< K1 > *A, const size_t lda, const RecInt::ruint< K1 > *B, const size_t ldb, RecInt::ruint< K1 > beta, RecInt::ruint< K1 > *C, const size_t ldc, MMHelper< Givaro::Modular< RecInt::ruint< K1 >, RecInt::ruint< K2 > >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag >, ParSeq > &H)
 
template<class Field , class ModeT >
Field::Element_ptr 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, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, ModeT > &H)
 
template<class Field , class ModeT , class Cut , class Param >
Field::Element_ptr 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, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::WinogradPar, ModeT, ParSeqHelper::Parallel< Cut, Param > > &H)
 
template<class Field >
Field::Element_ptr fgemv (const Field &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::MachineFloatTag > > &H)
 
template<class Field >
Field::Element_ptr fgemv (const Field &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DelayedTag > &H)
 
template<class Field >
Field::Element_ptr fgemv (const Field &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
template<class Field >
Field::Element_ptr fgemv (const Field &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::LazyTag > &H)
 
template<class Field >
Field::Element_ptr fgemv (const Field &F, const FFLAS_TRANSPOSE TransA, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY)
 finite prime Field GEneral Matrix Vector multiplication. More...
 
Givaro::ZRing< int64_t >::Element_ptr fgemv (const Givaro::ZRing< int64_t > &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const int64_t alpha, const int64_t *A, const size_t lda, const int64_t *X, const size_t incX, const int64_t beta, int64_t *Y, const size_t incY, MMHelper< Givaro::ZRing< int64_t >, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
Givaro::DoubleDomain::Element_ptr fgemv (const Givaro::DoubleDomain &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const Givaro::DoubleDomain::Element alpha, const Givaro::DoubleDomain::ConstElement_ptr A, const size_t lda, const Givaro::DoubleDomain::ConstElement_ptr X, const size_t incX, const Givaro::DoubleDomain::Element beta, Givaro::DoubleDomain::Element_ptr Y, const size_t incY, MMHelper< Givaro::DoubleDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
template<class Field >
Field::Element_ptr fgemv (const Field &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::ConstElement_ptr A, const size_t lda, const typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DefaultBoundedTag > &H)
 
Givaro::FloatDomain::Element_ptr fgemv (const Givaro::FloatDomain &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const Givaro::FloatDomain::Element alpha, const Givaro::FloatDomain::ConstElement_ptr A, const size_t lda, const Givaro::FloatDomain::ConstElement_ptr X, const size_t incX, const Givaro::FloatDomain::Element beta, Givaro::FloatDomain::Element_ptr Y, const size_t incY, MMHelper< Givaro::FloatDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
template<class Field , class Cut , class Param >
Field::Element_ptr fgemv (const Field &F, const FFLAS_TRANSPOSE ta, const size_t m, const size_t n, const typename Field::Element alpha, const typename Field::ConstElement_ptr A, const size_t lda, const typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY, ParSeqHelper::Parallel< Cut, Param > &parH)
 
template<class Field >
Field::Element_ptr fgemv (const Field &F, const FFLAS_TRANSPOSE ta, const size_t m, const size_t n, const typename Field::Element alpha, const typename Field::ConstElement_ptr A, const size_t lda, const typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY, ParSeqHelper::Sequential &seqH)
 
FFPACK::rns_double::Element_ptr fgemv (const FFPACK::RNSInteger< FFPACK::rns_double > &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const FFPACK::rns_double::Element alpha, FFPACK::rns_double::ConstElement_ptr A, const size_t lda, FFPACK::rns_double::ConstElement_ptr X, const size_t incX, const FFPACK::rns_double::Element beta, FFPACK::rns_double::Element_ptr Y, const size_t incY, MMHelper< FFPACK::RNSInteger< FFPACK::rns_double >, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
FFPACK::rns_double::Element_ptr fgemv (const FFPACK::RNSIntegerMod< FFPACK::rns_double > &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const FFPACK::rns_double::Element alpha, FFPACK::rns_double::ConstElement_ptr A, const size_t lda, FFPACK::rns_double::ConstElement_ptr X, const size_t incX, const FFPACK::rns_double::Element beta, FFPACK::rns_double::Element_ptr Y, const size_t incY, MMHelper< FFPACK::RNSIntegerMod< FFPACK::rns_double >, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
Givaro::Integer * fgemv (const Givaro::ZRing< Givaro::Integer > &F, const FFLAS_TRANSPOSE ta, const size_t m, const size_t n, const Givaro::Integer alpha, Givaro::Integer *A, const size_t lda, Givaro::Integer *X, const size_t ldx, Givaro::Integer beta, Givaro::Integer *Y, const size_t ldy, MMHelper< Givaro::ZRing< Givaro::Integer >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag > > &H)
 
Givaro::Integer * fgemv (const Givaro::Modular< Givaro::Integer > &F, const FFLAS_TRANSPOSE ta, const size_t m, const size_t n, const Givaro::Integer alpha, Givaro::Integer *A, const size_t lda, Givaro::Integer *X, const size_t ldx, Givaro::Integer beta, Givaro::Integer *Y, const size_t ldy, MMHelper< Givaro::Modular< Givaro::Integer >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag > > &H)
 
template<size_t K1, size_t K2, class ParSeq >
RecInt::ruint< K1 > * fgemv (const Givaro::Modular< RecInt::ruint< K1 >, RecInt::ruint< K2 > > &F, const FFLAS_TRANSPOSE ta, const size_t m, const size_t n, const RecInt::ruint< K1 > alpha, const RecInt::ruint< K1 > *A, const size_t lda, const RecInt::ruint< K1 > *X, const size_t incx, RecInt::ruint< K1 > beta, RecInt::ruint< K1 > *Y, const size_t incy, MMHelper< Givaro::Modular< RecInt::ruint< K1 >, RecInt::ruint< K2 > >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag >, ParSeq > &H)
 
template<class Field >
void fger (const Field &F, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, typename Field::Element_ptr A, const size_t lda)
 fger: rank one update of a general matrix More...
 
template<class Field >
void fger (const Field &F, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, typename Field::Element_ptr A, const size_t lda, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::MachineFloatTag > > &H)
 
template<class Field , class AnyTag >
void fger (const Field &F, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, typename Field::Element_ptr A, const size_t lda, MMHelper< Field, MMHelperAlgo::Classic, AnyTag > &H)
 
void fger (const Givaro::DoubleDomain &F, const size_t M, const size_t N, const Givaro::DoubleDomain::Element alpha, const Givaro::DoubleDomain::ConstElement_ptr x, const size_t incx, const Givaro::DoubleDomain::ConstElement_ptr y, const size_t incy, Givaro::DoubleDomain::Element_ptr A, const size_t lda, MMHelper< Givaro::DoubleDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
template<class Field >
void fger (const Field &F, const size_t M, const size_t N, const typename Field::Element alpha, const typename Field::ConstElement_ptr x, const size_t incx, const typename Field::ConstElement_ptr y, const size_t incy, typename Field::Element_ptr A, const size_t lda, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DefaultBoundedTag > &H)
 
void fger (const Givaro::FloatDomain &F, const size_t M, const size_t N, const Givaro::FloatDomain::Element alpha, const Givaro::FloatDomain::ConstElement_ptr x, const size_t incx, const Givaro::FloatDomain::ConstElement_ptr y, const size_t incy, Givaro::FloatDomain::Element_ptr A, const size_t lda, MMHelper< Givaro::FloatDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
template<class Field >
void fger (const Field &F, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, typename Field::Element_ptr A, const size_t lda, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::LazyTag > &H)
 
template<class Field >
void fger (const Field &F, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, typename Field::Element_ptr A, const size_t lda, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DelayedTag > &H)
 
void fger (const Givaro::Modular< Givaro::Integer > &F, const size_t M, const size_t N, const typename Givaro::Integer alpha, typename Givaro::Integer *x, const size_t incx, typename Givaro::Integer *y, const size_t incy, typename Givaro::Integer *A, const size_t lda, MMHelper< Givaro::Modular< Givaro::Integer >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag > > &H)
 
template<typename RNS >
void fger (const FFPACK::RNSInteger< RNS > &F, const size_t M, const size_t N, const typename FFPACK::RNSInteger< RNS >::Element alpha, typename FFPACK::RNSInteger< RNS >::Element_ptr x, const size_t incx, typename FFPACK::RNSInteger< RNS >::Element_ptr y, const size_t incy, typename FFPACK::RNSInteger< RNS >::Element_ptr A, const size_t lda, MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
template<typename RNS >
void fger (const FFPACK::RNSIntegerMod< RNS > &F, const size_t M, const size_t N, const typename FFPACK::RNSIntegerMod< RNS >::Element alpha, typename FFPACK::RNSIntegerMod< RNS >::Element_ptr x, const size_t incx, typename FFPACK::RNSIntegerMod< RNS >::Element_ptr y, const size_t incy, typename FFPACK::RNSIntegerMod< RNS >::Element_ptr A, const size_t lda, MMHelper< FFPACK::RNSIntegerMod< RNS >, MMHelperAlgo::Classic > &H)
 
template<class Field >
void freduce (const Field &F, const size_t n, typename Field::ConstElement_ptr Y, const size_t incY, typename Field::Element_ptr X, const size_t incX)
 freduce $x \gets  y mod F$. More...
 
template<class Field >
void freduce (const Field &F, const size_t n, typename Field::Element_ptr X, const size_t incX)
 freduce $x \gets  x mod F$. More...
 
template<class Field >
void freduce_constoverride (const Field &F, const size_t m, typename Field::ConstElement_ptr A, const size_t incX)
 
template<class Field , class ConstOtherElement_ptr >
void finit (const Field &F, const size_t n, ConstOtherElement_ptr Y, const size_t incY, typename Field::Element_ptr X, const size_t incX)
 
template<class Field >
void finit (const Field &F, const size_t n, typename Field::Element_ptr X, const size_t incX)
 finit Initializes X in F$. More...
 
template<class Field >
void freduce (const Field &F, const size_t m, const size_t n, typename Field::Element_ptr A, const size_t lda)
 freduce $A \gets  A mod F$. More...
 
template<class Field >
void freduce (const Field &F, const FFLAS_UPLO uplo, const size_t N, typename Field::Element_ptr A, const size_t lda)
 freduce for square symmetric matrices More...
 
template<class Field >
void pfreduce (const Field &F, const size_t m, const size_t n, typename Field::Element_ptr A, const size_t lda, const size_t numths)
 
template<class Field >
void freduce (const Field &F, const size_t m, const size_t n, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr A, const size_t lda)
 freduce $A \gets  B mod F$. More...
 
template<class Field >
void freduce_constoverride (const Field &F, const size_t m, const size_t n, typename Field::ConstElement_ptr A, const size_t lda)
 
template<class Field , class OtherElement_ptr >
void finit (const Field &F, const size_t m, const size_t n, const OtherElement_ptr B, const size_t ldb, typename Field::Element_ptr A, const size_t lda)
 finit $A \gets  B mod F$. More...
 
template<class Field >
void finit (const Field &F, const size_t m, const size_t n, typename Field::Element_ptr A, const size_t lda)
 
template<>
void freduce (const FFPACK::RNSIntegerMod< FFPACK::rns_double > &F, const size_t n, FFPACK::RNSIntegerMod< FFPACK::rns_double >::Element_ptr A, size_t inc)
 
template<>
void freduce (const FFPACK::RNSIntegerMod< FFPACK::rns_double > &F, const size_t m, const size_t n, FFPACK::rns_double::Element_ptr A, size_t lda)
 
template<class Field >
bool freivalds (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, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::ConstElement_ptr C, const size_t ldc)
 freivalds: Freivalds GEneral Matrix Multiply Random Check. More...
 
template<class Field >
void fscalin (const Field &F, const size_t n, const typename Field::Element alpha, typename Field::Element_ptr X, const size_t incX)
 fscalin $x \gets \alpha \cdot x$. More...
 
template<class Field >
void fscal (const Field &F, const size_t n, const typename Field::Element alpha, typename Field::ConstElement_ptr X, const size_t incX, typename Field::Element_ptr Y, const size_t incY)
 fscal $y \gets \alpha \cdot x$. More...
 
template<>
void fscal (const Givaro::DoubleDomain &, const size_t N, const Givaro::DoubleDomain::Element a, Givaro::DoubleDomain::ConstElement_ptr x, const size_t incx, Givaro::DoubleDomain::Element_ptr y, const size_t incy)
 
template<>
void fscal (const Givaro::FloatDomain &, const size_t N, const Givaro::FloatDomain::Element a, Givaro::FloatDomain::ConstElement_ptr x, const size_t incx, Givaro::FloatDomain::Element_ptr y, const size_t incy)
 
template<>
void fscalin (const Givaro::DoubleDomain &, const size_t N, const Givaro::DoubleDomain::Element a, Givaro::DoubleDomain::Element_ptr y, const size_t incy)
 
template<>
void fscalin (const Givaro::FloatDomain &, const size_t N, const Givaro::FloatDomain::Element a, Givaro::FloatDomain::Element_ptr y, const size_t incy)
 
template<class Field >
void fscalin (const Field &F, const size_t m, const size_t n, const typename Field::Element alpha, typename Field::Element_ptr A, const size_t lda)
 fscalin $A \gets a \cdot A$. More...
 
template<class Field >
void fscal (const Field &F, const size_t m, const size_t n, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::Element_ptr B, const size_t ldb)
 fscal $B \gets a \cdot A$. More...
 
template<>
void fscalin (const FFPACK::RNSInteger< FFPACK::rns_double > &F, const size_t n, const FFPACK::rns_double::Element alpha, FFPACK::rns_double::Element_ptr A, const size_t inc)
 
template<>
void fscal (const FFPACK::RNSInteger< FFPACK::rns_double > &F, const size_t n, const FFPACK::rns_double::Element alpha, FFPACK::rns_double::ConstElement_ptr A, const size_t Ainc, FFPACK::rns_double::Element_ptr B, const size_t Binc)
 
template<>
void fscalin (const FFPACK::RNSInteger< FFPACK::rns_double > &F, const size_t m, const size_t n, const FFPACK::rns_double::Element alpha, FFPACK::rns_double::Element_ptr A, const size_t lda)
 
template<>
void fscal (const FFPACK::RNSInteger< FFPACK::rns_double > &F, const size_t m, const size_t n, const FFPACK::rns_double::Element alpha, FFPACK::rns_double::ConstElement_ptr A, const size_t lda, FFPACK::rns_double::Element_ptr B, const size_t ldb)
 
template<>
void fscalin (const FFPACK::RNSIntegerMod< FFPACK::rns_double > &F, const size_t n, const typename FFPACK::RNSIntegerMod< FFPACK::rns_double >::Element alpha, typename FFPACK::RNSIntegerMod< FFPACK::rns_double >::Element_ptr A, const size_t inc)
 
template<>
void fscal (const FFPACK::RNSIntegerMod< FFPACK::rns_double > &F, const size_t n, const FFPACK::rns_double::Element alpha, FFPACK::rns_double::ConstElement_ptr A, const size_t Ainc, FFPACK::rns_double::Element_ptr B, const size_t Binc)
 
template<>
void fscalin (const FFPACK::RNSIntegerMod< FFPACK::rns_double > &F, const size_t m, const size_t n, const FFPACK::rns_double::Element alpha, FFPACK::rns_double::Element_ptr A, const size_t lda)
 
template<>
void fscal (const FFPACK::RNSIntegerMod< FFPACK::rns_double > &F, const size_t m, const size_t n, const FFPACK::rns_double::Element alpha, FFPACK::rns_double::ConstElement_ptr A, const size_t lda, FFPACK::rns_double::Element_ptr B, const size_t ldb)
 
template<class Field >
Field::Element_ptr fsyr2k (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t n, const size_t k, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc)
 fsyr2k: Symmetric Rank 2K update More...
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t n, const size_t k, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc)
 fsyrk: Symmetric Rank K update More...
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, const ParSeqHelper::Sequential seq)
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::MachineFloatTag >, ParSeqHelper::Sequential > &H)
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DelayedTag > &H)
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::LazyTag > &H)
 
template<class Field , typename Mode >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::DivideAndConquer, Mode > &H)
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DefaultBoundedTag > &H)
 
Givaro::FloatDomain::Element_ptr fsyrk (const Givaro::FloatDomain &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const Givaro::FloatDomain::Element alpha, Givaro::FloatDomain::ConstElement_ptr A, const size_t lda, const Givaro::FloatDomain::Element beta, Givaro::FloatDomain::Element_ptr C, const size_t ldc, MMHelper< Givaro::FloatDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
Givaro::DoubleDomain::Element_ptr fsyrk (const Givaro::DoubleDomain &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const Givaro::DoubleDomain::Element alpha, Givaro::DoubleDomain::ConstElement_ptr A, const size_t lda, const Givaro::DoubleDomain::Element beta, Givaro::DoubleDomain::Element_ptr C, const size_t ldc, MMHelper< Givaro::DoubleDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &H)
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t n, const size_t k, const typename Field::Element alpha, typename Field::Element_ptr A, const size_t lda, typename Field::ConstElement_ptr D, const size_t incD, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, const size_t threshold=__FFLASFFPACK_FSYRK_THRESHOLD)
 fsyrk: Symmetric Rank K update with diagonal scaling More...
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::Element_ptr A, const size_t lda, typename Field::ConstElement_ptr D, const size_t incD, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, const ParSeqHelper::Sequential seq, const size_t threshold)
 
template<class Field , class Cut , class Param >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::Element_ptr A, const size_t lda, typename Field::ConstElement_ptr D, const size_t incD, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, const ParSeqHelper::Parallel< Cut, Param > par, const size_t threshold)
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t n, const size_t k, const typename Field::Element alpha, typename Field::Element_ptr A, const size_t lda, typename Field::ConstElement_ptr D, const size_t incD, const std::vector< bool > &twoBlock, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, const size_t threshold=__FFLASFFPACK_FSYRK_THRESHOLD)
 fsyrk: Symmetric Rank K update with diagonal scaling More...
 
template<class Field , class FieldTrait >
void computeS1S2 (const Field &F, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element x, const typename Field::Element y, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr S, const size_t lds, typename Field::Element_ptr T, const size_t ldt, MMHelper< Field, MMHelperAlgo::Winograd, FieldTrait > &WH)
 
template<class Field >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, ModeCategories::DelayedTag, ParSeqHelper::Sequential > &H)
 
template<class Field , class Mode >
Field::Element_ptr fsyrk (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, Mode > &H)
 
template<class Field , class FieldTrait >
Field::Element_ptr fsyrk_strassen (const Field &F, const FFLAS_UPLO uplo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element y1, const typename Field::Element y2, const typename Field::Element alpha, typename Field::Element_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, FieldTrait > &WH)
 
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::ConstElement_ptr A, const size_t lda, typename Field::Element_ptr B, const size_t ldb)
 ftrmm: TRiangular Matrix Multiply. More...
 
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::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc)
 ftrmm: TRiangular Matrix Multiply with 3 operands Computes $ C \gets \alpha \mathrm{op}(A) B + beta C$ or $C \gets \alpha B \mathrm{op}(A) + beta C$. More...
 
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_ptr A, const size_t lda, typename Field::Element_ptr B, const size_t ldb)
 
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_ptr A, const size_t lda, typename Field::Element_ptr B, const size_t ldb, const ParSeqHelper::Sequential &PSH)
 
template<class Field , class Cut , class Param >
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_ptr A, const size_t lda, typename Field::Element_ptr B, const size_t ldb, const ParSeqHelper::Parallel< Cut, Param > &PSH)
 
template<class Field , class ParSeqTrait = ParSeqHelper::Sequential>
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_ptr A, const size_t lda, typename Field::Element_ptr B, const size_t ldb, TRSMHelper< StructureHelper::Recursive, ParSeqTrait > &H)
 
void ftrsm (const Givaro::Modular< Givaro::Integer > &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 Givaro::Integer alpha, const Givaro::Integer *A, const size_t lda, Givaro::Integer *B, const size_t ldb)
 
void cblas_imptrsm (const enum FFLAS_ORDER Order, const enum FFLAS_SIDE Side, const enum FFLAS_UPLO Uplo, const enum FFLAS_TRANSPOSE TransA, const enum FFLAS_DIAG Diag, const int M, const int N, const FFPACK::rns_double_elt alpha, FFPACK::rns_double_elt_cstptr A, const int lda, FFPACK::rns_double_elt_ptr B, const int ldb)
 
template<class Field >
void ftrsv (const Field &F, const FFLAS_UPLO Uplo, const FFLAS_TRANSPOSE TransA, const FFLAS_DIAG Diag, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::Element_ptr X, int incX)
 ftrsv: TRiangular System solve with Vector Computes $ X \gets \mathrm{op}(A^{-1}) X$ More...
 
void igemm_ (const enum FFLAS_ORDER Order, const enum FFLAS_TRANSPOSE TransA, const enum FFLAS_TRANSPOSE TransB, const size_t M, const size_t N, const size_t K, const int64_t alpha, const int64_t *A, const size_t lda, const int64_t *B, const size_t ldb, const int64_t beta, int64_t *C, const size_t ldc)
 
template<class Field , class OtherElement_ptr >
void finit (const Field &F, const size_t n, const OtherElement_ptr Y, const size_t incY, typename Field::Element_ptr X, const size_t incX)
 finit $x \gets  y mod F$. More...
 
template<class Field , class OtherElement_ptr >
void fconvert (const Field &F, const size_t n, OtherElement_ptr X, const size_t incX, typename Field::ConstElement_ptr Y, const size_t incY)
 fconvert $x \gets  y mod F$. More...
 
template<class Field >
void fnegin (const Field &F, const size_t n, typename Field::Element_ptr X, const size_t incX)
 fnegin $x \gets - x$. More...
 
template<class Field >
void fneg (const Field &F, const size_t n, typename Field::ConstElement_ptr Y, const size_t incY, typename Field::Element_ptr X, const size_t incX)
 fneg $x \gets - y$. More...
 
template<class Field >
void fzero (const Field &F, const size_t n, typename Field::Element_ptr X, const size_t incX)
 fzero : $A \gets 0 $. More...
 
template<class Field , class RandIter >
void frand (const Field &F, RandIter &G, const size_t n, typename Field::Element_ptr X, const size_t incX)
 frand : $A \gets random $. More...
 
template<class Field >
bool fiszero (const Field &F, const size_t n, typename Field::ConstElement_ptr X, const size_t incX)
 fiszero : test $X = 0 $. More...
 
template<class Field >
bool fequal (const Field &F, const size_t n, typename Field::ConstElement_ptr X, const size_t incX, typename Field::ConstElement_ptr Y, const size_t incY)
 fequal : test $X = Y $. More...
 
template<class Field >
void faxpby (const Field &F, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY)
 faxpby : $y \gets \alpha \cdot x + \beta \cdot y$. More...
 
template<typename Field , class Cut , class Param >
Field::Element fdot (const Field &F, const size_t N, typename Field::ConstElement_ptr X, const size_t incX, typename Field::ConstElement_ptr Y, const size_t incY, const ParSeqHelper::Parallel< Cut, Param > par)
 
template<class Field >
void fswap (const Field &F, const size_t N, typename Field::Element_ptr X, const size_t incX, typename Field::Element_ptr Y, const size_t incY)
 fswap: $ X \leftrightarrow Y$. More...
 
template<class Field >
void fzero (const Field &F, const size_t m, const size_t n, typename Field::Element_ptr A, const size_t lda)
 fzero : $A \gets 0 $. More...
 
template<class Field >
void fzero (const Field &F, const FFLAS_UPLO shape, const FFLAS_DIAG diag, const size_t n, typename Field::Element_ptr A, const size_t lda)
 fzero : $A \gets 0 $ for a triangular matrix. More...
 
template<class Field , class RandIter >
void frand (const Field &F, RandIter &G, const size_t m, const size_t n, typename Field::Element_ptr A, const size_t lda)
 frand : $A \gets random $. More...
 
template<class Field >
bool fequal (const Field &F, const size_t m, const size_t n, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb)
 fequal : test $A = B $. More...
 
template<class Field >
bool fiszero (const Field &F, const size_t m, const size_t n, typename Field::ConstElement_ptr A, const size_t lda)
 fiszero : test $A = 0 $. More...
 
template<class Field >
void fidentity (const Field &F, const size_t m, const size_t n, typename Field::Element_ptr A, const size_t lda, const typename Field::Element &d)
 creates a diagonal matrix More...
 
template<class Field >
void fidentity (const Field &F, const size_t m, const size_t n, typename Field::Element_ptr A, const size_t lda)
 creates a diagonal matrix More...
 
template<class Field , class OtherElement_ptr >
void finit (const Field &F, const size_t m, const size_t n, typename Field::Element_ptr A, const size_t lda)
 finit Initializes A in F$. More...
 
template<class Field , class OtherElement_ptr >
void fconvert (const Field &F, const size_t m, const size_t n, OtherElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb)
 fconvert $A \gets  B mod F$. More...
 
template<class Field >
void fnegin (const Field &F, const size_t m, const size_t n, typename Field::Element_ptr A, const size_t lda)
 fnegin $A \gets - A$. More...
 
template<class Field >
void fneg (const Field &F, const size_t m, const size_t n, typename Field::ConstElement_ptr B, const size_t ldb, typename Field::Element_ptr A, const size_t lda)
 fneg $A \gets  - B$. More...
 
template<class Field >
void faxpby (const Field &F, const size_t m, const size_t n, const typename Field::Element alpha, typename Field::ConstElement_ptr X, const size_t ldx, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t ldy)
 faxpby : $y \gets \alpha \cdot x + \beta \cdot y$. More...
 
template<class Field >
void fmove (const Field &F, const size_t m, const size_t n, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr B, const size_t ldb)
 fmove : $A \gets B $ and $ B \gets 0$. More...
 
template<class Field >
size_t bitsize (const Field &F, size_t M, size_t N, const typename Field::ConstElement_ptr A, size_t lda)
 bitsize: Computes the largest bitsize of the matrix' coefficients. More...
 
template<>
size_t bitsize< Givaro::ZRing< Givaro::Integer > > (const Givaro::ZRing< Givaro::Integer > &F, size_t M, size_t N, const Givaro::Integer *A, size_t lda)
 
template<class Field >
void ftrmv (const Field &F, const FFLAS_UPLO Uplo, const FFLAS_TRANSPOSE TransA, const FFLAS_DIAG Diag, const size_t N, typename Field::ConstElement_ptr A, const size_t lda, typename Field::Element_ptr X, int incX)
 ftrsm: TRiangular Matrix Vector prodcut Computes $ X \gets \mathrm{op}(A) X$ More...
 
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::ConstElement_ptr A, const size_t lda, typename Field::Element_ptr B, const size_t ldb)
 ftrsm: TRiangular System solve with Matrix. More...
 
template<class Field , typename FieldTrait >
Field::Element_ptr fsyrk_strassen (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, const typename Field::Element y1, const typename Field::Element y2, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, FieldTrait > &H)
 
template<typename Field >
Field::Element_ptr pfgemm (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, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, size_t numthreads=0)
 
template<class Field >
Field::Element * pfgemm_1D_rec (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_ptr A, const size_t lda, const typename Field::Element_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, size_t seuil)
 
template<class Field >
Field::Element * pfgemm_2D_rec (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_ptr A, const size_t lda, const typename Field::Element_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, size_t seuil)
 
template<class Field >
Field::Element * pfgemm_3D_rec (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_ptr A, const size_t lda, const typename Field::Element_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, size_t seuil, size_t *x)
 
template<class Field >
Field::Element_ptr pfgemm_3D_rec2 (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_ptr A, const size_t lda, const typename Field::Element_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, size_t seuil, size_t *x)
 
template<class Field , class ModeTrait , class Strat , class Param >
std::enable_if<!std::is_same< ModeTrait, ModeCategories::ConvertTo< ElementCategories::RNSElementTag > >::value, typenameField::Element_ptr >::type fgemm (const Field &F, const FFLAS::FFLAS_TRANSPOSE ta, const FFLAS::FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, ModeTrait, ParSeqHelper::Parallel< Strat, Param > > &H)
 
template<class Field , class Cut , class Param >
Field::Element_ptr ftrsm (const Field &F, const FFLAS::FFLAS_SIDE Side, const FFLAS::FFLAS_UPLO UpLo, const FFLAS::FFLAS_TRANSPOSE TA, const FFLAS::FFLAS_DIAG Diag, const size_t m, const size_t n, const typename Field::Element alpha, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr B, const size_t ldb, TRSMHelper< StructureHelper::Iterative, ParSeqHelper::Parallel< Cut, Param > > &H)
 
template<class Field , class Cut , class Param >
Field::Element_ptr ftrsm (const Field &F, const FFLAS::FFLAS_SIDE Side, const FFLAS::FFLAS_UPLO UpLo, const FFLAS::FFLAS_TRANSPOSE TA, const FFLAS::FFLAS_DIAG Diag, const size_t m, const size_t n, const typename Field::Element alpha, typename Field::Element_ptr A, const size_t lda, typename Field::Element_ptr B, const size_t ldb, TRSMHelper< StructureHelper::Hybrid, ParSeqHelper::Parallel< Cut, Param > > &H)
 
template<class Field , class SM >
void fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, const typename Field::Element &beta, typename Field::Element_ptr y)
 
template<class Field , class SM >
void fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, const typename Field::Element &beta, typename Field::Element_ptr y, int ldy)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::COO > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::COO_ZO > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::COO > &A)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::COO_ZO > &A)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::CSR > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::CSR_ZO > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::CSR > &A)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::CSR_ZO > &A)
 
template<class Field >
std::ostream & sparse_print (std::ostream &os, const Sparse< Field, SparseMatrix_t::CSR > &A)
 
template<class IndexT >
void sparse_init (const Givaro::Modular< Givaro::Integer > &F, Sparse< Givaro::Modular< Givaro::Integer >, SparseMatrix_t::CSR > &A, const IndexT *row, const IndexT *col, Givaro::Integer *dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class IndexT >
void sparse_init (const Givaro::ZRing< Givaro::Integer > &F, Sparse< Givaro::ZRing< Givaro::Integer >, SparseMatrix_t::CSR_ZO > &A, const IndexT *row, const IndexT *col, Givaro::Integer *dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class IndexT , size_t RECINT_SIZE>
void sparse_init (const Givaro::ZRing< RecInt::rmint< RECINT_SIZE > > &F, Sparse< Givaro::ZRing< RecInt::rmint< RECINT_SIZE > >, SparseMatrix_t::CSR_ZO > &A, const IndexT *row, const IndexT *col, typename Givaro::ZRing< RecInt::rmint< RECINT_SIZE > >::Element_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class IndexT , size_t RECINT_SIZE>
void sparse_init (const Givaro::ZRing< RecInt::rmint< RECINT_SIZE > > &F, Sparse< Givaro::ZRing< RecInt::rmint< RECINT_SIZE > >, SparseMatrix_t::CSR > &A, const IndexT *row, const IndexT *col, typename Givaro::ZRing< RecInt::rmint< RECINT_SIZE > >::Element_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::CSR_HYB > &A)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::CSR_HYB > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::ELL > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::ELL_ZO > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::ELL > &A)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::ELL_ZO > &A)
 
template<class Field >
void fspmv (const Field &F, const Sparse< Field, SparseMatrix_t::ELL_R > &A, typename Field::ConstElement_ptr x, const typename Field::Element &beta, typename Field::Element_ptr y)
 
template<class Field >
void fspmv (const Field &F, const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &A, typename Field::ConstElement_ptr x, const typename Field::Element &beta, typename Field::Element_ptr y)
 
template<class Field >
void fspmm (const Field &F, const Sparse< Field, SparseMatrix_t::ELL_R > &A, const size_t blockSize, const typename Field::Element_ptr &x, const int ldx, const typename Field::Element &beta, typename Field::Element_ptr &y, const int ldy)
 
template<class Field >
void fspmm (const Field &F, const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &A, const size_t blockSize, const typename Field::Element_ptr &x, const int ldx, const typename Field::Element &beta, typename Field::Element_ptr &y, const int ldy)
 
template<class Field >
void fspmv (const Field &F, const Sparse< Field, SparseMatrix_t::ELL_R > &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::GenericTag)
 
template<class Field >
void fspmv (const Field &F, const Sparse< Field, SparseMatrix_t::ELL_R > &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::UnparametricTag)
 
template<class Field >
void fspmv (const Field &F, const Sparse< Field, SparseMatrix_t::ELL_R > &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::ModularTag)
 
template<class Field >
void fspmv (const Field &F, const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::GenericTag)
 
template<class Field >
void fspmv (const Field &F, const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::UnparametricTag)
 
template<class Field >
void fspmv (const Field &F, const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::ModularTag)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::ELL_R > &A)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &A)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::ELL_R > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::ELL_R_ZO > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::ELL_simd > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::ELL_simd_ZO > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::ELL_simd > &A)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::ELL_simd_ZO > &A)
 
template<class Field >
void sparse_print (const Sparse< Field, SparseMatrix_t::ELL_simd > &A)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::HYB_ZO > &A)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::HYB_ZO > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<typename _Field >
std::ostream & operator<< (std::ostream &os, const Sparse< _Field, SparseMatrix_t::HYB_ZO > &A)
 
template<class Field , bool sorted = true, bool read_integer = false>
void readSmsFormat (const std::string &path, const Field &f, index_t *&row, index_t *&col, typename Field::Element_ptr &val, index_t &rowdim, index_t &coldim, uint64_t &nnz)
 
template<class Field >
void readSprFormat (const std::string &path, const Field &f, index_t *&row, index_t *&col, typename Field::Element_ptr &val, index_t &rowdim, index_t &coldim, uint64_t &nnz)
 
template<class T >
std::enable_if< std::is_integral< T >::value, int > getDataType ()
 
template<class T >
std::enable_if< std::is_floating_point< T >::value, int > getDataType ()
 
template<class T >
std::enable_if< std::is_same< T, mpz_t >::value, int > getDataType ()
 
template<class T >
int getDataType ()
 
template<class Field >
void readMachineType (const Field &F, typename Field::Element &modulo, typename Field::Element_ptr val, std::ifstream &file, const uint64_t dims, const mask_t data_type, const mask_t field_desc)
 
template<class Field >
void readDnsFormat (const std::string &path, const Field &F, index_t &rowdim, index_t &coldim, typename Field::Element_ptr &val)
 
template<class Field >
void writeDnsFormat (const std::string &path, const Field &F, const index_t &rowdim, const index_t &coldim, typename Field::Element_ptr A, index_t ldA)
 
template<class Field >
void fspmv (const Field &F, const Sparse< Field, SparseMatrix_t::SELL_ZO > &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::ModularTag)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::SELL > &A)
 
template<class Field >
void sparse_delete (const Sparse< Field, SparseMatrix_t::SELL_ZO > &A)
 
template<class Field >
void sparse_print (const Sparse< Field, SparseMatrix_t::SELL > &A)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::SELL > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz, uint64_t sigma=0)
 
template<class Field , class IndexT >
void sparse_init (const Field &F, Sparse< Field, SparseMatrix_t::SELL_ZO > &A, const IndexT *row, const IndexT *col, typename Field::ConstElement_ptr dat, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class It >
double computeDeviation (It begin, It end)
 
template<class Field >
StatsMatrix getStat (const Field &F, const index_t *row, const index_t *col, typename Field::ConstElement_ptr val, uint64_t rowdim, uint64_t coldim, uint64_t nnz)
 
template<class Field , class enable = void>
Field::Residu_t maxCardinality ()
 
template<>
uint64_t maxCardinality< Givaro::Modular< int64_t > > ()
 
template<>
uint32_t maxCardinality< Givaro::Modular< int32_t > > ()
 
template<class Field >
Field::Residu_t minCardinality ()
 
template<>
void fflas_delete (FFPACK::rns_double_elt_ptr A)
 
template<>
void fflas_delete (FFPACK::rns_double_elt_cstptr A)
 
template<>
FFPACK::rns_double_elt_ptr fflas_new (const FFPACK::RNSIntegerMod< FFPACK::rns_double > &F, const size_t m, const Alignment align)
 
template<>
FFPACK::rns_double_elt_ptr fflas_new (const FFPACK::RNSIntegerMod< FFPACK::rns_double > &F, const size_t m, const size_t n, const Alignment align)
 
template<typename RNS >
void finit_rns (const FFPACK::RNSIntegerMod< RNS > &F, const size_t m, const size_t n, size_t k, const Givaro::Integer *B, const size_t ldb, typename RNS::Element_ptr A)
 
template<typename RNS >
void finit_trans_rns (const FFPACK::RNSIntegerMod< RNS > &F, const size_t m, const size_t n, size_t k, const Givaro::Integer *B, const size_t ldb, typename RNS::Element_ptr A)
 
template<typename RNS >
void fconvert_rns (const FFPACK::RNSIntegerMod< RNS > &F, const size_t m, const size_t n, Givaro::Integer alpha, Givaro::Integer *B, const size_t ldb, typename RNS::ConstElement_ptr A)
 
template<typename RNS >
void fconvert_trans_rns (const FFPACK::RNSIntegerMod< RNS > &F, const size_t m, const size_t n, Givaro::Integer alpha, Givaro::Integer *B, const size_t ldb, typename RNS::ConstElement_ptr A)
 
template<>
FFPACK::rns_double_elt_ptr fflas_new (const FFPACK::RNSInteger< FFPACK::rns_double > &F, const size_t m, const Alignment align)
 
template<>
FFPACK::rns_double_elt_ptr fflas_new (const FFPACK::RNSInteger< FFPACK::rns_double > &F, const size_t m, const size_t n, const Alignment align)
 
template<typename RNS >
void finit_rns (const FFPACK::RNSInteger< RNS > &F, const size_t m, const size_t n, size_t k, const Givaro::Integer *B, const size_t ldb, typename FFPACK::RNSInteger< RNS >::Element_ptr A)
 
template<typename RNS >
void fconvert_rns (const FFPACK::RNSInteger< RNS > &F, const size_t m, const size_t n, Givaro::Integer alpha, Givaro::Integer *B, const size_t ldb, typename FFPACK::RNSInteger< RNS >::ConstElement_ptr A)
 
template INST_OR_DECL void freduce (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, FFLAS_ELT *X, const size_t incX)
 freduce $x \gets  x mod F$. More...
 
template INST_OR_DECL void freduce (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, const FFLAS_ELT *Y, const size_t incY, FFLAS_ELT *X, const size_t incX)
 freduce $x \gets  y mod F$. More...
 
template INST_OR_DECL void finit (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, const FFLAS_ELT *Y, const size_t incY, FFLAS_ELT *X, const size_t incX)
 finit $x \gets  y mod F$. More...
 
template INST_OR_DECL void fconvert (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, FFLAS_ELT *X, const size_t incX, const FFLAS_ELT *Y, const size_t incY)
 fconvert $x \gets  y mod F$. More...
 
template INST_OR_DECL void fnegin (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, FFLAS_ELT *X, const size_t incX)
 fnegin $x \gets - x$. More...
 
template INST_OR_DECL void fneg (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, const FFLAS_ELT *Y, const size_t incY, FFLAS_ELT *X, const size_t incX)
 fneg $x \gets - y$. More...
 
template INST_OR_DECL void fzero (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, FFLAS_ELT *X, const size_t incX)
 fzero : $A \gets 0 $. More...
 
template INST_OR_DECL bool fiszero (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, const FFLAS_ELT *X, const size_t incX)
 fiszero : test $X = 0 $. More...
 
template INST_OR_DECL bool fequal (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, const FFLAS_ELT *X, const size_t incX, const FFLAS_ELT *Y, const size_t incY)
 fequal : test $X = Y $. More...
 
template INST_OR_DECL void fassign (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t N, const FFLAS_ELT *Y, const size_t incY, FFLAS_ELT *X, const size_t incX)
 fassign : $x \gets y $. More...
 
template INST_OR_DECL void fscalin (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, const FFLAS_ELT alpha, FFLAS_ELT *X, const size_t incX)
 fscalin $x \gets \alpha \cdot x$. More...
 
template INST_OR_DECL void fscal (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t n, const FFLAS_ELT alpha, const FFLAS_ELT *X, const size_t incX, FFLAS_ELT *Y, const size_t incY)
 fscal $y \gets \alpha \cdot x$. More...
 
template INST_OR_DECL void faxpy (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t N, const FFLAS_ELT alpha, const FFLAS_ELT *X, const size_t incX, FFLAS_ELT *Y, const size_t incY)
 faxpy : $y \gets \alpha \cdot x + y$. More...
 
template INST_OR_DECL FFLAS_ELT fdot (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t N, const FFLAS_ELT *X, const size_t incX, const FFLAS_ELT *Y, const size_t incY)
 faxpby : $y \gets \alpha \cdot x + \beta \cdot y$. More...
 
template INST_OR_DECL void fswap (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t N, FFLAS_ELT *X, const size_t incX, FFLAS_ELT *Y, const size_t incY)
 fswap: $ X \leftrightarrow Y$. More...
 
template INST_OR_DECL void fadd (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t N, const FFLAS_ELT *A, const size_t inca, const FFLAS_ELT *B, const size_t incb, FFLAS_ELT *C, const size_t incc)
 
template INST_OR_DECL void fsub (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t N, const FFLAS_ELT *A, const size_t inca, const FFLAS_ELT *B, const size_t incb, FFLAS_ELT *C, const size_t incc)
 
template INST_OR_DECL void faddin (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t N, const FFLAS_ELT *B, const size_t incb, FFLAS_ELT *C, const size_t incc)
 
template INST_OR_DECL void fadd (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t N, const FFLAS_ELT *A, const size_t inca, const FFLAS_ELT alpha, const FFLAS_ELT *B, const size_t incb, FFLAS_ELT *C, const size_t incc)
 
template INST_OR_DECL void fassign (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, const FFLAS_ELT *B, const size_t ldb, FFLAS_ELT *A, const size_t lda)
 fassign : $A \gets B $. More...
 
template INST_OR_DECL void fzero (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, FFLAS_ELT *A, const size_t lda)
 fzero : $A \gets 0 $. More...
 
template INST_OR_DECL bool fequal (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, const FFLAS_ELT *A, const size_t lda, const FFLAS_ELT *B, const size_t ldb)
 fequal : test $A = B $. More...
 
template INST_OR_DECL bool fiszero (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, const FFLAS_ELT *A, const size_t lda)
 fiszero : test $A = 0 $. More...
 
template INST_OR_DECL void fidentity (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, FFLAS_ELT *A, const size_t lda, const FFLAS_ELT &d)
 creates a diagonal matrix More...
 
template INST_OR_DECL void fidentity (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, FFLAS_ELT *A, const size_t lda)
 creates a diagonal matrix More...
 
template INST_OR_DECL void freduce (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, FFLAS_ELT *A, const size_t lda)
 freduce $A \gets  A mod F$. More...
 
template INST_OR_DECL void freduce (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, const FFLAS_ELT *B, const size_t ldb, FFLAS_ELT *A, const size_t lda)
 freduce $A \gets  B mod F$. More...
 
template INST_OR_DECL void finit (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, const FFLAS_ELT *B, const size_t ldb, FFLAS_ELT *A, const size_t lda)
 finit $A \gets  B mod F$. More...
 
template INST_OR_DECL void fnegin (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, FFLAS_ELT *A, const size_t lda)
 fnegin $A \gets - A$. More...
 
template INST_OR_DECL void fneg (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, const FFLAS_ELT *B, const size_t ldb, FFLAS_ELT *A, const size_t lda)
 fneg $A \gets  - B$. More...
 
template INST_OR_DECL void fscalin (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, const FFLAS_ELT alpha, FFLAS_ELT *A, const size_t lda)
 fscalin $A \gets a \cdot A$. More...
 
template INST_OR_DECL void fscal (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, const FFLAS_ELT alpha, const FFLAS_ELT *A, const size_t lda, FFLAS_ELT *B, const size_t ldb)
 fscal $B \gets a \cdot A$. More...
 
template INST_OR_DECL void faxpy (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, const FFLAS_ELT alpha, const FFLAS_ELT *X, const size_t ldx, FFLAS_ELT *Y, const size_t ldy)
 faxpy : $y \gets \alpha \cdot x + y$. More...
 
template INST_OR_DECL void fmove (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t m, const size_t n, FFLAS_ELT *A, const size_t lda, FFLAS_ELT *B, const size_t ldb)
 faxpby : $y \gets \alpha \cdot x + \beta \cdot y$. More...
 
template INST_OR_DECL void fadd (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t M, const size_t N, const FFLAS_ELT *A, const size_t lda, const FFLAS_ELT *B, const size_t ldb, FFLAS_ELT *C, const size_t ldc)
 fadd : matrix addition. More...
 
template INST_OR_DECL void fsub (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t M, const size_t N, const FFLAS_ELT *A, const size_t lda, const FFLAS_ELT *B, const size_t ldb, FFLAS_ELT *C, const size_t ldc)
 fsub : matrix subtraction. More...
 
template INST_OR_DECL void fsubin (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t M, const size_t N, const FFLAS_ELT *B, const size_t ldb, FFLAS_ELT *C, const size_t ldc)
 fsubin C = C - B More...
 
template INST_OR_DECL void fadd (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t M, const size_t N, const FFLAS_ELT *A, const size_t lda, const FFLAS_ELT alpha, const FFLAS_ELT *B, const size_t ldb, FFLAS_ELT *C, const size_t ldc)
 fadd : matrix addition with scaling. More...
 
template INST_OR_DECL void faddin (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t M, const size_t N, const FFLAS_ELT *B, const size_t ldb, FFLAS_ELT *C, const size_t ldc)
 faddin More...
 
template INST_OR_DECL FFLAS_ELTfgemv (const FFLAS_FIELD< FFLAS_ELT > &F, const FFLAS_TRANSPOSE TransA, const size_t M, const size_t N, const FFLAS_ELT alpha, const FFLAS_ELT *A, const size_t lda, const FFLAS_ELT *X, const size_t incX, const FFLAS_ELT beta, FFLAS_ELT *Y, const size_t incY)
 finite prime FFLAS_FIELD<FFLAS_ELT> GEneral Matrix Vector multiplication. More...
 
template INST_OR_DECL void fger (const FFLAS_FIELD< FFLAS_ELT > &F, const size_t M, const size_t N, const FFLAS_ELT alpha, const FFLAS_ELT *x, const size_t incx, const FFLAS_ELT *y, const size_t incy, FFLAS_ELT *A, const size_t lda)
 fger: rank one update of a general matrix More...
 
template INST_OR_DECL void ftrsv (const FFLAS_FIELD< FFLAS_ELT > &F, const FFLAS_UPLO Uplo, const FFLAS_TRANSPOSE TransA, const FFLAS_DIAG Diag, const size_t N, const FFLAS_ELT *A, const size_t lda, FFLAS_ELT *X, int incX)
 ftrsv: TRiangular System solve with Vector Computes $ X \gets \mathrm{op}(A^{-1}) X$ More...
 
template INST_OR_DECL void ftrsm (const FFLAS_FIELD< FFLAS_ELT > &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 FFLAS_ELT alpha, const FFLAS_ELT *A, const size_t lda, FFLAS_ELT *B, const size_t ldb)
 ftrsm: TRiangular System solve with Matrix. More...
 
template INST_OR_DECL void ftrmm (const FFLAS_FIELD< FFLAS_ELT > &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 FFLAS_ELT alpha, const FFLAS_ELT *A, const size_t lda, FFLAS_ELT *B, const size_t ldb)
 ftrmm: TRiangular Matrix Multiply. More...
 
template INST_OR_DECL FFLAS_ELTfgemm (const FFLAS_FIELD< FFLAS_ELT > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const FFLAS_ELT alpha, const FFLAS_ELT *A, const size_t lda, const FFLAS_ELT *B, const size_t ldb, const FFLAS_ELT beta, FFLAS_ELT *C, const size_t ldc)
 fgemm: Field GEneral Matrix Multiply. More...
 
template INST_OR_DECL FFLAS_ELTfgemm (const FFLAS_FIELD< FFLAS_ELT > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const FFLAS_ELT alpha, const FFLAS_ELT *A, const size_t lda, const FFLAS_ELT *B, const size_t ldb, const FFLAS_ELT beta, FFLAS_ELT *C, const size_t ldc, const ParSeqHelper::Sequential seq)
 
template INST_OR_DECL FFLAS_ELTfgemm (const FFLAS_FIELD< FFLAS_ELT > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const FFLAS_ELT alpha, const FFLAS_ELT *A, const size_t lda, const FFLAS_ELT *B, const size_t ldb, const FFLAS_ELT beta, FFLAS_ELT *C, const size_t ldc, const ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::TwoDAdaptive > par)
 
template INST_OR_DECL FFLAS_ELTfgemm (const FFLAS_FIELD< FFLAS_ELT > &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const FFLAS_ELT alpha, const FFLAS_ELT *A, const size_t lda, const FFLAS_ELT *B, const size_t ldb, const FFLAS_ELT beta, FFLAS_ELT *C, const size_t ldc, const ParSeqHelper::Parallel< CuttingStrategy::Block, StrategyParameter::Threads > par)
 
template INST_OR_DECL FFLAS_ELTfsquare (const FFLAS_FIELD< FFLAS_ELT > &F, const FFLAS_TRANSPOSE ta, const size_t n, const FFLAS_ELT alpha, const FFLAS_ELT *A, const size_t lda, const FFLAS_ELT beta, FFLAS_ELT *C, const size_t ldc)
 fsquare: Squares a matrix. More...
 
template<class Cut = CuttingStrategy::Block, class Strat = StrategyParameter::Threads>
void BlockCuts (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t numthreads)
 
template<>
void BlockCuts< CuttingStrategy::Single, StrategyParameter::Threads > (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t numthreads)
 
template<>
void BlockCuts< CuttingStrategy::Row, StrategyParameter::Fixed > (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t numthreads)
 
template<>
void BlockCuts< CuttingStrategy::Row, StrategyParameter::Grain > (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t grainsize)
 
template<>
void BlockCuts< CuttingStrategy::Block, StrategyParameter::Grain > (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t grainsize)
 
template<>
void BlockCuts< CuttingStrategy::Column, StrategyParameter::Fixed > (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t numthreads)
 
template<>
void BlockCuts< CuttingStrategy::Column, StrategyParameter::Grain > (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t grainsize)
 
template<>
void BlockCuts< CuttingStrategy::Block, StrategyParameter::Fixed > (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t numthreads)
 
template<>
void BlockCuts< CuttingStrategy::Row, StrategyParameter::Threads > (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t numthreads)
 
template<>
void BlockCuts< CuttingStrategy::Column, StrategyParameter::Threads > (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t numthreads)
 
template<>
void BlockCuts< CuttingStrategy::Block, StrategyParameter::Threads > (size_t &RBLOCKSIZE, size_t &CBLOCKSIZE, const size_t m, const size_t n, const size_t numthreads)
 
template<class Cut = CuttingStrategy::Block, class Param = StrategyParameter::Threads>
void BlockCuts (size_t &rowBlockSize, size_t &colBlockSize, size_t &lastRBS, size_t &lastCBS, size_t &changeRBS, size_t &changeCBS, size_t &numRowBlock, size_t &numColBlock, size_t m, size_t n, const size_t numthreads)
 
template<class Field >
void pfzero (const Field &F, size_t m, size_t n, typename Field::Element_ptr C, size_t BS=0)
 
template<class Field , class RandIter >
void pfrand (const Field &F, RandIter &G, size_t m, size_t n, typename Field::Element_ptr C, size_t BS=0)
 
template<class Field , class Cut , class Param >
Field::Element & fdot (const Field &F, const size_t N, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, typename Field::Element &d, const ParSeqHelper::Parallel< Cut, Param > par)
 
template<class Field , class AlgoT , class FieldTrait >
Field::Element * pfgemm (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::ConstElement_ptr A, const size_t lda, const typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Block, StrategyParameter::Threads > > &H)
 
template<class Field , class AlgoT , class FieldTrait >
Field::Element * pfgemm (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::ConstElement_ptr AA, const size_t lda, const typename Field::ConstElement_ptr BB, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::ThreeDAdaptive > > &H)
 
template<class Field , class AlgoT , class FieldTrait >
Field::Element * pfgemm (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::ConstElement_ptr AA, const size_t lda, const typename Field::ConstElement_ptr BB, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::TwoDAdaptive > > &H)
 
template<class Field , class AlgoT , class FieldTrait >
Field::Element * pfgemm (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::ConstElement_ptr AA, const size_t lda, const typename Field::ConstElement_ptr BB, const size_t ldb, const typename Field::Element beta, typename Field::Element *C, const size_t ldc, MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::TwoD > > &H)
 
template<class Field , class AlgoT , class FieldTrait >
Field::Element_ptr pfgemm (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::ConstElement_ptr A, const size_t lda, const typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::ThreeD > > &H)
 
template<class Field , class AlgoT , class FieldTrait >
Field::Element * pfgemm (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::ConstElement_ptr A, const size_t lda, const typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::ThreeDInPlace > > &H)
 
template<class Field , class AlgoT , class FieldTrait >
Field::Element_ptr fgemv (const Field &F, const FFLAS_TRANSPOSE ta, const size_t m, const size_t n, const typename Field::Element alpha, const typename Field::ConstElement_ptr A, const size_t lda, const typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY, MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::Threads > > &H)
 
template<class Field , class AlgoT , class FieldTrait , class Cut >
Field::Element_ptr fgemv (const Field &F, const FFLAS_TRANSPOSE ta, const size_t m, const size_t n, const typename Field::Element alpha, const typename Field::ConstElement_ptr A, const size_t lda, const typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY, MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Row, Cut > > &H)
 
void parseArguments (int argc, char **argv, Argument *args, bool printDefaults=true)
 
char * getArgumentValue (int argc, char **argv, int i)
 Get the value of an argument and avoid core dump when no value was given after an argument. More...
 
std::ostream & writeCommandString (std::ostream &os, Argument *args, const char *programName=nullptr)
 writes the values of all arguments, preceded by the programName More...
 
template<class Field >
std::ostream & WriteMatrix (std::ostream &c, const Field &F, size_t m, size_t n, typename Field::ConstElement_ptr A, size_t lda, FFLAS_FORMAT format, bool column_major)
 WriteMatrix: write a matrix to an output stream. More...
 
void preamble (std::ifstream &ifs, FFLAS_FORMAT &format)
 
template<class Field >
Field::Element_ptr ReadMatrix (std::ifstream &ifs, Field &F, size_t &m, size_t &n, typename Field::Element_ptr &A, FFLAS_FORMAT format=FflasAuto)
 ReadMatrix: read a matrix from an input stream. More...
 
template<class Field >
Field::Element_ptr ReadMatrix (const std::string &matrix_file, Field &F, size_t &m, size_t &n, typename Field::Element_ptr &A, FFLAS_FORMAT format=FflasAuto)
 ReadMatrix: read a matrix from a file. More...
 
template<class Field >
void WriteMatrix (std::string &matrix_file, const Field &F, int m, int n, typename Field::ConstElement_ptr A, size_t lda, FFLAS_FORMAT format=FflasDense, bool column_major=false)
 WriteMatrix: write a matrix to a file. More...
 
std::ostream & WritePermutation (std::ostream &c, const size_t *P, size_t N)
 WritePermutation: write a permutation matrix to an output stream. More...
 
template<class Element >
bool alignable ()
 
template<>
bool alignable< Givaro::Integer * > ()
 
template<class Field >
Field::Element_ptr fflas_new (const Field &F, const size_t m, const Alignment align=Alignment::DEFAULT)
 
template<class Field >
Field::Element_ptr fflas_new (const Field &F, const size_t m, const size_t n, const Alignment align=Alignment::DEFAULT)
 
template<class Element >
Element * fflas_new (const size_t m, const Alignment align=Alignment::DEFAULT)
 
template<class Element_ptr >
void fflas_delete (Element_ptr A)
 
template<class Ptr , class ... Args>
void fflas_delete (Ptr p, Args ... args)
 
void prefetch (const int64_t *)
 
void getTLBSize (int &tlb)
 
void queryCacheSizes (int &l1, int &l2, int &l3)
 
int queryL1CacheSize ()
 
int queryTopLevelCacheSize ()
 
uint64_t getSeed ()
 
template<class wide_T , class pack_T , int Nb>
void pack_word (pack_T *packed, const wide_T *words, int32_t stride, Packer< pack_T, Nb > &packer)
 
template<class wide_T >
void pack_word (double *packed, const wide_T *words, int32_t stride, Packer< double, 2 > &packer)
 
template<class wide_T , class pack_T , int Nb>
void pack_word_part (pack_T *packed, int32_t nb, const wide_T *words, int32_t stride, Packer< pack_T, Nb > &packer)
 
template<class wide_T >
void pack_word_part (double *packed, int32_t nb, const wide_T *words, int32_t stride, Packer< double, 2 > &packer)
 
template<class wide_T , class pack_T , int Nb>
void unpack_word (wide_T *words, int32_t stride, const pack_T *packed, Packer< pack_T, Nb > &packer)
 
template<class wide_T >
void unpack_word (wide_T *words, int32_t stride, const double *packed, Packer< double, 2 > &packer)
 
template<class wide_T , class pack_T , int Nb>
void unpack_word_part (wide_T *words, int32_t stride, const pack_T *packed, int32_t nb, Packer< pack_T, Nb > &packer)
 
template<class wide_T >
void unpack_word_part (wide_T *words, int32_t stride, const double *packed, int32_t nb, Packer< double, 2 > &packer)
 
template<class wide_T , class pack_T , int Nb, bool row_packed>
void pack_matrix (pack_T *packed, int32_t row_p, int32_t col_p, int32_t ldm_p, const wide_T *elemts, int32_t row_e, int32_t col_e, int32_t ldm_e, Packer< pack_T, Nb > &packer)
 
template<class wide_T , class pack_T , int Nb, bool row_packed>
void unpack_matrix (wide_T *elemts, int32_t row_e, int32_t col_e, int32_t ldm_e, const pack_T *packed, int32_t row_p, int32_t col_p, int32_t ldm_p, Packer< pack_T, Nb > &packer)
 
template<class Field , bool left_compress>
void fgemm_compressed (const Field &F, int m, int n, int k, const typename Field::Element *A, int lda, const typename Field::Element *B, int ldb, typename Field::Element *C, int ldc)
 
template<class Field >
void finit_fuzzy (Field &F, size_t m, size_t n, double *C, size_t ldc)
 
void add (const size_t m, const size_t n, double a, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc)
 
void subadd (const size_t m, const size_t n, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc)
 
void negadd (const size_t m, const size_t n, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc)
 
void addsub (const size_t m, const size_t n, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc)
 
template<class Field >
void addscalinf (const Field &F, const size_t m, const size_t n, const double *B, const size_t ldb, double e, double *C, const size_t ldc)
 
template<class Field >
void subscalinf (const Field &F, const size_t m, const size_t n, const double *B, const size_t ldb, double e, double *C, const size_t ldc)
 
template<class Field >
void subscal (const Field &F, const size_t m, const size_t n, const double *D, const size_t ldd, const double *B, const size_t ldb, double e, double *C, const size_t ldc)
 
template<class Field >
void addscal (const Field &F, const size_t m, const size_t n, const double *D, const size_t ldd, const double *B, const size_t ldb, double e, double *C, const size_t ldc)
 
template<class Field >
void subscalacc (const Field &F, const size_t m, const size_t n, const double *D, const size_t ldd, const double *B, const size_t ldb, double e, double *C, const size_t ldc)
 
template<class Field >
double * gemm_fflas (const Field &F, const size_t m, const size_t n, const size_t k, const double *A, size_t lda, const double *B, size_t ldb, double *C, size_t ldc, int rec=0)
 

Typedef Documentation

◆ Checker_fgemm

◆ Checker_ftrsm

◆ ForceCheck_fgemm

◆ ForceCheck_ftrsm

◆ ZOSparseMatrix

using ZOSparseMatrix = std::true_type

◆ NotZOSparseMatrix

using NotZOSparseMatrix = std::false_type

◆ SimdSparseMatrix

using SimdSparseMatrix = std::true_type

◆ NoSimdSparseMatrix

using NoSimdSparseMatrix = std::false_type

◆ MKLSparseMatrixFormat

using MKLSparseMatrixFormat = std::true_type

◆ NotMKLSparseMatrixFormat

using NotMKLSparseMatrixFormat = std::false_type

◆ has_plus

using has_plus = typename std::conditional<std::is_arithmetic<T>::value, std::true_type, has_plus_impl<T> >::type

◆ has_minus

using has_minus = typename std::conditional<std::is_arithmetic<T>::value, std::true_type, has_minus_impl<T> >::type

◆ has_equal

using has_equal = typename std::conditional<std::is_arithmetic<T>::value, std::true_type, std::is_copy_assignable<T> >::type

◆ has_plus_eq

using has_plus_eq = typename std::conditional<std::is_arithmetic<T>::value, std::true_type, has_plus_eq_impl<T> >::type

◆ has_minus_eq

using has_minus_eq = typename std::conditional<std::is_arithmetic<T>::value, std::true_type, has_minus_eq_impl<T> >::type

◆ has_mul

using has_mul = typename std::conditional<std::is_arithmetic<T>::value, std::true_type, has_mul_impl<T> >::type

◆ has_mul_eq

using has_mul_eq = typename std::conditional<std::is_arithmetic<T>::value, std::true_type, has_mul_eq_impl<T> >::type

◆ Timer

typedef Givaro::Timer Timer

◆ BaseTimer

typedef Givaro::BaseTimer BaseTimer

◆ UserTimer

typedef Givaro::UserTimer UserTimer

◆ SysTimer

typedef Givaro::SysTimer SysTimer

Enumeration Type Documentation

◆ FFLAS_ORDER

Storage by row or col ?

Enumerator
FflasRowMajor 

row major

FflasColMajor 

col major

◆ FFLAS_TRANSPOSE

Is matrix transposed ?

Enumerator
FflasNoTrans 

Matrix is not transposed.

FflasTrans 

Matrix is transposed.

◆ FFLAS_UPLO

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$)

FflasLeftTri 

Triangular matrix is Left triangular (if $j>n-i-1$ then $T_{i,j} = 0$)

FflasRightTri 

Triangular matrix is Right triangular (if $j<n-i-1$ then $T_{i,j} = 0$)

◆ FFLAS_DIAG

enum FFLAS_DIAG

Is the triangular matrix implicitly unit diagonal ?

Enumerator
FflasNonUnit 

Triangular matrix has an explicit arbitrary diagonal.

FflasUnit 

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

◆ FFLAS_SIDE

enum FFLAS_SIDE

On what side ?

Enumerator
FflasLeft 

Operator applied on the left.

FflasRight 

Operator applied on the rigth.

◆ FFLAS_BASE

enum FFLAS_BASE

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

(deprecated, should not be used)

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

◆ number_kind

Enumerator
zero 
one 
mone 
other 

◆ SparseMatrix_t

enum class SparseMatrix_t
strong
Enumerator
CSR 
CSR_ZO 
CSC 
CSC_ZO 
COO 
COO_ZO 
ELL 
ELL_ZO 
SELL 
SELL_ZO 
ELL_simd 
ELL_simd_ZO 
CSR_HYB 
HYB_ZO 

◆ FFLAS_FORMAT

Enumerator
FflasAuto 
FflasDense 
FflasSMS 
FflasBinary 
FflasMath 
FflasMaple 
FflasSageMath 

Function Documentation

◆ InfNorm()

Givaro::Integer InfNorm ( const size_t  M,
const size_t  N,
const Givaro::Integer *  A,
const size_t  lda 
)
inline

◆ min3()

const T & min3 ( const T &  m,
const T &  n,
const T &  k 
)

◆ max3()

const T & max3 ( const T &  m,
const T &  n,
const T &  k 
)

◆ min4()

const T & min4 ( const T &  m,
const T &  n,
const T &  k,
const T &  l 
)

◆ max4()

const T & max4 ( const T &  m,
const T &  n,
const T &  k,
const T &  l 
)

◆ fadd() [1/8]

void fadd ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  A,
const size_t  inca,
typename Field::ConstElement_ptr  B,
const size_t  incb,
typename Field::Element_ptr  C,
const size_t  incc 
)

◆ faddin() [1/5]

void faddin ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  B,
const size_t  incb,
typename Field::Element_ptr  C,
const size_t  incc 
)

◆ fsub() [1/4]

void fsub ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  A,
const size_t  inca,
typename Field::ConstElement_ptr  B,
const size_t  incb,
typename Field::Element_ptr  C,
const size_t  incc 
)

◆ fsubin() [1/3]

void fsubin ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  B,
const size_t  incb,
typename Field::Element_ptr  C,
const size_t  incc 
)

◆ fadd() [2/8]

void fadd ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  A,
const size_t  inca,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  B,
const size_t  incb,
typename Field::Element_ptr  C,
const size_t  incc 
)
Todo:
optimise here

◆ pfadd()

void pfadd ( const Field F,
const size_t  M,
const size_t  N,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  C,
const size_t  ldc,
const size_t  numths 
)

◆ pfsub()

void pfsub ( const Field F,
const size_t  M,
const size_t  N,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  C,
const size_t  ldc,
const size_t  numths 
)

◆ pfaddin()

void pfaddin ( const Field F,
const size_t  M,
const size_t  N,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  C,
const size_t  ldc,
size_t  numths 
)

◆ pfsubin()

void pfsubin ( const Field F,
const size_t  M,
const size_t  N,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  C,
const size_t  ldc,
size_t  numths 
)

◆ fadd() [3/8]

void fadd ( const Field F,
const size_t  M,
const size_t  N,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  C,
const size_t  ldc 
)

fadd : matrix addition.

Computes C = A + B.

Parameters
Ffield
Mrows
Ncols
Adense matrix of size MxN
ldaleading dimension of A
Bdense matrix of size MxN
ldbleading dimension of B
Cdense matrix of size MxN
ldcleading dimension of C

◆ fsub() [2/4]

void fsub ( const Field F,
const size_t  M,
const size_t  N,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  C,
const size_t  ldc 
)

fsub : matrix subtraction.

Computes C = A - B.

Parameters
Ffield
Mrows
Ncols
Adense matrix of size MxN
ldaleading dimension of A
Bdense matrix of size MxN
ldbleading dimension of B
Cdense matrix of size MxN
ldcleading dimension of C

◆ faddin() [2/5]

void faddin ( const Field F,
const size_t  M,
const size_t  N,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  C,
const size_t  ldc 
)

faddin

◆ faddin() [3/5]

void faddin ( const Field F,
const FFLAS_UPLO  uplo,
const size_t  N,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  C,
const size_t  ldc 
)

fadding for symmetric matrices

◆ fsubin() [2/3]

void fsubin ( const Field F,
const size_t  M,
const size_t  N,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  C,
const size_t  ldc 
)

fsubin C = C - B

◆ fadd() [4/8]

void fadd ( const Field F,
const size_t  M,
const size_t  N,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  C,
const size_t  ldc 
)

fadd : matrix addition with scaling.

Computes C = A + alpha B.

Parameters
Ffield
Mrows
Ncols
Adense matrix of size MxN
ldaleading dimension of A
alphasome scalar
Bdense matrix of size MxN
ldbleading dimension of B
Cdense matrix of size MxN
ldcleading dimension of C

◆ fassign() [1/10]

void fassign ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  Y,
const size_t  incY,
typename Field::Element_ptr  X,
const size_t  incX 
)
inline

fassign : $x \gets y $.

X is preallocated

Todo:
variant for triagular matrix
Parameters
Ffield
Nsize of the vectors
[out]Xvector in F
incXstride of X
[in]Yvector in F
incYstride of Y

◆ fassign() [2/10]

void fassign ( const Givaro::Modular< float > &  F,
const size_t  N,
const float *  Y,
const size_t  incY,
float *  X,
const size_t  incX 
)
inline

◆ fassign() [3/10]

void fassign ( const Givaro::ModularBalanced< float > &  F,
const size_t  N,
const float *  Y,
const size_t  incY,
float *  X,
const size_t  incX 
)
inline

◆ fassign() [4/10]

void fassign ( const Givaro::ZRing< float > &  F,
const size_t  N,
const float *  Y,
const size_t  incY,
float *  X,
const size_t  incX 
)
inline

◆ fassign() [5/10]

void fassign ( const Givaro::Modular< double > &  F,
const size_t  N,
const double *  Y,
const size_t  incY,
double *  X,
const size_t  incX 
)
inline

◆ fassign() [6/10]

void fassign ( const Givaro::ModularBalanced< double > &  F,
const size_t  N,
const double *  Y,
const size_t  incY,
double *  X,
const size_t  incX 
)
inline

◆ fassign() [7/10]

void fassign ( const Givaro::ZRing< double > &  F,
const size_t  N,
const double *  Y,
const size_t  incY,
double *  X,
const size_t  incX 
)
inline

◆ fassign() [8/10]

void fassign ( const Field F,
const size_t  m,
const size_t  n,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  A,
const size_t  lda 
)

fassign : $A \gets B $.

Parameters
Ffield
mnumber of rows to copy
nnumber of cols to copy
Amatrix in F
ldastride of A
Bvector in F
ldbstride of B

◆ faxpy() [1/6]

void faxpy ( const Field F,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  X,
const size_t  incX,
typename Field::Element_ptr  Y,
const size_t  incY 
)
inline

faxpy : $y \gets \alpha \cdot x + y$.

Parameters
Ffield
Nsize of the vectors
alphascalar
[in]Xvector in F
incXstride of X
[in,out]Yvector in F
incYstride of Y

◆ faxpy() [2/6]

void faxpy ( const Givaro::DoubleDomain &  ,
const size_t  N,
const Givaro::DoubleDomain::Element  a,
Givaro::DoubleDomain::ConstElement_ptr  x,
const size_t  incx,
Givaro::DoubleDomain::Element_ptr  y,
const size_t  incy 
)
inline

◆ faxpy() [3/6]

void faxpy ( const Givaro::FloatDomain &  ,
const size_t  N,
const Givaro::FloatDomain::Element  a,
Givaro::FloatDomain::ConstElement_ptr  x,
const size_t  incx,
Givaro::FloatDomain::Element_ptr  y,
const size_t  incy 
)
inline

◆ faxpy() [4/6]

void faxpy ( const Field F,
const size_t  m,
const size_t  n,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  X,
const size_t  ldx,
typename Field::Element_ptr  Y,
const size_t  ldy 
)
inline

faxpy : $y \gets \alpha \cdot x + y$.

Parameters
Ffield
mrow dimension
ncolumn dimension
alphascalar
[in]Xvector in F
ldxleading dimension of X
[in,out]Yvector in F
ldyleading dimension of Y

◆ fdot() [1/11]

Field::Element fdot ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
ModeCategories::DefaultTag MT 
)
inline

◆ fdot() [2/11]

Field::Element fdot ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
ModeCategories::DelayedTag MT 
)
inline

◆ fdot() [3/11]

Givaro::DoubleDomain::Element fdot ( const Givaro::DoubleDomain &  ,
const size_t  N,
Givaro::DoubleDomain::ConstElement_ptr  x,
const size_t  incx,
Givaro::DoubleDomain::ConstElement_ptr  y,
const size_t  incy,
ModeCategories::DefaultTag MT 
)
inline

◆ fdot() [4/11]

Givaro::FloatDomain::Element fdot ( const Givaro::FloatDomain &  ,
const size_t  N,
Givaro::FloatDomain::ConstElement_ptr  x,
const size_t  incx,
Givaro::FloatDomain::ConstElement_ptr  y,
const size_t  incy,
ModeCategories::DefaultTag MT 
)
inline

◆ fdot() [5/11]

Field::Element fdot ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
ModeCategories::ConvertTo< T > &  MT 
)
inline

◆ fdot() [6/11]

Field::Element fdot ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
ModeCategories::DefaultBoundedTag dbt 
)
inline

◆ fdot() [7/11]

Field::Element fdot ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
const ParSeqHelper::Sequential  seq 
)
inline

◆ fdot() [8/11]

Field::Element fdot ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  X,
const size_t  incX,
typename Field::ConstElement_ptr  Y,
const size_t  incY 
)
inline

fdot: dot product $x^T  y$.

Parameters
Ffield
Nsize of the vectors
Xvector in F
incXstride of X
Yvector in F
incYstride of Y

◆ fgemm() [1/23]

Field::Element_ptr 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,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, ModeCategories::ConvertTo< ElementCategories::MachineFloatTag >, ParSeqHelper::Sequential > &  H 
)
inline

◆ fgemm() [2/23]

Field::Element_ptr 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,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
const ParSeqHelper::Sequential  seq 
)
inline

◆ fgemm() [3/23]

Field::Element_ptr 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,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
const ParSeqHelper::Parallel< Cut, Param >  par 
)
inline

◆ fgemm() [4/23]

Field::Element_ptr 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,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc 
)
inline

fgemm: Field GEneral Matrix Multiply.

Computes $C = \alpha \mathrm{op}(A) \times \mathrm{op}(B) + \beta C$ Automatically set Winograd recursion level

Parameters
Ffield.
taif ta==FflasTrans then $\mathrm{op}(A)=A^t$, else $\mathrm{op}(A)=A$,
tbsame for matrix B
msee A
nsee B
ksee A
alphascalar
betascalar
A$\mathrm{op}(A)$ is $m \times k$
B$\mathrm{op}(B)$ is $k \times n$
C$C$ is $m \times n$
ldaleading dimension of A
ldbleading dimension of B
ldcleading dimension of C
wrecursive levels of Winograd's algorithm are used. No argument (or -1) does auto computation of w.
Warning
$\alpha$ must be invertible

◆ fgemm() [5/23]

Field::Element_ptr 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,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Auto, ModeT, ParSeq > &  H 
)
inline

◆ fgemm() [6/23]

Field::Element_ptr 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,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, ModeCategories::DelayedTag, ParSeqHelper::Sequential > &  H 
)
inline

◆ fsquare() [1/6]

Field::Element_ptr fsquare ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  n,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc 
)
inline

fsquare: Squares a matrix.

compute $ C \gets \alpha \mathrm{op}(A) \mathrm{op}(A) + \beta C$ over a Field F Avoid the conversion of B

Parameters
taif ta==FflasTrans, $\mathrm{op}(A)=A^T$.
Ffield
nsize of A
alphascalar
betascalar
Adense matrix of size nxn
ldaleading dimension of A
Cdense matrix of size nxn
ldcleading dimension of C
Bug:
why double ?

◆ fsquare() [2/6]

double * fsquare ( const Givaro::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

◆ fsquare() [3/6]

float * fsquare ( const Givaro::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

◆ fsquare() [4/6]

double * fsquare ( const Givaro::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

◆ fsquare() [5/6]

float * fsquare ( const Givaro::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

◆ fgemm() [7/23]

FFPACK::RNSInteger< RNS >::Element_ptr fgemm ( const FFPACK::RNSInteger< RNS > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename FFPACK::RNSInteger< RNS >::Element  alpha,
typename FFPACK::RNSInteger< RNS >::ConstElement_ptr  Ad,
const size_t  lda,
typename FFPACK::RNSInteger< RNS >::ConstElement_ptr  Bd,
const size_t  ldb,
const typename FFPACK::RNSInteger< RNS >::Element  beta,
typename FFPACK::RNSInteger< RNS >::Element_ptr  Cd,
const size_t  ldc,
MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Classic, ModeCategories::DefaultTag, ParSeqHelper::Compose< ParSeqHelper::Sequential, ParSeqTrait > > &  H 
)
inline

◆ fgemm() [8/23]

FFPACK::RNSInteger< RNS >::Element_ptr fgemm ( const FFPACK::RNSInteger< RNS > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename FFPACK::RNSInteger< RNS >::Element  alpha,
typename FFPACK::RNSInteger< RNS >::ConstElement_ptr  Ad,
const size_t  lda,
typename FFPACK::RNSInteger< RNS >::ConstElement_ptr  Bd,
const size_t  ldb,
const typename FFPACK::RNSInteger< RNS >::Element  beta,
typename FFPACK::RNSInteger< RNS >::Element_ptr  Cd,
const size_t  ldc,
MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Classic, ModeCategories::DefaultTag, ParSeqHelper::Sequential > &  H 
)
inline

◆ fgemm() [9/23]

FFPACK::RNSInteger< RNS >::Element_ptr fgemm ( const FFPACK::RNSInteger< RNS > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename FFPACK::RNSInteger< RNS >::Element  alpha,
typename FFPACK::RNSInteger< RNS >::ConstElement_ptr  Ad,
const size_t  lda,
typename FFPACK::RNSInteger< RNS >::ConstElement_ptr  Bd,
const size_t  ldb,
const typename FFPACK::RNSInteger< RNS >::Element  beta,
typename FFPACK::RNSInteger< RNS >::Element_ptr  Cd,
const size_t  ldc,
MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Classic, ModeCategories::DefaultTag, ParSeqHelper::Compose< ParSeqHelper::Parallel< CuttingStrategy::RNSModulus, StrategyParameter::Threads >, ParSeqTrait > > &  H 
)
inline

◆ fgemm() [10/23]

FFPACK::RNSInteger< RNS >::Element_ptr fgemm ( const FFPACK::RNSInteger< RNS > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename FFPACK::RNSInteger< RNS >::Element  alpha,
typename FFPACK::RNSInteger< RNS >::ConstElement_ptr  Ad,
const size_t  lda,
typename FFPACK::RNSInteger< RNS >::ConstElement_ptr  Bd,
const size_t  ldb,
const typename FFPACK::RNSInteger< RNS >::Element  beta,
typename FFPACK::RNSInteger< RNS >::Element_ptr  Cd,
const size_t  ldc,
MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Classic, ModeCategories::DefaultTag, ParSeqHelper::Parallel< Cut, Param > > &  H 
)
inline

◆ fgemm() [11/23]

Givaro::Integer * fgemm ( const Givaro::ZRing< Givaro::Integer > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const Givaro::Integer  alpha,
const Givaro::Integer *  A,
const size_t  lda,
const Givaro::Integer *  B,
const size_t  ldb,
Givaro::Integer  beta,
Givaro::Integer *  C,
const size_t  ldc,
MMHelper< Givaro::ZRing< Givaro::Integer >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag >, ParSeq > &  H 
)
inline

◆ fgemm() [12/23]

RNS::Element_ptr fgemm ( const FFPACK::RNSInteger< RNS > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename RNS::Element  alpha,
typename RNS::ConstElement_ptr  Ad,
const size_t  lda,
typename RNS::ConstElement_ptr  Bd,
const size_t  ldb,
const typename RNS::Element  beta,
typename RNS::Element_ptr  Cd,
const size_t  ldc,
MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Winograd, ModeT, ParSeqHelper::Sequential > &  H 
)
inline

◆ fgemm() [13/23]

RNS::Element_ptr fgemm ( const FFPACK::RNSIntegerMod< RNS > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename RNS::Element  alpha,
typename RNS::ConstElement_ptr  Ad,
const size_t  lda,
typename RNS::ConstElement_ptr  Bd,
const size_t  ldb,
const typename RNS::Element  beta,
typename RNS::Element_ptr  Cd,
const size_t  ldc,
MMHelper< FFPACK::RNSIntegerMod< RNS >, MMHelperAlgo::Winograd > &  H 
)
inline

◆ fgemm() [14/23]

Givaro::Integer * fgemm ( const Givaro::Modular< Givaro::Integer > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const Givaro::Integer  alpha,
const Givaro::Integer *  A,
const size_t  lda,
const Givaro::Integer *  B,
const size_t  ldb,
const Givaro::Integer  beta,
Givaro::Integer *  C,
const size_t  ldc,
MMHelper< Givaro::Modular< Givaro::Integer >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag > > &  H 
)
inline

◆ fgemm() [15/23]

Givaro::Integer * fgemm ( const Givaro::Modular< Givaro::Integer > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const Givaro::Integer  alpha,
const Givaro::Integer *  A,
const size_t  lda,
const Givaro::Integer *  B,
const size_t  ldb,
const Givaro::Integer  beta,
Givaro::Integer *  C,
const size_t  ldc,
MMHelper< Givaro::Modular< Givaro::Integer >, MMHelperAlgo::Auto, ModeCategories::ConvertTo< ElementCategories::RNSElementTag >, ParSeq > &  H 
)
inline

◆ fgemm() [16/23]

RecInt::ruint< K1 > * fgemm ( const Givaro::Modular< RecInt::ruint< K1 >, RecInt::ruint< K2 > > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const RecInt::ruint< K1 >  alpha,
const RecInt::ruint< K1 > *  A,
const size_t  lda,
const RecInt::ruint< K1 > *  B,
const size_t  ldb,
RecInt::ruint< K1 >  beta,
RecInt::ruint< K1 > *  C,
const size_t  ldc,
MMHelper< Givaro::Modular< RecInt::ruint< K1 >, RecInt::ruint< K2 > >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag >, ParSeq > &  H 
)
inline

◆ fgemm() [17/23]

Field::Element_ptr 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,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, ModeT > &  H 
)
inline

◆ fgemm() [18/23]

Field::Element_ptr 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,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::WinogradPar, ModeT, ParSeqHelper::Parallel< Cut, Param > > &  H 
)
inline

◆ fgemv() [1/19]

Field::Element_ptr fgemv ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::MachineFloatTag > > &  H 
)
inline

◆ fgemv() [2/19]

Field::Element_ptr fgemv ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DelayedTag > &  H 
)
inline

◆ fgemv() [3/19]

Field::Element_ptr fgemv ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &  H 
)
inline

◆ fgemv() [4/19]

Field::Element_ptr fgemv ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::LazyTag > &  H 
)
inline

◆ fgemv() [5/19]

Field::Element_ptr fgemv ( const Field F,
const FFLAS_TRANSPOSE  TransA,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY 
)
inline

finite prime Field GEneral Matrix Vector multiplication.

Computes $Y \gets \alpha \mathrm{op}(A) X + \beta Y $.

Parameters
Ffield
TransAif TransA==FflasTrans then $\mathrm{op}(A)=A^t$.
Mrows
Ncols
alphascalar
Adense matrix of size MxN
ldaleading dimension of A
Xdense vector of size N
incXstride of X
betascalar
[out]Ydense vector of size M
incYstride of Y

◆ fgemv() [6/19]

Givaro::ZRing< int64_t >::Element_ptr fgemv ( const Givaro::ZRing< int64_t > &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  M,
const size_t  N,
const int64_t  alpha,
const int64_t *  A,
const size_t  lda,
const int64_t *  X,
const size_t  incX,
const int64_t  beta,
int64_t *  Y,
const size_t  incY,
MMHelper< Givaro::ZRing< int64_t >, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &  H 
)
inline

◆ fgemv() [7/19]

Givaro::DoubleDomain::Element_ptr fgemv ( const Givaro::DoubleDomain &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  M,
const size_t  N,
const Givaro::DoubleDomain::Element  alpha,
const Givaro::DoubleDomain::ConstElement_ptr  A,
const size_t  lda,
const Givaro::DoubleDomain::ConstElement_ptr  X,
const size_t  incX,
const Givaro::DoubleDomain::Element  beta,
Givaro::DoubleDomain::Element_ptr  Y,
const size_t  incY,
MMHelper< Givaro::DoubleDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &  H 
)
inline

◆ fgemv() [8/19]

Field::Element_ptr fgemv ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
const typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DefaultBoundedTag > &  H 
)
inline

◆ fgemv() [9/19]

Givaro::FloatDomain::Element_ptr fgemv ( const Givaro::FloatDomain &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  M,
const size_t  N,
const Givaro::FloatDomain::Element  alpha,
const Givaro::FloatDomain::ConstElement_ptr  A,
const size_t  lda,
const Givaro::FloatDomain::ConstElement_ptr  X,
const size_t  incX,
const Givaro::FloatDomain::Element  beta,
Givaro::FloatDomain::Element_ptr  Y,
const size_t  incY,
MMHelper< Givaro::FloatDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &  H 
)
inline

◆ fgemv() [10/19]

Field::Element_ptr fgemv ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  m,
const size_t  n,
const typename Field::Element  alpha,
const typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY,
ParSeqHelper::Parallel< Cut, Param > &  parH 
)

◆ fgemv() [11/19]

Field::Element_ptr fgemv ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  m,
const size_t  n,
const typename Field::Element  alpha,
const typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY,
ParSeqHelper::Sequential seqH 
)

◆ fgemv() [12/19]

◆ fgemv() [13/19]

◆ fgemv() [14/19]

Givaro::Integer * fgemv ( const Givaro::ZRing< Givaro::Integer > &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  m,
const size_t  n,
const Givaro::Integer  alpha,
Givaro::Integer *  A,
const size_t  lda,
Givaro::Integer *  X,
const size_t  ldx,
Givaro::Integer  beta,
Givaro::Integer *  Y,
const size_t  ldy,
MMHelper< Givaro::ZRing< Givaro::Integer >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag > > &  H 
)
inline

◆ fgemv() [15/19]

Givaro::Integer * fgemv ( const Givaro::Modular< Givaro::Integer > &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  m,
const size_t  n,
const Givaro::Integer  alpha,
Givaro::Integer *  A,
const size_t  lda,
Givaro::Integer *  X,
const size_t  ldx,
Givaro::Integer  beta,
Givaro::Integer *  Y,
const size_t  ldy,
MMHelper< Givaro::Modular< Givaro::Integer >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag > > &  H 
)
inline

◆ fgemv() [16/19]

RecInt::ruint< K1 > * fgemv ( const Givaro::Modular< RecInt::ruint< K1 >, RecInt::ruint< K2 > > &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  m,
const size_t  n,
const RecInt::ruint< K1 >  alpha,
const RecInt::ruint< K1 > *  A,
const size_t  lda,
const RecInt::ruint< K1 > *  X,
const size_t  incx,
RecInt::ruint< K1 >  beta,
RecInt::ruint< K1 > *  Y,
const size_t  incy,
MMHelper< Givaro::Modular< RecInt::ruint< K1 >, RecInt::ruint< K2 > >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag >, ParSeq > &  H 
)
inline

◆ fger() [1/12]

void fger ( const Field F,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
typename Field::Element_ptr  A,
const size_t  lda 
)
inline

fger: rank one update of a general matrix

Computes $A \gets \alpha x . y^T + A$

Parameters
Ffield
Mrows
Ncols
alphascalar
[in,out]Adense matrix of size MxN and leading dimension lda
ldaleading dimension of A
xdense vector of size M
incxstride of X
ydense vector of size N
incystride of Y

◆ fger() [2/12]

void fger ( const Field F,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
typename Field::Element_ptr  A,
const size_t  lda,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::MachineFloatTag > > &  H 
)
inline

◆ fger() [3/12]

void fger ( const Field F,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
typename Field::Element_ptr  A,
const size_t  lda,
MMHelper< Field, MMHelperAlgo::Classic, AnyTag > &  H 
)
inline

◆ fger() [4/12]

void fger ( const Givaro::DoubleDomain &  F,
const size_t  M,
const size_t  N,
const Givaro::DoubleDomain::Element  alpha,
const Givaro::DoubleDomain::ConstElement_ptr  x,
const size_t  incx,
const Givaro::DoubleDomain::ConstElement_ptr  y,
const size_t  incy,
Givaro::DoubleDomain::Element_ptr  A,
const size_t  lda,
MMHelper< Givaro::DoubleDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &  H 
)
inline

◆ fger() [5/12]

void fger ( const Field F,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
const typename Field::ConstElement_ptr  x,
const size_t  incx,
const typename Field::ConstElement_ptr  y,
const size_t  incy,
typename Field::Element_ptr  A,
const size_t  lda,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DefaultBoundedTag > &  H 
)
inline

◆ fger() [6/12]

void fger ( const Givaro::FloatDomain &  F,
const size_t  M,
const size_t  N,
const Givaro::FloatDomain::Element  alpha,
const Givaro::FloatDomain::ConstElement_ptr  x,
const size_t  incx,
const Givaro::FloatDomain::ConstElement_ptr  y,
const size_t  incy,
Givaro::FloatDomain::Element_ptr  A,
const size_t  lda,
MMHelper< Givaro::FloatDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &  H 
)
inline

◆ fger() [7/12]

void fger ( const Field F,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
typename Field::Element_ptr  A,
const size_t  lda,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::LazyTag > &  H 
)
inline

◆ fger() [8/12]

void fger ( const Field F,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
typename Field::Element_ptr  A,
const size_t  lda,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DelayedTag > &  H 
)
inline

◆ fger() [9/12]

void fger ( const Givaro::Modular< Givaro::Integer > &  F,
const size_t  M,
const size_t  N,
const typename Givaro::Integer  alpha,
typename Givaro::Integer *  x,
const size_t  incx,
typename Givaro::Integer *  y,
const size_t  incy,
typename Givaro::Integer *  A,
const size_t  lda,
MMHelper< Givaro::Modular< Givaro::Integer >, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::RNSElementTag > > &  H 
)
inline

◆ fger() [10/12]

void fger ( const FFPACK::RNSInteger< RNS > &  F,
const size_t  M,
const size_t  N,
const typename FFPACK::RNSInteger< RNS >::Element  alpha,
typename FFPACK::RNSInteger< RNS >::Element_ptr  x,
const size_t  incx,
typename FFPACK::RNSInteger< RNS >::Element_ptr  y,
const size_t  incy,
typename FFPACK::RNSInteger< RNS >::Element_ptr  A,
const size_t  lda,
MMHelper< FFPACK::RNSInteger< RNS >, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &  H 
)
inline

◆ fger() [11/12]

void fger ( const FFPACK::RNSIntegerMod< RNS > &  F,
const size_t  M,
const size_t  N,
const typename FFPACK::RNSIntegerMod< RNS >::Element  alpha,
typename FFPACK::RNSIntegerMod< RNS >::Element_ptr  x,
const size_t  incx,
typename FFPACK::RNSIntegerMod< RNS >::Element_ptr  y,
const size_t  incy,
typename FFPACK::RNSIntegerMod< RNS >::Element_ptr  A,
const size_t  lda,
MMHelper< FFPACK::RNSIntegerMod< RNS >, MMHelperAlgo::Classic > &  H 
)
inline

◆ freduce() [1/11]

void freduce ( const Field F,
const size_t  n,
typename Field::ConstElement_ptr  Y,
const size_t  incY,
typename Field::Element_ptr  X,
const size_t  incX 
)

freduce $x \gets  y mod F$.

Parameters
Ffield
nsize of the vectors
Yvector of Element
incYstride of Y
Xvector in F
incXstride of X
Bug:
use cblas_(d)scal when possible

◆ freduce() [2/11]

void freduce ( const Field F,
const size_t  n,
typename Field::Element_ptr  X,
const size_t  incX 
)

freduce $x \gets  x mod F$.

Parameters
Ffield
nsize of the vectors
Xvector in F
incXstride of X
Bug:
use cblas_(d)scal when possible

◆ freduce_constoverride() [1/2]

void freduce_constoverride ( const Field F,
const size_t  m,
typename Field::ConstElement_ptr  A,
const size_t  incX 
)

◆ finit() [1/8]

void finit ( const Field F,
const size_t  n,
ConstOtherElement_ptr  Y,
const size_t  incY,
typename Field::Element_ptr  X,
const size_t  incX 
)

◆ finit() [2/8]

void finit ( const Field F,
const size_t  n,
typename Field::Element_ptr  X,
const size_t  incX 
)

finit Initializes X in F$.

Parameters
Ffield
nsize of the vectors
Xvector in F
incXstride of X

◆ freduce() [3/11]

void freduce ( const Field F,
const size_t  m,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda 
)

freduce $A \gets  A mod F$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A

◆ freduce() [4/11]

void freduce ( const Field F,
const FFLAS_UPLO  UpLo,
const size_t  N,
typename Field::Element_ptr  A,
const size_t  lda 
)

freduce for square symmetric matrices

◆ pfreduce()

void pfreduce ( const Field F,
const size_t  m,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda,
const size_t  numths 
)

◆ freduce() [5/11]

void freduce ( const Field F,
const size_t  m,
const size_t  n,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  A,
const size_t  lda 
)

freduce $A \gets  B mod F$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A
Bmatrix in Element
ldbstride of B

◆ freduce_constoverride() [2/2]

void freduce_constoverride ( const Field F,
const size_t  m,
const size_t  n,
typename Field::ConstElement_ptr  A,
const size_t  lda 
)

◆ finit() [3/8]

void finit ( const Field F,
const size_t  m,
const size_t  n,
const OtherElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  A,
const size_t  lda 
)

finit $A \gets  B mod F$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A
Bmatrix in OtherElement
ldbstride of B

◆ finit() [4/8]

void finit ( const Field F,
const size_t  m,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda 
)

◆ freduce() [6/11]

void freduce ( const FFPACK::RNSIntegerMod< FFPACK::rns_double > &  F,
const size_t  n,
FFPACK::RNSIntegerMod< FFPACK::rns_double >::Element_ptr  A,
size_t  inc 
)
inline

◆ freduce() [7/11]

void freduce ( const FFPACK::RNSIntegerMod< FFPACK::rns_double > &  F,
const size_t  m,
const size_t  n,
FFPACK::rns_double::Element_ptr  A,
size_t  lda 
)
inline

◆ freivalds()

bool freivalds ( 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,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::ConstElement_ptr  C,
const size_t  ldc 
)
inline

freivalds: Freivalds GEneral Matrix Multiply Random Check.

Randomly Checks $C = \alpha \mathrm{op}(A) \times \mathrm{op}(B)$

Parameters
Ffield.
taif ta==FflasTrans then $\mathrm{op}(A)=A^t$, else $\mathrm{op}(A)=A$,
tbsame for matrix B
msee A
nsee B
ksee A
alphascalar
A$\mathrm{op}(A)$ is $m \times k$
B$\mathrm{op}(B)$ is $k \times n$
C$C$ is $m \times n$
ldaleading dimension of A
ldbleading dimension of B
ldcleading dimension of C

◆ fscalin() [1/10]

void fscalin ( const Field F,
const size_t  n,
const typename Field::Element  alpha,
typename Field::Element_ptr  X,
const size_t  incX 
)
inline

fscalin $x \gets \alpha \cdot x$.

Parameters
Ffield
nsize of the vectors
alphascalar
Xvector in F
incXstride of X
Bug:
use cblas_(d)scal when possible
Todo:
check if comparison with +/-1,0 is necessary.

◆ fscal() [1/10]

void fscal ( const Field F,
const size_t  n,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  X,
const size_t  incX,
typename Field::Element_ptr  Y,
const size_t  incY 
)
inline

fscal $y \gets \alpha \cdot x$.

Parameters
Ffield
nsize of the vectors
alphascalar
[in]Xvector in F
incXstride of X
[out]Yvector in F
incYstride of Y
Bug:
use cblas_(d)scal when possible
Todo:
check if comparison with +/-1,0 is necessary.

◆ fscal() [2/10]

void fscal ( const Givaro::DoubleDomain &  ,
const size_t  N,
const Givaro::DoubleDomain::Element  a,
Givaro::DoubleDomain::ConstElement_ptr  x,
const size_t  incx,
Givaro::DoubleDomain::Element_ptr  y,
const size_t  incy 
)
inline

◆ fscal() [3/10]

void fscal ( const Givaro::FloatDomain &  ,
const size_t  N,
const Givaro::FloatDomain::Element  a,
Givaro::FloatDomain::ConstElement_ptr  x,
const size_t  incx,
Givaro::FloatDomain::Element_ptr  y,
const size_t  incy 
)
inline

◆ fscalin() [2/10]

void fscalin ( const Givaro::DoubleDomain &  ,
const size_t  N,
const Givaro::DoubleDomain::Element  a,
Givaro::DoubleDomain::Element_ptr  y,
const size_t  incy 
)
inline

◆ fscalin() [3/10]

void fscalin ( const Givaro::FloatDomain &  ,
const size_t  N,
const Givaro::FloatDomain::Element  a,
Givaro::FloatDomain::Element_ptr  y,
const size_t  incy 
)
inline

◆ fscalin() [4/10]

void fscalin ( const Field F,
const size_t  m,
const size_t  n,
const typename Field::Element  alpha,
typename Field::Element_ptr  A,
const size_t  lda 
)
inline

fscalin $A \gets a \cdot A$.

Parameters
Ffield
mnumber of rows
nnumber of cols
alphahomotecie scalar
Amatrix in F
ldastride of A

◆ fscal() [4/10]

void fscal ( const Field F,
const size_t  m,
const size_t  n,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::Element_ptr  B,
const size_t  ldb 
)
inline

fscal $B \gets a \cdot A$.

Parameters
Ffield
mnumber of rows
nnumber of cols
alphahomotecie scalar
[in]Amatrix in F
ldastride of A
[out]Bmatrix in F
ldbstride of B

◆ fscalin() [5/10]

void fscalin ( const FFPACK::RNSInteger< FFPACK::rns_double > &  F,
const size_t  n,
const FFPACK::rns_double::Element  alpha,
FFPACK::rns_double::Element_ptr  A,
const size_t  inc 
)
inline

◆ fscal() [5/10]

void fscal ( const FFPACK::RNSInteger< FFPACK::rns_double > &  F,
const size_t  n,
const FFPACK::rns_double::Element  alpha,
FFPACK::rns_double::ConstElement_ptr  A,
const size_t  Ainc,
FFPACK::rns_double::Element_ptr  B,
const size_t  Binc 
)
inline

◆ fscalin() [6/10]

void fscalin ( const FFPACK::RNSInteger< FFPACK::rns_double > &  F,
const size_t  m,
const size_t  n,
const FFPACK::rns_double::Element  alpha,
FFPACK::rns_double::Element_ptr  A,
const size_t  lda 
)
inline

◆ fscal() [6/10]

void fscal ( const FFPACK::RNSInteger< FFPACK::rns_double > &  F,
const size_t  m,
const size_t  n,
const FFPACK::rns_double::Element  alpha,
FFPACK::rns_double::ConstElement_ptr  A,
const size_t  lda,
FFPACK::rns_double::Element_ptr  B,
const size_t  ldb 
)
inline

◆ fscalin() [7/10]

void fscalin ( const FFPACK::RNSIntegerMod< FFPACK::rns_double > &  F,
const size_t  n,
const typename FFPACK::RNSIntegerMod< FFPACK::rns_double >::Element  alpha,
typename FFPACK::RNSIntegerMod< FFPACK::rns_double >::Element_ptr  A,
const size_t  inc 
)
inline

◆ fscal() [7/10]

void fscal ( const FFPACK::RNSIntegerMod< FFPACK::rns_double > &  F,
const size_t  n,
const FFPACK::rns_double::Element  alpha,
FFPACK::rns_double::ConstElement_ptr  A,
const size_t  Ainc,
FFPACK::rns_double::Element_ptr  B,
const size_t  Binc 
)
inline

◆ fscalin() [8/10]

void fscalin ( const FFPACK::RNSIntegerMod< FFPACK::rns_double > &  F,
const size_t  m,
const size_t  n,
const FFPACK::rns_double::Element  alpha,
FFPACK::rns_double::Element_ptr  A,
const size_t  lda 
)
inline

◆ fscal() [8/10]

void fscal ( const FFPACK::RNSIntegerMod< FFPACK::rns_double > &  F,
const size_t  m,
const size_t  n,
const FFPACK::rns_double::Element  alpha,
FFPACK::rns_double::ConstElement_ptr  A,
const size_t  lda,
FFPACK::rns_double::Element_ptr  B,
const size_t  ldb 
)
inline

◆ fsyr2k()

Field::Element_ptr fsyr2k ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc 
)
inline

fsyr2k: Symmetric Rank 2K update

Computes the Lower or Upper triangular part of $C = \alpha ( A \times B^T + B \times A^T) + \beta C$ or $C = \alpha ( A^T \times B + B^T \times A ) + \beta C$

Parameters
Ffield.
UpLowhether to compute the upper or the lower triangular part of the symmetric matrix C
transif ta==FflasNoTrans then compute $C = \alpha ( A \times B^T + B \times A^T ) + \beta C$, else $C = \alpha ( A^T \times B + B^T \times A) + \beta C$
norder of matrix C
ksee A
alphascalar
A$A$ is $n \times k$ (FflasNoTrans) or $A$ is $k \times n$ (FflasTrans)
ldaleading dimension of A
betascalar
C$C$ is $n \times n$
ldcleading dimension of C
Warning
$\alpha$ must be invertible

◆ fsyrk() [1/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc 
)
inline

fsyrk: Symmetric Rank K update

Computes the Lower or Upper triangular part of $C = \alpha A \times A^T + \beta C$ or $C = \alpha A^T \times A + \beta C$

Parameters
Ffield.
UpLowhether to compute the upper or the lower triangular part of the symmetric matrix C
transif ta==FflasNoTrans then comput $C = \alpha A \times A^T + \beta C$, else $C = \alpha A^T \times A + \beta C$
norder of matrix C
ksee A
alphascalar
A$A$ is $n \times k$ or $A$ is $k \times n$
ldaleading dimension of A
betascalar
C$C$ is $n \times n$
ldcleading dimension of C
Warning
$\alpha$ must be invertible

◆ fsyrk() [2/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
const ParSeqHelper::Sequential  seq 
)
inline

◆ fsyrk() [3/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &  H 
)
inline

◆ fsyrk() [4/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::ConvertTo< ElementCategories::MachineFloatTag >, ParSeqHelper::Sequential > &  H 
)
inline

◆ fsyrk() [5/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DelayedTag > &  H 
)
inline

◆ fsyrk() [6/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::LazyTag > &  H 
)
inline

◆ fsyrk() [7/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::DivideAndConquer, Mode > &  H 
)
inline

◆ fsyrk() [8/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Classic, ModeCategories::DefaultBoundedTag > &  H 
)
inline

◆ fsyrk() [9/16]

Givaro::FloatDomain::Element_ptr fsyrk ( const Givaro::FloatDomain &  F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const Givaro::FloatDomain::Element  alpha,
Givaro::FloatDomain::ConstElement_ptr  A,
const size_t  lda,
const Givaro::FloatDomain::Element  beta,
Givaro::FloatDomain::Element_ptr  C,
const size_t  ldc,
MMHelper< Givaro::FloatDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &  H 
)
inline

◆ fsyrk() [10/16]

Givaro::DoubleDomain::Element_ptr fsyrk ( const Givaro::DoubleDomain &  F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const Givaro::DoubleDomain::Element  alpha,
Givaro::DoubleDomain::ConstElement_ptr  A,
const size_t  lda,
const Givaro::DoubleDomain::Element  beta,
Givaro::DoubleDomain::Element_ptr  C,
const size_t  ldc,
MMHelper< Givaro::DoubleDomain, MMHelperAlgo::Classic, ModeCategories::DefaultTag > &  H 
)
inline

◆ fsyrk() [11/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
typename Field::Element_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  D,
const size_t  incD,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
const size_t  threshold = __FFLASFFPACK_FSYRK_THRESHOLD 
)
inline

fsyrk: Symmetric Rank K update with diagonal scaling

Computes the Lower or Upper triangular part of $C = \alpha A \times D \times A^T + \beta C$ or $C = \alpha A^T \times D \times A + \beta C$ where D is a diagonal matrix. Matrix A is updated into $ D\times A$ (if trans = FflasTrans) or $ A\times D$ (if trans = FflasNoTrans).

Parameters
Ffield.
UpLowhether to compute the upper or the lower triangular part of the symmetric matrix C
transif ta==FflasNoTrans then compute $C = \alpha A \times A^T + \beta C$, else $C = \alpha A^T \times A + \beta C$
norder of matrix C
ksee A
alphascalar
A$A$ is $n \times k$ or $A$ is $k \times n$
ldaleading dimension of A
D$D$ is $k \times k$ diagonal matrix, stored as a vector of k coefficients
ldaleading dimension of A
betascalar
C$C$ is $n \times n$
ldcleading dimension of C
Warning
$\alpha$ must be invertible

◆ fsyrk() [12/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::Element_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  D,
const size_t  incD,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
const ParSeqHelper::Sequential  seq,
const size_t  threshold 
)
inline

◆ fsyrk() [13/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::Element_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  D,
const size_t  incD,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
const ParSeqHelper::Parallel< Cut, Param >  par,
const size_t  threshold 
)
inline

◆ fsyrk() [14/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
typename Field::Element_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  D,
const size_t  incD,
const std::vector< bool > &  twoBlock,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
const size_t  threshold = __FFLASFFPACK_FSYRK_THRESHOLD 
)
inline

fsyrk: Symmetric Rank K update with diagonal scaling

Computes the Lower or Upper triangular part of $C = \alpha A \times Delta D \times A^T + \beta C$ or $C = \alpha A^T \times Delta D \times A + \beta C$ where D is a diagonal matrix and Delta is a block diagonal with either 1 on the diagonal or 2x2 swap blocks Matrix A is updated into $ D\times A$ (if trans = FflasTrans) or $ A\times D$ (if trans = FflasNoTrans).

Parameters
Ffield.
UpLowhether to compute the upper or the lower triangular part of the symmetric matrix C
transif ta==FflasNoTrans then compute $C = \alpha A Delta D \times A^T + \beta C$, else $C = \alpha A^T Delta D \times A + \beta C$
nsee B
ksee A
alphascalar
A$A$ is $n \times k$ or $A$ is $k \times n$
ldaleading dimension of A
D$D$ is $k \times k$ diagonal matrix, stored as a vector of k coefficients
twoBlocksa vector boolean indicating the beginning of each 2x2 blocs in Delta
ldaleading dimension of A
betascalar
C$C$ is $n \times n$
ldcleading dimension of C
Warning
$\alpha$ must be invertible

◆ computeS1S2()

void computeS1S2 ( const Field F,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  x,
const typename Field::Element  y,
typename Field::Element_ptr  A,
const size_t  lda,
typename Field::Element_ptr  S,
const size_t  lds,
typename Field::Element_ptr  T,
const size_t  ldt,
MMHelper< Field, MMHelperAlgo::Winograd, FieldTrait > &  WH 
)
inline

◆ fsyrk() [15/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, ModeCategories::DelayedTag, ParSeqHelper::Sequential > &  H 
)
inline

◆ fsyrk() [16/16]

Field::Element_ptr fsyrk ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, Mode > &  H 
)
inline

◆ fsyrk_strassen() [1/2]

Field::Element_ptr fsyrk_strassen ( const Field F,
const FFLAS_UPLO  uplo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  y1,
const typename Field::Element  y2,
const typename Field::Element  alpha,
typename Field::Element_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, FieldTrait > &  WH 
)
inline

◆ ftrmm() [1/3]

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::ConstElement_ptr  A,
const size_t  lda,
typename Field::Element_ptr  B,
const size_t  ldb 
)
inline

ftrmm: TRiangular Matrix Multiply.

Computes $ B \gets \alpha \mathrm{op}(A) B$ or $B \gets \alpha B \mathrm{op}(A)$.

Parameters
Ffield
Sideif Side==FflasLeft then $ B \gets \alpha \mathrm{op}(A) B$ is computed.
Uploif Uplo==FflasUpper then A is upper triangular
TransAif TransA==FflasTrans then $\mathrm{op}(A)=A^t$.
Diagif Diag==FflasUnit then A is implicitly unit.
Mrows of B
Ncols of B
alphascalar
Atriangular matrix. If Side==FflasLeft then A is $N\times N$, otherwise A is $M\times M$
ldaleading dim of A
Bmatrix of size MxN
ldbleading dim of B

◆ ftrmm() [2/3]

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::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc 
)
inline

ftrmm: TRiangular Matrix Multiply with 3 operands Computes $ C \gets \alpha \mathrm{op}(A) B + beta C$ or $C \gets \alpha B \mathrm{op}(A) + beta C$.

Parameters
Ffield
Sideif Side==FflasLeft then $ B \gets \alpha \mathrm{op}(A) B$ is computed.
Uploif Uplo==FflasUpper then A is upper triangular
TransAif TransA==FflasTrans then $\mathrm{op}(A)=A^t$.
Diagif Diag==FflasUnit then A is implicitly unit.
Mrows of B
Ncols of B
alphascalar
Atriangular matrix. If Side==FflasLeft then A is $N\times N$, otherwise A is $M\times M$
ldaleading dim of A
Bmatrix of size MxN
ldbleading dim of B
betascalar
Cmatrix of size MxN
ldcleading dim of C

◆ ftrsm() [1/9]

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_ptr  A,
const size_t  lda,
typename Field::Element_ptr  B,
const size_t  ldb 
)
inline

◆ ftrsm() [2/9]

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_ptr  A,
const size_t  lda,
typename Field::Element_ptr  B,
const size_t  ldb,
const ParSeqHelper::Sequential PSH 
)
inline

◆ ftrsm() [3/9]

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_ptr  A,
const size_t  lda,
typename Field::Element_ptr  B,
const size_t  ldb,
const ParSeqHelper::Parallel< Cut, Param > &  PSH 
)
inline

◆ ftrsm() [4/9]

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_ptr  A,
const size_t  lda,
typename Field::Element_ptr  B,
const size_t  ldb,
TRSMHelper< StructureHelper::Recursive, ParSeqTrait > &  H 
)
inline

◆ ftrsm() [5/9]

void ftrsm ( const Givaro::Modular< Givaro::Integer > &  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 Givaro::Integer  alpha,
const Givaro::Integer *  A,
const size_t  lda,
Givaro::Integer *  B,
const size_t  ldb 
)
inline

◆ cblas_imptrsm()

void cblas_imptrsm ( const enum FFLAS_ORDER  Order,
const enum FFLAS_SIDE  Side,
const enum FFLAS_UPLO  Uplo,
const enum FFLAS_TRANSPOSE  TransA,
const enum FFLAS_DIAG  Diag,
const int  M,
const int  N,
const FFPACK::rns_double_elt  alpha,
FFPACK::rns_double_elt_cstptr  A,
const int  lda,
FFPACK::rns_double_elt_ptr  B,
const int  ldb 
)
inline

◆ ftrsv() [1/2]

void ftrsv ( const Field F,
const FFLAS_UPLO  Uplo,
const FFLAS_TRANSPOSE  TransA,
const FFLAS_DIAG  Diag,
const size_t  N,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::Element_ptr  X,
int  incX 
)
inline

ftrsv: TRiangular System solve with Vector Computes $ X \gets \mathrm{op}(A^{-1}) X$

Parameters
Ffield
Xvector of size N on a field F
incXstride of X
Aa matrix of leading dimension lda and size N
ldaleading dimension of A
Nnumber of rows or columns of A according to TransA
TransAif TransA==FflasTrans then $\mathrm{op}(A)=A^t$.
Diagif Diag==FflasUnit then A is unit.
Uploif Uplo==FflasUpper then A is upper triangular

◆ igemm_()

void igemm_ ( const enum FFLAS_ORDER  Order,
const enum FFLAS_TRANSPOSE  TransA,
const enum FFLAS_TRANSPOSE  TransB,
const size_t  M,
const size_t  N,
const size_t  K,
const int64_t  alpha,
const int64_t *  A,
const size_t  lda,
const int64_t *  B,
const size_t  ldb,
const int64_t  beta,
int64_t *  C,
const size_t  ldc 
)
inline

◆ finit() [5/8]

void finit ( const Field F,
const size_t  n,
const OtherElement_ptr  Y,
const size_t  incY,
typename Field::Element_ptr  X,
const size_t  incX 
)

finit $x \gets  y mod F$.

Parameters
Ffield
nsize of the vectors
Yvector of OtherElement
incYstride of Y
Xvector in F
incXstride of X
Bug:
use cblas_(d)scal when possible

◆ fconvert() [1/3]

void fconvert ( const Field F,
const size_t  n,
OtherElement_ptr  X,
const size_t  incX,
typename Field::ConstElement_ptr  Y,
const size_t  incY 
)

fconvert $x \gets  y mod F$.

Parameters
Ffield
nsize of the vectors
Yvector of F
incYstride of Y
Xvector in OtherElement
incXstride of X
Bug:
use cblas_(d)scal when possible

◆ fnegin() [1/4]

void fnegin ( const Field F,
const size_t  n,
typename Field::Element_ptr  X,
const size_t  incX 
)

fnegin $x \gets - x$.

Parameters
Ffield
nsize of the vectors
Xvector in F
incXstride of X
Bug:
use cblas_(d)scal when possible

◆ fneg() [1/4]

void fneg ( const Field F,
const size_t  n,
typename Field::ConstElement_ptr  Y,
const size_t  incY,
typename Field::Element_ptr  X,
const size_t  incX 
)

fneg $x \gets - y$.

Parameters
Ffield
nsize of the vectors
Xvector in F
incXstride of X
Yvector in F
incYstride of Y
Bug:
use cblas_(d)scal when possible

◆ fzero() [1/5]

void fzero ( const Field F,
const size_t  n,
typename Field::Element_ptr  X,
const size_t  incX 
)

fzero : $A \gets 0 $.

Parameters
Ffield
nnumber of elements to zero
Xvector in F
incXstride of X

◆ frand() [1/2]

void frand ( const Field F,
RandIter &  G,
const size_t  n,
typename Field::Element_ptr  X,
const size_t  incX 
)

frand : $A \gets random $.

Parameters
Ffield
Grandomiterator
nnumber of elements to randomize
Xvector in F
incXstride of X

◆ fiszero() [1/4]

bool fiszero ( const Field F,
const size_t  n,
typename Field::ConstElement_ptr  X,
const size_t  incX 
)

fiszero : test $X = 0 $.

Parameters
Ffield
nvector dimension
Xvector in F
incXincrement of X

◆ fequal() [1/4]

bool fequal ( const Field F,
const size_t  n,
typename Field::ConstElement_ptr  X,
const size_t  incX,
typename Field::ConstElement_ptr  Y,
const size_t  incY 
)

fequal : test $X = Y $.

Parameters
Ffield
nvector dimension
Xvector in F
incXincrement of X
Yvector in F
incYincrement of Y

◆ faxpby() [1/2]

void faxpby ( const Field F,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY 
)

faxpby : $y \gets \alpha \cdot x + \beta \cdot y$.

Parameters
Ffield
Nsize of the vectors
alphascalar
[in]Xvector in F
incXstride of X
betascalar
[in,out]Yvector in F
incYstride of Y
Note
this is a catlas function

◆ fdot() [9/11]

Field::Element fdot ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  X,
const size_t  incX,
typename Field::ConstElement_ptr  Y,
const size_t  incY,
const ParSeqHelper::Parallel< Cut, Param >  par 
)
inline

◆ fswap() [1/2]

void fswap ( const Field F,
const size_t  N,
typename Field::Element_ptr  X,
const size_t  incX,
typename Field::Element_ptr  Y,
const size_t  incY 
)

fswap: $ X \leftrightarrow Y$.

Bug:
use cblas_dswap when double
Parameters
Ffield
Nsize of the vectors
Xvector in F
incXstride of X
Yvector in F
incYstride of Y

◆ fzero() [2/5]

void fzero ( const Field F,
const size_t  m,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda 
)

fzero : $A \gets 0 $.

Parameters
Ffield
mnumber of rows to zero
nnumber of cols to zero
Amatrix in F
ldastride of A
Warning
may be buggy if Element is larger than int

◆ fzero() [3/5]

void fzero ( const Field F,
const FFLAS_UPLO  shape,
const FFLAS_DIAG  diag,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda 
)

fzero : $A \gets 0 $ for a triangular matrix.

Parameters
Ffield
shapeshape of the triangular matrix
mnumber of rows to zero
nnumber of cols to zero
Amatrix in F
ldastride of A
Warning
may be buggy if Element is larger than int

◆ frand() [2/2]

void frand ( const Field F,
RandIter &  G,
const size_t  m,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda 
)

frand : $A \gets random $.

Parameters
Ffield
Grandomiterator
mnumber of rows to randomize
nnumber of cols to randomize
Amatrix in F
ldastride of A

◆ fequal() [2/4]

bool fequal ( const Field F,
const size_t  m,
const size_t  n,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb 
)

fequal : test $A = B $.

Parameters
Ffield
mrow dimension
ncolumn dimension
Am x n matrix in F
ldaleading dimension of A
Bm x n matrix in F
ldbleading dimension of B

◆ fiszero() [2/4]

bool fiszero ( const Field F,
const size_t  m,
const size_t  n,
typename Field::ConstElement_ptr  A,
const size_t  lda 
)

fiszero : test $A = 0 $.

Parameters
Ffield
mrow dimension
ncolumn dimension
Am x n matrix in F
ldaleading dimension of A

◆ fidentity() [1/4]

void fidentity ( const Field F,
const size_t  m,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda,
const typename Field::Element &  d 
)

creates a diagonal matrix

◆ fidentity() [2/4]

void fidentity ( const Field F,
const size_t  m,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda 
)

creates a diagonal matrix

◆ finit() [6/8]

void finit ( const Field F,
const size_t  m,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda 
)

finit Initializes A in F$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A

◆ fconvert() [2/3]

void fconvert ( const Field F,
const size_t  m,
const size_t  n,
OtherElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb 
)

fconvert $A \gets  B mod F$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in OtherElement
ldastride of A
Bmatrix in F
ldbstride of B
Todo:
check if n == lda

◆ fnegin() [2/4]

void fnegin ( const Field F,
const size_t  m,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda 
)

fnegin $A \gets - A$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A
Todo:
check if n == lda

◆ fneg() [2/4]

void fneg ( const Field F,
const size_t  m,
const size_t  n,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
typename Field::Element_ptr  A,
const size_t  lda 
)

fneg $A \gets  - B$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A
Todo:
check if n == lda

◆ faxpby() [2/2]

void faxpby ( const Field F,
const size_t  m,
const size_t  n,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  X,
const size_t  ldx,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  ldy 
)

faxpby : $y \gets \alpha \cdot x + \beta \cdot y$.

Parameters
Ffield
mrow dimension
ncolumn dimension
alphascalar
[in]Xvector in F
ldxleading dimension of X
betascalar
[in,out]Yvector in F
ldyleading dimension of Y
Note
this is a catlas function

◆ fmove() [1/2]

void fmove ( const Field F,
const size_t  m,
const size_t  n,
typename Field::Element_ptr  A,
const size_t  lda,
typename Field::Element_ptr  B,
const size_t  ldb 
)

fmove : $A \gets B $ and $ B \gets 0$.

Parameters
Ffield
mnumber of rows to copy
nnumber of cols to copy
Amatrix in F
ldastride of A
Bmatrix in F
ldbstride of B

◆ bitsize()

size_t bitsize ( const Field F,
size_t  M,
size_t  N,
const typename Field::ConstElement_ptr  A,
size_t  lda 
)
inline

bitsize: Computes the largest bitsize of the matrix' coefficients.

If the matrix is over a modular prime field, it returns the bitsize of the largest element (in a bsolute value)

Parameters
Ffield
Mrows
Ncols
incXstride of X
Aa matrix of leading dimension lda and size MxN
ldaleading dimension of A

◆ bitsize< Givaro::ZRing< Givaro::Integer > >()

size_t bitsize< Givaro::ZRing< Givaro::Integer > > ( const Givaro::ZRing< Givaro::Integer > &  F,
size_t  M,
size_t  N,
const Givaro::Integer *  A,
size_t  lda 
)
inline

◆ ftrmv()

void ftrmv ( const Field F,
const FFLAS_UPLO  Uplo,
const FFLAS_TRANSPOSE  TransA,
const FFLAS_DIAG  Diag,
const size_t  N,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::Element_ptr  X,
int  incX 
)

ftrsm: TRiangular Matrix Vector prodcut Computes $ X \gets \mathrm{op}(A) X$

Parameters
Ffield
Xvector of size N on a field F
incXstride of X
Aa matrix of leading dimension lda and size N
ldaleading dimension of A
Nnumber of rows and columns of A
TransAif TransA==FflasTrans then $\mathrm{op}(A)=A^T$.
Diagif Diag==FflasUnit then A is unit diagonal.
Uploif Uplo==FflasUpper then A is upper triangular

◆ ftrsm() [6/9]

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::ConstElement_ptr  A,
const size_t  lda,
typename Field::Element_ptr  B,
const size_t  ldb 
)

ftrsm: TRiangular System solve with Matrix.

Computes $ B \gets \alpha \mathrm{op}(A^{-1}) B$ or $B \gets \alpha B \mathrm{op}(A^{-1})$.

Parameters
Ffield
Sideif Side==FflasLeft then $ B \gets \alpha \mathrm{op}(A^{-1}) B$ is computed.
Uploif Uplo==FflasUpper then A is upper triangular
TransAif TransA==FflasTrans then $\mathrm{op}(A)=A^t$.
Diagif Diag==FflasUnit then A is unit.
Mrows of B
Ncols of B
alphascalar
Atriangular invertible matrix. If Side==FflasLeft then A is $N\times N$, otherwise A is $M\times M$
ldaleading dim of A
Bmatrix of size MxN
ldbleading dim of B
Bug:
$\alpha$ must be non zero.

◆ fsyrk_strassen() [2/2]

Field::Element_ptr fsyrk_strassen ( const Field F,
const FFLAS_UPLO  UpLo,
const FFLAS_TRANSPOSE  trans,
const size_t  N,
const size_t  K,
const typename Field::Element  y1,
const typename Field::Element  y2,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, FieldTrait > &  H 
)
inline

◆ pfgemm() [1/7]

Field::Element_ptr pfgemm ( 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,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
size_t  numthreads = 0 
)

◆ pfgemm_1D_rec()

Field::Element * pfgemm_1D_rec ( 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_ptr  A,
const size_t  lda,
const typename Field::Element_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element *  C,
const size_t  ldc,
size_t  seuil 
)

◆ pfgemm_2D_rec()

Field::Element * pfgemm_2D_rec ( 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_ptr  A,
const size_t  lda,
const typename Field::Element_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element *  C,
const size_t  ldc,
size_t  seuil 
)

◆ pfgemm_3D_rec()

Field::Element * pfgemm_3D_rec ( 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_ptr  A,
const size_t  lda,
const typename Field::Element_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
size_t  seuil,
size_t *  x 
)

◆ pfgemm_3D_rec2()

Field::Element_ptr pfgemm_3D_rec2 ( 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_ptr  A,
const size_t  lda,
const typename Field::Element_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
size_t  seuil,
size_t *  x 
)

◆ fgemm() [19/23]

std::enable_if<!std::is_same< ModeTrait, ModeCategories::ConvertTo< ElementCategories::RNSElementTag > >::value, typenameField::Element_ptr >::type fgemm ( const Field F,
const FFLAS::FFLAS_TRANSPOSE  ta,
const FFLAS::FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, ModeTrait, ParSeqHelper::Parallel< Strat, Param > > &  H 
)
inline

◆ ftrsm() [7/9]

Field::Element_ptr ftrsm ( const Field F,
const FFLAS::FFLAS_SIDE  Side,
const FFLAS::FFLAS_UPLO  UpLo,
const FFLAS::FFLAS_TRANSPOSE  TA,
const FFLAS::FFLAS_DIAG  Diag,
const size_t  m,
const size_t  n,
const typename Field::Element  alpha,
typename Field::Element_ptr  A,
const size_t  lda,
typename Field::Element_ptr  B,
const size_t  ldb,
TRSMHelper< StructureHelper::Iterative, ParSeqHelper::Parallel< Cut, Param > > &  H 
)
inline

◆ ftrsm() [8/9]

Field::Element_ptr ftrsm ( const Field F,
const FFLAS::FFLAS_SIDE  Side,
const FFLAS::FFLAS_UPLO  UpLo,
const FFLAS::FFLAS_TRANSPOSE  TA,
const FFLAS::FFLAS_DIAG  Diag,
const size_t  m,
const size_t  n,
const typename Field::Element  alpha,
typename Field::Element_ptr  A,
const size_t  lda,
typename Field::Element_ptr  B,
const size_t  ldb,
TRSMHelper< StructureHelper::Hybrid, ParSeqHelper::Parallel< Cut, Param > > &  H 
)
inline

◆ fspmv() [1/10]

void fspmv ( const Field F,
const SM &  A,
typename Field::ConstElement_ptr  x,
const typename Field::Element &  beta,
typename Field::Element_ptr  y 
)
inline

◆ fspmm() [1/3]

void fspmm ( const Field F,
const SM &  A,
size_t  blockSize,
typename Field::ConstElement_ptr  x,
int  ldx,
const typename Field::Element &  beta,
typename Field::Element_ptr  y,
int  ldy 
)
inline

◆ sparse_init() [1/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::COO > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_init() [2/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::COO_ZO > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_delete() [1/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::COO > &  A)
inline

◆ sparse_delete() [2/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::COO_ZO > &  A)
inline

◆ sparse_init() [3/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::CSR > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_init() [4/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::CSR_ZO > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_delete() [3/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::CSR > &  A)
inline

◆ sparse_delete() [4/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::CSR_ZO > &  A)
inline

◆ sparse_print() [1/3]

std::ostream & sparse_print ( std::ostream &  os,
const Sparse< Field, SparseMatrix_t::CSR > &  A 
)
inline

◆ sparse_init() [5/18]

void sparse_init ( const Givaro::Modular< Givaro::Integer > &  F,
Sparse< Givaro::Modular< Givaro::Integer >, SparseMatrix_t::CSR > &  A,
const IndexT *  row,
const IndexT *  col,
Givaro::Integer *  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_init() [6/18]

void sparse_init ( const Givaro::ZRing< Givaro::Integer > &  F,
Sparse< Givaro::ZRing< Givaro::Integer >, SparseMatrix_t::CSR_ZO > &  A,
const IndexT *  row,
const IndexT *  col,
Givaro::Integer *  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_init() [7/18]

void sparse_init ( const Givaro::ZRing< RecInt::rmint< RECINT_SIZE > > &  F,
Sparse< Givaro::ZRing< RecInt::rmint< RECINT_SIZE > >, SparseMatrix_t::CSR_ZO > &  A,
const IndexT *  row,
const IndexT *  col,
typename Givaro::ZRing< RecInt::rmint< RECINT_SIZE > >::Element_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_init() [8/18]

void sparse_init ( const Givaro::ZRing< RecInt::rmint< RECINT_SIZE > > &  F,
Sparse< Givaro::ZRing< RecInt::rmint< RECINT_SIZE > >, SparseMatrix_t::CSR > &  A,
const IndexT *  row,
const IndexT *  col,
typename Givaro::ZRing< RecInt::rmint< RECINT_SIZE > >::Element_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_delete() [5/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::CSR_HYB > &  A)
inline

◆ sparse_init() [9/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::CSR_HYB > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_init() [10/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::ELL > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_init() [11/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::ELL_ZO > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_delete() [6/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::ELL > &  A)
inline

◆ sparse_delete() [7/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::ELL_ZO > &  A)
inline

◆ fspmv() [2/10]

void fspmv ( const Field F,
const Sparse< Field, SparseMatrix_t::ELL_R > &  A,
typename Field::ConstElement_ptr  x,
const typename Field::Element &  beta,
typename Field::Element_ptr  y 
)
inline

◆ fspmv() [3/10]

void fspmv ( const Field F,
const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &  A,
typename Field::ConstElement_ptr  x,
const typename Field::Element &  beta,
typename Field::Element_ptr  y 
)
inline

◆ fspmm() [2/3]

void fspmm ( const Field F,
const Sparse< Field, SparseMatrix_t::ELL_R > &  A,
const size_t  blockSize,
const typename Field::Element_ptr x,
const int  ldx,
const typename Field::Element &  beta,
typename Field::Element_ptr y,
const int  ldy 
)

◆ fspmm() [3/3]

void fspmm ( const Field F,
const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &  A,
const size_t  blockSize,
const typename Field::Element_ptr x,
const int  ldx,
const typename Field::Element &  beta,
typename Field::Element_ptr y,
const int  ldy 
)

◆ fspmv() [4/10]

void fspmv ( const Field F,
const Sparse< Field, SparseMatrix_t::ELL_R > &  A,
typename Field::ConstElement_ptr  x,
typename Field::Element_ptr  y,
FieldCategories::GenericTag   
)
inline

◆ fspmv() [5/10]

void fspmv ( const Field F,
const Sparse< Field, SparseMatrix_t::ELL_R > &  A,
typename Field::ConstElement_ptr  x,
typename Field::Element_ptr  y,
FieldCategories::UnparametricTag   
)
inline

◆ fspmv() [6/10]

void fspmv ( const Field F,
const Sparse< Field, SparseMatrix_t::ELL_R > &  A,
typename Field::ConstElement_ptr  x,
typename Field::Element_ptr  y,
FieldCategories::ModularTag   
)
inline

◆ fspmv() [7/10]

void fspmv ( const Field F,
const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &  A,
typename Field::ConstElement_ptr  x,
typename Field::Element_ptr  y,
FieldCategories::GenericTag   
)
inline

◆ fspmv() [8/10]

void fspmv ( const Field F,
const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &  A,
typename Field::ConstElement_ptr  x,
typename Field::Element_ptr  y,
FieldCategories::UnparametricTag   
)
inline

◆ fspmv() [9/10]

void fspmv ( const Field F,
const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &  A,
typename Field::ConstElement_ptr  x,
typename Field::Element_ptr  y,
FieldCategories::ModularTag   
)
inline

◆ sparse_delete() [8/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::ELL_R > &  A)
inline

◆ sparse_delete() [9/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::ELL_R_ZO > &  A)
inline

◆ sparse_init() [12/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::ELL_R > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_init() [13/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::ELL_R_ZO > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_init() [14/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::ELL_simd > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_init() [15/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::ELL_simd_ZO > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ sparse_delete() [10/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::ELL_simd > &  A)
inline

◆ sparse_delete() [11/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::ELL_simd_ZO > &  A)
inline

◆ sparse_print() [2/3]

void sparse_print ( const Sparse< Field, SparseMatrix_t::ELL_simd > &  A)
inline

◆ sparse_delete() [12/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::HYB_ZO > &  A)
inline

◆ sparse_init() [16/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::HYB_ZO > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ operator<<()

std::ostream & operator<< ( std::ostream &  os,
const Sparse< _Field, SparseMatrix_t::HYB_ZO > &  A 
)

◆ readSmsFormat()

void readSmsFormat ( const std::string &  path,
const Field f,
index_t *&  row,
index_t *&  col,
typename Field::Element_ptr val,
index_t rowdim,
index_t coldim,
uint64_t &  nnz 
)

◆ readSprFormat()

void readSprFormat ( const std::string &  path,
const Field f,
index_t *&  row,
index_t *&  col,
typename Field::Element_ptr val,
index_t rowdim,
index_t coldim,
uint64_t &  nnz 
)

◆ getDataType() [1/4]

std::enable_if< std::is_integral< T >::value, int > getDataType ( )

◆ getDataType() [2/4]

std::enable_if< std::is_floating_point< T >::value, int > getDataType ( )

◆ getDataType() [3/4]

std::enable_if< std::is_same< T, mpz_t >::value, int > getDataType ( )

◆ getDataType() [4/4]

int getDataType ( )

◆ readMachineType()

void readMachineType ( const Field F,
typename Field::Element &  modulo,
typename Field::Element_ptr  val,
std::ifstream &  file,
const uint64_t  dims,
const mask_t  data_type,
const mask_t  field_desc 
)

◆ readDnsFormat()

void readDnsFormat ( const std::string &  path,
const Field F,
index_t rowdim,
index_t coldim,
typename Field::Element_ptr val 
)

◆ writeDnsFormat()

void writeDnsFormat ( const std::string &  path,
const Field F,
const index_t rowdim,
const index_t coldim,
typename Field::Element_ptr  A,
index_t  ldA 
)

◆ fspmv() [10/10]

void fspmv ( const Field F,
const Sparse< Field, SparseMatrix_t::SELL_ZO > &  A,
typename Field::ConstElement_ptr  x,
typename Field::Element_ptr  y,
FieldCategories::ModularTag   
)
inline

◆ sparse_delete() [13/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::SELL > &  A)
inline

◆ sparse_delete() [14/14]

void sparse_delete ( const Sparse< Field, SparseMatrix_t::SELL_ZO > &  A)
inline

◆ sparse_print() [3/3]

void sparse_print ( const Sparse< Field, SparseMatrix_t::SELL > &  A)
inline

◆ sparse_init() [17/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::SELL > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz,
uint64_t  sigma = 0 
)
inline

◆ sparse_init() [18/18]

void sparse_init ( const Field F,
Sparse< Field, SparseMatrix_t::SELL_ZO > &  A,
const IndexT *  row,
const IndexT *  col,
typename Field::ConstElement_ptr  dat,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)
inline

◆ computeDeviation()

double computeDeviation ( It  begin,
It  end 
)

◆ getStat()

StatsMatrix getStat ( const Field F,
const index_t row,
const index_t col,
typename Field::ConstElement_ptr  val,
uint64_t  rowdim,
uint64_t  coldim,
uint64_t  nnz 
)

◆ maxCardinality()

Field::Residu_t maxCardinality ( )
inline

◆ maxCardinality< Givaro::Modular< int64_t > >()

uint64_t maxCardinality< Givaro::Modular< int64_t > > ( )
inline

◆ maxCardinality< Givaro::Modular< int32_t > >()

uint32_t maxCardinality< Givaro::Modular< int32_t > > ( )
inline

◆ minCardinality()

Field::Residu_t minCardinality ( )
inline

◆ fflas_delete() [1/4]

void fflas_delete ( FFPACK::rns_double_elt_ptr  A)
inline

◆ fflas_delete() [2/4]

void fflas_delete ( FFPACK::rns_double_elt_cstptr  A)
inline

◆ fflas_new() [1/7]

FFPACK::rns_double_elt_ptr fflas_new ( const FFPACK::RNSIntegerMod< FFPACK::rns_double > &  F,
const size_t  m,
const Alignment  align 
)
inline

◆ fflas_new() [2/7]

FFPACK::rns_double_elt_ptr fflas_new ( const FFPACK::RNSIntegerMod< FFPACK::rns_double > &  F,
const size_t  m,
const size_t  n,
const Alignment  align 
)
inline

◆ finit_rns() [1/2]

void finit_rns ( const FFPACK::RNSIntegerMod< RNS > &  F,
const size_t  m,
const size_t  n,
size_t  k,
const Givaro::Integer *  B,
const size_t  ldb,
typename RNS::Element_ptr  A 
)

◆ finit_trans_rns()

void finit_trans_rns ( const FFPACK::RNSIntegerMod< RNS > &  F,
const size_t  m,
const size_t  n,
size_t  k,
const Givaro::Integer *  B,
const size_t  ldb,
typename RNS::Element_ptr  A 
)

◆ fconvert_rns() [1/2]

void fconvert_rns ( const FFPACK::RNSIntegerMod< RNS > &  F,
const size_t  m,
const size_t  n,
Givaro::Integer  alpha,
Givaro::Integer *  B,
const size_t  ldb,
typename RNS::ConstElement_ptr  A 
)

◆ fconvert_trans_rns()

void fconvert_trans_rns ( const FFPACK::RNSIntegerMod< RNS > &  F,
const size_t  m,
const size_t  n,
Givaro::Integer  alpha,
Givaro::Integer *  B,
const size_t  ldb,
typename RNS::ConstElement_ptr  A 
)

◆ fflas_new() [3/7]

FFPACK::rns_double_elt_ptr fflas_new ( const FFPACK::RNSInteger< FFPACK::rns_double > &  F,
const size_t  m,
const Alignment  align 
)
inline

◆ fflas_new() [4/7]

FFPACK::rns_double_elt_ptr fflas_new ( const FFPACK::RNSInteger< FFPACK::rns_double > &  F,
const size_t  m,
const size_t  n,
const Alignment  align 
)
inline

◆ finit_rns() [2/2]

void finit_rns ( const FFPACK::RNSInteger< RNS > &  F,
const size_t  m,
const size_t  n,
size_t  k,
const Givaro::Integer *  B,
const size_t  ldb,
typename FFPACK::RNSInteger< RNS >::Element_ptr  A 
)

◆ fconvert_rns() [2/2]

void fconvert_rns ( const FFPACK::RNSInteger< RNS > &  F,
const size_t  m,
const size_t  n,
Givaro::Integer  alpha,
Givaro::Integer *  B,
const size_t  ldb,
typename FFPACK::RNSInteger< RNS >::ConstElement_ptr  A 
)

◆ freduce() [8/11]

template INST_OR_DECL void freduce ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
FFLAS_ELT X,
const size_t  incX 
)

freduce $x \gets  x mod F$.

Parameters
Ffield
nsize of the vectors
Xvector in F
incXstride of X
Bug:
use cblas_(d)scal when possible

◆ freduce() [9/11]

template INST_OR_DECL void freduce ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
const FFLAS_ELT Y,
const size_t  incY,
FFLAS_ELT X,
const size_t  incX 
)

freduce $x \gets  y mod F$.

Parameters
Ffield
nsize of the vectors
Yvector of Element
incYstride of Y
Xvector in F
incXstride of X
Bug:
use cblas_(d)scal when possible

◆ finit() [7/8]

template INST_OR_DECL void finit ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
const FFLAS_ELT Y,
const size_t  incY,
FFLAS_ELT X,
const size_t  incX 
)

finit $x \gets  y mod F$.

Parameters
Ffield
nsize of the vectors
Yvector of OtherElement
incYstride of Y
Xvector in F
incXstride of X
Bug:
use cblas_(d)scal when possible

◆ fconvert() [3/3]

template INST_OR_DECL void fconvert ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
FFLAS_ELT X,
const size_t  incX,
const FFLAS_ELT Y,
const size_t  incY 
)

fconvert $x \gets  y mod F$.

Parameters
Ffield
nsize of the vectors
Yvector of F
incYstride of Y
Xvector in OtherElement
incXstride of X
Bug:
use cblas_(d)scal when possible

◆ fnegin() [3/4]

template INST_OR_DECL void fnegin ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
FFLAS_ELT X,
const size_t  incX 
)

fnegin $x \gets - x$.

Parameters
Ffield
nsize of the vectors
Xvector in F
incXstride of X
Bug:
use cblas_(d)scal when possible

◆ fneg() [3/4]

template INST_OR_DECL void fneg ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
const FFLAS_ELT Y,
const size_t  incY,
FFLAS_ELT X,
const size_t  incX 
)

fneg $x \gets - y$.

Parameters
Ffield
nsize of the vectors
Xvector in F
incXstride of X
Yvector in F
incYstride of Y
Bug:
use cblas_(d)scal when possible

◆ fzero() [4/5]

template INST_OR_DECL void fzero ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
FFLAS_ELT X,
const size_t  incX 
)

fzero : $A \gets 0 $.

Parameters
Ffield
nnumber of elements to zero
Xvector in F
incXstride of X

◆ fiszero() [3/4]

template INST_OR_DECL bool fiszero ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
const FFLAS_ELT X,
const size_t  incX 
)

fiszero : test $X = 0 $.

Parameters
Ffield
nvector dimension
Xvector in F
incXincrement of X

◆ fequal() [3/4]

template INST_OR_DECL bool fequal ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
const FFLAS_ELT X,
const size_t  incX,
const FFLAS_ELT Y,
const size_t  incY 
)

fequal : test $X = Y $.

Parameters
Ffield
nvector dimension
Xvector in F
incXincrement of X
Yvector in F
incYincrement of Y

◆ fassign() [9/10]

template INST_OR_DECL void fassign ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  N,
const FFLAS_ELT Y,
const size_t  incY,
FFLAS_ELT X,
const size_t  incX 
)

fassign : $x \gets y $.

X is preallocated

Todo:
variant for triagular matrix
Parameters
Ffield
Nsize of the vectors
[out]Xvector in F
incXstride of X
[in]Yvector in F
incYstride of Y

◆ fscalin() [9/10]

template INST_OR_DECL void fscalin ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
const FFLAS_ELT  alpha,
FFLAS_ELT X,
const size_t  incX 
)

fscalin $x \gets \alpha \cdot x$.

Parameters
Ffield
nsize of the vectors
alphascalar
Xvector in F
incXstride of X
Bug:
use cblas_(d)scal when possible
Todo:
check if comparison with +/-1,0 is necessary.

◆ fscal() [9/10]

template INST_OR_DECL void fscal ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  n,
const FFLAS_ELT  alpha,
const FFLAS_ELT X,
const size_t  incX,
FFLAS_ELT Y,
const size_t  incY 
)

fscal $y \gets \alpha \cdot x$.

Parameters
Ffield
nsize of the vectors
alphascalar
[in]Xvector in F
incXstride of X
[out]Yvector in F
incYstride of Y
Bug:
use cblas_(d)scal when possible
Todo:
check if comparison with +/-1,0 is necessary.

◆ faxpy() [5/6]

template INST_OR_DECL void faxpy ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  N,
const FFLAS_ELT  alpha,
const FFLAS_ELT X,
const size_t  incX,
FFLAS_ELT Y,
const size_t  incY 
)

faxpy : $y \gets \alpha \cdot x + y$.

Parameters
Ffield
Nsize of the vectors
alphascalar
[in]Xvector in F
incXstride of X
[in,out]Yvector in F
incYstride of Y

◆ fdot() [10/11]

template INST_OR_DECL FFLAS_ELT fdot ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  N,
const FFLAS_ELT X,
const size_t  incX,
const FFLAS_ELT Y,
const size_t  incY 
)

faxpby : $y \gets \alpha \cdot x + \beta \cdot y$.

Parameters
Ffield
Nsize of the vectors
alphascalar
[in]Xvector in F
incXstride of X
betascalar
[in,out]Yvector in F
incYstride of Y
Note
this is a catlas function

fdot: dot product $x^T  y$.

Parameters
Ffield
Nsize of the vectors
Xvector in F
incXstride of X
Yvector in F
incYstride of Y

◆ fswap() [2/2]

template INST_OR_DECL void fswap ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  N,
FFLAS_ELT X,
const size_t  incX,
FFLAS_ELT Y,
const size_t  incY 
)

fswap: $ X \leftrightarrow Y$.

Bug:
use cblas_dswap when double
Parameters
Ffield
Nsize of the vectors
Xvector in F
incXstride of X
Yvector in F
incYstride of Y

◆ fadd() [5/8]

template INST_OR_DECL void fadd ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  N,
const FFLAS_ELT A,
const size_t  inca,
const FFLAS_ELT B,
const size_t  incb,
FFLAS_ELT C,
const size_t  incc 
)

◆ fsub() [3/4]

template INST_OR_DECL void fsub ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  N,
const FFLAS_ELT A,
const size_t  inca,
const FFLAS_ELT B,
const size_t  incb,
FFLAS_ELT C,
const size_t  incc 
)

◆ faddin() [4/5]

template INST_OR_DECL void faddin ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  N,
const FFLAS_ELT B,
const size_t  incb,
FFLAS_ELT C,
const size_t  incc 
)

◆ fadd() [6/8]

template INST_OR_DECL void fadd ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  N,
const FFLAS_ELT A,
const size_t  inca,
const FFLAS_ELT  alpha,
const FFLAS_ELT B,
const size_t  incb,
FFLAS_ELT C,
const size_t  incc 
)

◆ fassign() [10/10]

template INST_OR_DECL void fassign ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
const FFLAS_ELT B,
const size_t  ldb,
FFLAS_ELT A,
const size_t  lda 
)

fassign : $A \gets B $.

Parameters
Ffield
mnumber of rows to copy
nnumber of cols to copy
Amatrix in F
ldastride of A
Bvector in F
ldbstride of B

◆ fzero() [5/5]

template INST_OR_DECL void fzero ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
FFLAS_ELT A,
const size_t  lda 
)

fzero : $A \gets 0 $.

Parameters
Ffield
mnumber of rows to zero
nnumber of cols to zero
Amatrix in F
ldastride of A
Warning
may be buggy if Element is larger than int

◆ fequal() [4/4]

template INST_OR_DECL bool fequal ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
const FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT B,
const size_t  ldb 
)

fequal : test $A = B $.

Parameters
Ffield
mrow dimension
ncolumn dimension
Am x n matrix in F
ldaleading dimension of A
Bm x n matrix in F
ldbleading dimension of B

◆ fiszero() [4/4]

template INST_OR_DECL bool fiszero ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
const FFLAS_ELT A,
const size_t  lda 
)

fiszero : test $A = 0 $.

Parameters
Ffield
mrow dimension
ncolumn dimension
Am x n matrix in F
ldaleading dimension of A

◆ fidentity() [3/4]

template INST_OR_DECL void fidentity ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT d 
)

creates a diagonal matrix

◆ fidentity() [4/4]

template INST_OR_DECL void fidentity ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
FFLAS_ELT A,
const size_t  lda 
)

creates a diagonal matrix

◆ freduce() [10/11]

template INST_OR_DECL void freduce ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
FFLAS_ELT A,
const size_t  lda 
)

freduce $A \gets  A mod F$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A

◆ freduce() [11/11]

template INST_OR_DECL void freduce ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
const FFLAS_ELT B,
const size_t  ldb,
FFLAS_ELT A,
const size_t  lda 
)

freduce $A \gets  B mod F$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A
Bmatrix in Element
ldbstride of B

◆ finit() [8/8]

template INST_OR_DECL void finit ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
const FFLAS_ELT B,
const size_t  ldb,
FFLAS_ELT A,
const size_t  lda 
)

finit $A \gets  B mod F$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A
Bmatrix in F
ldbstride of B

◆ fnegin() [4/4]

template INST_OR_DECL void fnegin ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
FFLAS_ELT A,
const size_t  lda 
)

fnegin $A \gets - A$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A

◆ fneg() [4/4]

template INST_OR_DECL void fneg ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
const FFLAS_ELT B,
const size_t  ldb,
FFLAS_ELT A,
const size_t  lda 
)

fneg $A \gets  - B$.

Parameters
Ffield
mnumber of rows
nnumber of cols
Amatrix in F
ldastride of A

◆ fscalin() [10/10]

template INST_OR_DECL void fscalin ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
const FFLAS_ELT  alpha,
FFLAS_ELT A,
const size_t  lda 
)

fscalin $A \gets a \cdot A$.

Parameters
Ffield
mnumber of rows
nnumber of cols
alphahomotecie scalar
Amatrix in F
ldastride of A

◆ fscal() [10/10]

template INST_OR_DECL void fscal ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
const FFLAS_ELT  alpha,
const FFLAS_ELT A,
const size_t  lda,
FFLAS_ELT B,
const size_t  ldb 
)

fscal $B \gets a \cdot A$.

Parameters
Ffield
mnumber of rows
nnumber of cols
alphahomotecie scalar
[in]Amatrix in F
ldastride of A
[out]Bmatrix in F
ldbstride of B

◆ faxpy() [6/6]

template INST_OR_DECL void faxpy ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
const FFLAS_ELT  alpha,
const FFLAS_ELT X,
const size_t  ldx,
FFLAS_ELT Y,
const size_t  ldy 
)

faxpy : $y \gets \alpha \cdot x + y$.

Parameters
Ffield
mrow dimension
ncolumn dimension
alphascalar
[in]Xvector in F
ldxleading dimension of X
[in,out]Yvector in F
ldyleading dimension of Y

◆ fmove() [2/2]

template INST_OR_DECL void fmove ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  m,
const size_t  n,
FFLAS_ELT A,
const size_t  lda,
FFLAS_ELT B,
const size_t  ldb 
)

faxpby : $y \gets \alpha \cdot x + \beta \cdot y$.

Parameters
Ffield
mrow dimension
ncolumn dimension
alphascalar
[in]Xvector in F
ldxleading dimension of X
betascalar
[in,out]Yvector in F
ldyleading dimension of Y
Note
this is a catlas function

fmove : $A \gets B $ and $ B \gets 0$.

Parameters
Ffield
mnumber of rows to copy
nnumber of cols to copy
Amatrix in F
ldastride of A
Bvector in F
ldbstride of B

◆ fadd() [7/8]

template INST_OR_DECL void fadd ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  M,
const size_t  N,
const FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT B,
const size_t  ldb,
FFLAS_ELT C,
const size_t  ldc 
)

fadd : matrix addition.

Computes C = A + B.

Parameters
Ffield
Mrows
Ncols
Adense matrix of size MxN
ldaleading dimension of A
Bdense matrix of size MxN
ldbleading dimension of B
Cdense matrix of size MxN
ldcleading dimension of C

◆ fsub() [4/4]

template INST_OR_DECL void fsub ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  M,
const size_t  N,
const FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT B,
const size_t  ldb,
FFLAS_ELT C,
const size_t  ldc 
)

fsub : matrix subtraction.

Computes C = A - B.

Parameters
Ffield
Mrows
Ncols
Adense matrix of size MxN
ldaleading dimension of A
Bdense matrix of size MxN
ldbleading dimension of B
Cdense matrix of size MxN
ldcleading dimension of C

◆ fsubin() [3/3]

template INST_OR_DECL void fsubin ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  M,
const size_t  N,
const FFLAS_ELT B,
const size_t  ldb,
FFLAS_ELT C,
const size_t  ldc 
)

fsubin C = C - B

◆ fadd() [8/8]

template INST_OR_DECL void fadd ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  M,
const size_t  N,
const FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT  alpha,
const FFLAS_ELT B,
const size_t  ldb,
FFLAS_ELT C,
const size_t  ldc 
)

fadd : matrix addition with scaling.

Computes C = A + alpha B.

Parameters
Ffield
Mrows
Ncols
Adense matrix of size MxN
ldaleading dimension of A
alphasome scalar
Bdense matrix of size MxN
ldbleading dimension of B
Cdense matrix of size MxN
ldcleading dimension of C

◆ faddin() [5/5]

template INST_OR_DECL void faddin ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  M,
const size_t  N,
const FFLAS_ELT B,
const size_t  ldb,
FFLAS_ELT C,
const size_t  ldc 
)

faddin

◆ fgemv() [17/19]

template INST_OR_DECL FFLAS_ELT * fgemv ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const FFLAS_TRANSPOSE  TransA,
const size_t  M,
const size_t  N,
const FFLAS_ELT  alpha,
const FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT X,
const size_t  incX,
const FFLAS_ELT  beta,
FFLAS_ELT Y,
const size_t  incY 
)

finite prime FFLAS_FIELD<FFLAS_ELT> GEneral Matrix Vector multiplication.

Computes $Y \gets \alpha \mathrm{op}(A) X + \beta Y $.

Parameters
Ffield
TransAif TransA==FflasTrans then $\mathrm{op}(A)=A^t$.
Mrows
Ncols
alphascalar
Adense matrix of size MxN
ldaleading dimension of A
Xdense vector of size N
incXstride of X
betascalar
[out]Ydense vector of size M
incYstride of Y

◆ fger() [12/12]

template INST_OR_DECL void fger ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const size_t  M,
const size_t  N,
const FFLAS_ELT  alpha,
const FFLAS_ELT x,
const size_t  incx,
const FFLAS_ELT y,
const size_t  incy,
FFLAS_ELT A,
const size_t  lda 
)

fger: rank one update of a general matrix

Computes $A \gets \alpha x . y^T + A$

Parameters
Ffield
Mrows
Ncols
alphascalar
[in,out]Adense matrix of size MxN and leading dimension lda
ldaleading dimension of A
xdense vector of size M
incxstride of X
ydense vector of size N
incystride of Y

◆ ftrsv() [2/2]

template INST_OR_DECL void ftrsv ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const FFLAS_UPLO  Uplo,
const FFLAS_TRANSPOSE  TransA,
const FFLAS_DIAG  Diag,
const size_t  N,
const FFLAS_ELT A,
const size_t  lda,
FFLAS_ELT X,
int  incX 
)

ftrsv: TRiangular System solve with Vector Computes $ X \gets \mathrm{op}(A^{-1}) X$

Parameters
Ffield
Xvector of size N on a field F
incXstride of X
Aa matrix of leading dimension lda and size N
ldaleading dimension of A
Nnumber of rows or columns of A according to TransA
TransAif TransA==FflasTrans then $\mathrm{op}(A)=A^t$.
Diagif Diag==FflasUnit then A is unit.
Uploif Uplo==FflasUpper then A is upper triangular

◆ ftrsm() [9/9]

template INST_OR_DECL void ftrsm ( const FFLAS_FIELD< FFLAS_ELT > &  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 FFLAS_ELT  alpha,
const FFLAS_ELT A,
const size_t  lda,
FFLAS_ELT B,
const size_t  ldb 
)

ftrsm: TRiangular System solve with Matrix.

Computes $ B \gets \alpha \mathrm{op}(A^{-1}) B$ or $B \gets \alpha B \mathrm{op}(A^{-1})$.

Parameters
Ffield
Sideif Side==FflasLeft then $ B \gets \alpha \mathrm{op}(A^{-1}) B$ is computed.
Uploif Uplo==FflasUpper then A is upper triangular
TransAif TransA==FflasTrans then $\mathrm{op}(A)=A^t$.
Diagif Diag==FflasUnit then A is unit.
Mrows of B
Ncols of B
alphascalar
Atriangular invertible matrix. If Side==FflasLeft then A is $N\times N$, otherwise A is $M\times M$
ldaleading dim of A
Bmatrix of size MxN
ldbleading dim of B
Bug:
$\alpha$ must be non zero.

◆ ftrmm() [3/3]

template INST_OR_DECL void ftrmm ( const FFLAS_FIELD< FFLAS_ELT > &  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 FFLAS_ELT  alpha,
const FFLAS_ELT A,
const size_t  lda,
FFLAS_ELT B,
const size_t  ldb 
)

ftrmm: TRiangular Matrix Multiply.

Computes $ B \gets \alpha \mathrm{op}(A) B$ or $B \gets \alpha B \mathrm{op}(A)$.

Parameters
Ffield
Sideif Side==FflasLeft then $ B \gets \alpha \mathrm{op}(A) B$ is computed.
Uploif Uplo==FflasUpper then A is upper triangular
TransAif TransA==FflasTrans then $\mathrm{op}(A)=A^t$.
Diagif Diag==FflasUnit then A is implicitly unit.
Mrows of B
Ncols of B
alphascalar
Atriangular matrix. If Side==FflasLeft then A is $N\times N$, otherwise A is $M\times M$
ldaleading dim of A
Bmatrix of size MxN
ldbleading dim of B

◆ fgemm() [20/23]

template INST_OR_DECL FFLAS_ELT * fgemm ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const FFLAS_ELT  alpha,
const FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT B,
const size_t  ldb,
const FFLAS_ELT  beta,
FFLAS_ELT C,
const size_t  ldc 
)

fgemm: Field GEneral Matrix Multiply.

Computes $C = \alpha \mathrm{op}(A) \times \mathrm{op}(B) + \beta C$ Automatically set Winograd recursion level

Parameters
Ffield.
taif ta==FflasTrans then $\mathrm{op}(A)=A^t$, else $\mathrm{op}(A)=A$,
tbsame for matrix B
msee A
nsee B
ksee A
alphascalar
betascalar
A$\mathrm{op}(A)$ is $m \times k$
B$\mathrm{op}(B)$ is $k \times n$
C$C$ is $m \times n$
ldaleading dimension of A
ldbleading dimension of B
ldcleading dimension of C
wrecursive levels of Winograd's algorithm are used. No argument (or -1) does auto computation of w.
Warning
$\alpha$ must be invertible

◆ fgemm() [21/23]

template INST_OR_DECL FFLAS_ELT * fgemm ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const FFLAS_ELT  alpha,
const FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT B,
const size_t  ldb,
const FFLAS_ELT  beta,
FFLAS_ELT C,
const size_t  ldc,
const ParSeqHelper::Sequential  seq 
)

◆ fgemm() [22/23]

template INST_OR_DECL FFLAS_ELT * fgemm ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const FFLAS_ELT  alpha,
const FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT B,
const size_t  ldb,
const FFLAS_ELT  beta,
FFLAS_ELT C,
const size_t  ldc,
const ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::TwoDAdaptive par 
)

◆ fgemm() [23/23]

template INST_OR_DECL FFLAS_ELT * fgemm ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const FFLAS_ELT  alpha,
const FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT B,
const size_t  ldb,
const FFLAS_ELT  beta,
FFLAS_ELT C,
const size_t  ldc,
const ParSeqHelper::Parallel< CuttingStrategy::Block, StrategyParameter::Threads par 
)

◆ fsquare() [6/6]

template INST_OR_DECL FFLAS_ELT * fsquare ( const FFLAS_FIELD< FFLAS_ELT > &  F,
const FFLAS_TRANSPOSE  ta,
const size_t  n,
const FFLAS_ELT  alpha,
const FFLAS_ELT A,
const size_t  lda,
const FFLAS_ELT  beta,
FFLAS_ELT C,
const size_t  ldc 
)

fsquare: Squares a matrix.

compute $ C \gets \alpha \mathrm{op}(A) \mathrm{op}(A) + \beta C$ over a FFLAS_FIELD <FFLAS_ELT> F Avoid the conversion of B

Parameters
taif ta==FflasTrans, $\mathrm{op}(A)=A^T$.
Ffield
nsize of A
alphascalar
betascalar
Adense matrix of size nxn
ldaleading dimension of A
Cdense matrix of size nxn
ldcleading dimension of C

◆ BlockCuts() [1/2]

void BlockCuts ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  numthreads 
)
inline

◆ BlockCuts< CuttingStrategy::Single, StrategyParameter::Threads >()

void BlockCuts< CuttingStrategy::Single, StrategyParameter::Threads > ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  numthreads 
)
inline

◆ BlockCuts< CuttingStrategy::Row, StrategyParameter::Fixed >()

void BlockCuts< CuttingStrategy::Row, StrategyParameter::Fixed > ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  numthreads 
)
inline

◆ BlockCuts< CuttingStrategy::Row, StrategyParameter::Grain >()

void BlockCuts< CuttingStrategy::Row, StrategyParameter::Grain > ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  grainsize 
)
inline

◆ BlockCuts< CuttingStrategy::Block, StrategyParameter::Grain >()

void BlockCuts< CuttingStrategy::Block, StrategyParameter::Grain > ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  grainsize 
)
inline

◆ BlockCuts< CuttingStrategy::Column, StrategyParameter::Fixed >()

void BlockCuts< CuttingStrategy::Column, StrategyParameter::Fixed > ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  numthreads 
)
inline

◆ BlockCuts< CuttingStrategy::Column, StrategyParameter::Grain >()

void BlockCuts< CuttingStrategy::Column, StrategyParameter::Grain > ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  grainsize 
)
inline

◆ BlockCuts< CuttingStrategy::Block, StrategyParameter::Fixed >()

void BlockCuts< CuttingStrategy::Block, StrategyParameter::Fixed > ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  numthreads 
)
inline

◆ BlockCuts< CuttingStrategy::Row, StrategyParameter::Threads >()

void BlockCuts< CuttingStrategy::Row, StrategyParameter::Threads > ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  numthreads 
)
inline

◆ BlockCuts< CuttingStrategy::Column, StrategyParameter::Threads >()

void BlockCuts< CuttingStrategy::Column, StrategyParameter::Threads > ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  numthreads 
)
inline

◆ BlockCuts< CuttingStrategy::Block, StrategyParameter::Threads >()

void BlockCuts< CuttingStrategy::Block, StrategyParameter::Threads > ( size_t &  RBLOCKSIZE,
size_t &  CBLOCKSIZE,
const size_t  m,
const size_t  n,
const size_t  numthreads 
)
inline

◆ BlockCuts() [2/2]

void BlockCuts ( size_t &  rowBlockSize,
size_t &  colBlockSize,
size_t &  lastRBS,
size_t &  lastCBS,
size_t &  changeRBS,
size_t &  changeCBS,
size_t &  numRowBlock,
size_t &  numColBlock,
size_t  m,
size_t  n,
const size_t  numthreads 
)
inline

◆ pfzero()

void pfzero ( const Field F,
size_t  m,
size_t  n,
typename Field::Element_ptr  C,
size_t  BS = 0 
)

◆ pfrand()

void pfrand ( const Field F,
RandIter &  G,
size_t  m,
size_t  n,
typename Field::Element_ptr  C,
size_t  BS = 0 
)

◆ fdot() [11/11]

Field::Element & fdot ( const Field F,
const size_t  N,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
typename Field::Element &  d,
const ParSeqHelper::Parallel< Cut, Param >  par 
)
inline

◆ pfgemm() [2/7]

Field::Element * pfgemm ( 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::ConstElement_ptr  A,
const size_t  lda,
const typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element *  C,
const size_t  ldc,
MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Block, StrategyParameter::Threads > > &  H 
)

◆ pfgemm() [3/7]

Field::Element * pfgemm ( 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::ConstElement_ptr  AA,
const size_t  lda,
const typename Field::ConstElement_ptr  BB,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element *  C,
const size_t  ldc,
MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::ThreeDAdaptive > > &  H 
)

◆ pfgemm() [4/7]

Field::Element * pfgemm ( 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::ConstElement_ptr  AA,
const size_t  lda,
const typename Field::ConstElement_ptr  BB,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element *  C,
const size_t  ldc,
MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::TwoDAdaptive > > &  H 
)

◆ pfgemm() [5/7]

Field::Element * pfgemm ( 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::ConstElement_ptr  AA,
const size_t  lda,
const typename Field::ConstElement_ptr  BB,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element *  C,
const size_t  ldc,
MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::TwoD > > &  H 
)

◆ pfgemm() [6/7]

Field::Element_ptr pfgemm ( 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::ConstElement_ptr  A,
const size_t  lda,
const typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::ThreeD > > &  H 
)

◆ pfgemm() [7/7]

Field::Element * pfgemm ( 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::ConstElement_ptr  A,
const size_t  lda,
const typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::ThreeDInPlace > > &  H 
)

◆ fgemv() [18/19]

Field::Element_ptr fgemv ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  m,
const size_t  n,
const typename Field::Element  alpha,
const typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY,
MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Recursive, StrategyParameter::Threads > > &  H 
)

◆ fgemv() [19/19]

Field::Element_ptr fgemv ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  m,
const size_t  n,
const typename Field::Element  alpha,
const typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY,
MMHelper< Field, AlgoT, FieldTrait, ParSeqHelper::Parallel< CuttingStrategy::Row, Cut > > &  H 
)

◆ parseArguments()

void parseArguments ( int  argc,
char **  argv,
Argument args,
bool  printDefaults = true 
)

◆ getArgumentValue()

char * getArgumentValue ( int  argc,
char **  argv,
int  i 
)

Get the value of an argument and avoid core dump when no value was given after an argument.

Parameters
argvargument value list
iargument index
Returns
char* argument value

◆ writeCommandString()

std::ostream & writeCommandString ( std::ostream &  os,
Argument args,
const char *  programName = nullptr 
)

writes the values of all arguments, preceded by the programName

◆ WriteMatrix() [1/2]

std::ostream & WriteMatrix ( std::ostream &  c,
const Field F,
size_t  m,
size_t  n,
typename Field::ConstElement_ptr  A,
size_t  lda,
FFLAS_FORMAT  format,
bool  column_major 
)
inline

WriteMatrix: write a matrix to an output stream.

Parameters
coutput stream
Fbase field
mrow dimension
ncolumn dimension
Amatrix
formatinput format (FflasAuto, FflasDense, FflasSMS, FflasBinary)
column_majorwhether the matrix is stored in column or row major (row by default)

◆ preamble()

void preamble ( std::ifstream &  ifs,
FFLAS_FORMAT format 
)
inline

◆ ReadMatrix() [1/2]

Field::Element_ptr ReadMatrix ( std::ifstream &  ifs,
Field F,
size_t &  m,
size_t &  n,
typename Field::Element_ptr A,
FFLAS_FORMAT  format = FflasAuto 
)

ReadMatrix: read a matrix from an input stream.

Parameters
ifsinput stream
Fbase field
[out]mrow dimension
[out]ncolumn dimension
[out]Aoutput matrix
formatinput format (FflasAuto, FflasDense, FflasSMS, FflasBinary)

◆ ReadMatrix() [2/2]

Field::Element_ptr ReadMatrix ( const std::string &  matrix_file,
Field F,
size_t &  m,
size_t &  n,
typename Field::Element_ptr A,
FFLAS_FORMAT  format = FflasAuto 
)
inline

ReadMatrix: read a matrix from a file.

Parameters
matrix_filefilename
Fbase field
[out]mrow dimension
[out]ncolumn dimension
[out]Aoutput matrix
formatinput format (FflasAuto, FflasDense, FflasSMS, FflasBinary)

◆ WriteMatrix() [2/2]

void WriteMatrix ( std::string &  matrix_file,
const Field F,
int  m,
int  n,
typename Field::ConstElement_ptr  A,
size_t  lda,
FFLAS_FORMAT  format = FflasDense,
bool  column_major = false 
)

WriteMatrix: write a matrix to a file.

Parameters
matrix_filefile name
Fbase field
mrow dimension
ncolumn dimension
Amatrix
formatinput format (FflasAuto, FflasDense, FflasSMS, FflasBinary)
column_majorwhether the matrix is stored in column or row major (row by default)

◆ WritePermutation()

std::ostream & WritePermutation ( std::ostream &  c,
const size_t *  P,
size_t  N 
)
inline

WritePermutation: write a permutation matrix to an output stream.

Parameters
coutput stream
Ppermutation
Nsize of the permutation

◆ alignable()

bool alignable ( )
inline

◆ alignable< Givaro::Integer * >()

bool alignable< Givaro::Integer * > ( )
inline

◆ fflas_new() [5/7]

Field::Element_ptr fflas_new ( const Field F,
const size_t  m,
const Alignment  align = Alignment::DEFAULT 
)
inline

◆ fflas_new() [6/7]

Field::Element_ptr fflas_new ( const Field F,
const size_t  m,
const size_t  n,
const Alignment  align = Alignment::DEFAULT 
)
inline

◆ fflas_new() [7/7]

Element * fflas_new ( const size_t  m,
const Alignment  align = Alignment::DEFAULT 
)
inline

◆ fflas_delete() [3/4]

void fflas_delete ( Element_ptr  A)
inline

◆ fflas_delete() [4/4]

void fflas_delete ( Ptr  p,
Args ...  args 
)
inline

◆ prefetch()

void prefetch ( const int64_t *  )
inline

◆ getTLBSize()

void getTLBSize ( int &  tlb)
inline

◆ queryCacheSizes()

void queryCacheSizes ( int &  l1,
int &  l2,
int &  l3 
)
inline

Queries and returns the cache sizes in Bytes of the L1, L2, and L3 data caches respectively

◆ queryL1CacheSize()

int queryL1CacheSize ( )
inline
Returns
the size in Bytes of the L1 data cache

◆ queryTopLevelCacheSize()

int queryTopLevelCacheSize ( )
inline
Returns
the size in Bytes of the L2 or L3 cache if this later is present

◆ getSeed()

uint64_t getSeed ( )

◆ pack_word() [1/2]

void pack_word ( pack_T *  packed,
const wide_T *  words,
int32_t  stride,
Packer< pack_T, Nb > &  packer 
)

◆ pack_word() [2/2]

void pack_word ( double *  packed,
const wide_T *  words,
int32_t  stride,
Packer< double, 2 > &  packer 
)

◆ pack_word_part() [1/2]

void pack_word_part ( pack_T *  packed,
int32_t  nb,
const wide_T *  words,
int32_t  stride,
Packer< pack_T, Nb > &  packer 
)

◆ pack_word_part() [2/2]

void pack_word_part ( double *  packed,
int32_t  nb,
const wide_T *  words,
int32_t  stride,
Packer< double, 2 > &  packer 
)

◆ unpack_word() [1/2]

void unpack_word ( wide_T *  words,
int32_t  stride,
const pack_T *  packed,
Packer< pack_T, Nb > &  packer 
)

◆ unpack_word() [2/2]

void unpack_word ( wide_T *  words,
int32_t  stride,
const double *  packed,
Packer< double, 2 > &  packer 
)

◆ unpack_word_part() [1/2]

void unpack_word_part ( wide_T *  words,
int32_t  stride,
const pack_T *  packed,
int32_t  nb,
Packer< pack_T, Nb > &  packer 
)

◆ unpack_word_part() [2/2]

void unpack_word_part ( wide_T *  words,
int32_t  stride,
const double *  packed,
int32_t  nb,
Packer< double, 2 > &  packer 
)

◆ pack_matrix()

void pack_matrix ( pack_T *  packed,
int32_t  row_p,
int32_t  col_p,
int32_t  ldm_p,
const wide_T *  elemts,
int32_t  row_e,
int32_t  col_e,
int32_t  ldm_e,
Packer< pack_T, Nb > &  packer 
)

◆ unpack_matrix()

void unpack_matrix ( wide_T *  elemts,
int32_t  row_e,
int32_t  col_e,
int32_t  ldm_e,
const pack_T *  packed,
int32_t  row_p,
int32_t  col_p,
int32_t  ldm_p,
Packer< pack_T, Nb > &  packer 
)

◆ fgemm_compressed()

void fgemm_compressed ( const Field F,
int  m,
int  n,
int  k,
const typename Field::Element *  A,
int  lda,
const typename Field::Element *  B,
int  ldb,
typename Field::Element *  C,
int  ldc 
)
Bug:
don't zero all, just the "border"
Bug:
don't zero all, just the "border"
Bug:
don't zero all, just the "border"

◆ finit_fuzzy()

void finit_fuzzy ( Field F,
size_t  m,
size_t  n,
double *  C,
size_t  ldc 
)

◆ add()

void add ( const size_t  m,
const size_t  n,
double  a,
const double *  A,
const size_t  lda,
const double *  B,
const size_t  ldb,
double *  C,
const size_t  ldc 
)

◆ subadd()

void subadd ( const size_t  m,
const size_t  n,
const double *  A,
const size_t  lda,
const double *  B,
const size_t  ldb,
double *  C,
const size_t  ldc 
)

◆ negadd()

void negadd ( const size_t  m,
const size_t  n,
const double *  A,
const size_t  lda,
const double *  B,
const size_t  ldb,
double *  C,
const size_t  ldc 
)

◆ addsub()

void addsub ( const size_t  m,
const size_t  n,
const double *  A,
const size_t  lda,
const double *  B,
const size_t  ldb,
double *  C,
const size_t  ldc 
)

◆ addscalinf()

void addscalinf ( const Field F,
const size_t  m,
const size_t  n,
const double *  B,
const size_t  ldb,
double  e,
double *  C,
const size_t  ldc 
)

◆ subscalinf()

void subscalinf ( const Field F,
const size_t  m,
const size_t  n,
const double *  B,
const size_t  ldb,
double  e,
double *  C,
const size_t  ldc 
)

◆ subscal()

void subscal ( const Field F,
const size_t  m,
const size_t  n,
const double *  D,
const size_t  ldd,
const double *  B,
const size_t  ldb,
double  e,
double *  C,
const size_t  ldc 
)

◆ addscal()

void addscal ( const Field F,
const size_t  m,
const size_t  n,
const double *  D,
const size_t  ldd,
const double *  B,
const size_t  ldb,
double  e,
double *  C,
const size_t  ldc 
)

◆ subscalacc()

void subscalacc ( const Field F,
const size_t  m,
const size_t  n,
const double *  D,
const size_t  ldd,
const double *  B,
const size_t  ldb,
double  e,
double *  C,
const size_t  ldc 
)

◆ gemm_fflas()

double * gemm_fflas ( const Field F,
const size_t  m,
const size_t  n,
const size_t  k,
const double *  A,
size_t  lda,
const double *  B,
size_t  ldb,
double *  C,
size_t  ldc,
int  rec = 0 
)