linbox
LinBox::BLAS3 Namespace Reference

Namespaces

namespace  mulMethod
 BLAS3 Multiplication methods.
 
namespace  Protected
 

Functions

template<class _anyMatrix>
_anyMatrix & mul (_anyMatrix &C, const _anyMatrix &A, const _anyMatrix &B, const mulMethod::CRA &)
 
template<class DenseIntMat>
DenseIntMat & mul (DenseIntMat &C, const DenseIntMat &A, const DenseIntMat &B, const mulMethod::FLINT &)
 
template<class _anyMatrix, class _otherMatrix1, class _otherMatrix2>
_anyMatrix & mul (_anyMatrix &C, const _otherMatrix1 &A, const _otherMatrix2 &B, const mulMethod::naive &)
 Triple loop !
 
template<class Zpz>
BlasMatrix< Zpz > & ToomCook (BlasMatrix< Zpz > &TC, BlasMatrix< Zpz > &iTC)
 Build the Toom-Cook matrix helper.
 
template<class Zpz, class GF>
std::vector< BlasMatrix< Zpz > > & mul (std::vector< BlasMatrix< Zpz > > &C, const std::vector< BlasMatrix< Zpz > > &A, const std::vector< BlasMatrix< Zpz > > &B, const mulMethod::ToomCook< GF > &T)
 
template<class Zpz>
BlasMatrix< Givaro::Extension< Zpz > > & mul (BlasMatrix< Givaro::Extension< Zpz > > &C, const BlasMatrix< Givaro::Extension< Zpz > > &A, const BlasMatrix< Givaro::Extension< Zpz > > &B, const mulMethod::ToomCook< Givaro::Extension< Zpz > > &T)
 Toom-Cook multiplication for GF(p^e)
 
template<class Zpz, class GFq>
std::vector< BlasMatrix< Zpz > > & mul (std::vector< BlasMatrix< Zpz > > &C, const std::vector< BlasMatrix< Zpz > > &A, const std::vector< BlasMatrix< Zpz > > &B, const mulMethod::ToomCook< GFq > &T)
 Toom-Cook multiplication for GF(p^e) A matrix over GF(p^e) is represented by a polynomial of Z/pZ matrices.
 
template<class DenseIntMat>
DenseIntMat & mul (DenseIntMat &C, const DenseIntMat &A, const DenseIntMat &B, const mulMethod::CRA &)
 

Function Documentation

◆ mul() [1/7]

template<class _anyMatrix>
_anyMatrix & mul ( _anyMatrix & C,
const _anyMatrix & A,
const _anyMatrix & B,
const mulMethod::CRA &  )

◆ mul() [2/7]

template<class DenseIntMat>
DenseIntMat & mul ( DenseIntMat & C,
const DenseIntMat & A,
const DenseIntMat & B,
const mulMethod::FLINT &  )

◆ mul() [3/7]

template<class _anyMatrix, class _otherMatrix1, class _otherMatrix2>
_anyMatrix & mul ( _anyMatrix & C,
const _otherMatrix1 & A,
const _otherMatrix2 & B,
const mulMethod::naive &  )

Triple loop !

just a simple triple loop

Precondition
works if _anyMatrix has setEntry and _otherMatrix has getEntry
Parameters
[out]Cresult
[in]Amatrix
[in]Bmatrix
Returns
C=AB

◆ ToomCook()

template<class Zpz>
BlasMatrix< Zpz > & ToomCook ( BlasMatrix< Zpz > & TC,
BlasMatrix< Zpz > & iTC )

Build the Toom-Cook matrix helper.

We only provide this function for dense matrices (Blas for the moment) over Z/pZ.

Parameters
[out]TCmatrix of Fp(i^j)
[out]iTCinverse of TC
Returns
TC

◆ mul() [4/7]

template<class Zpz, class GF>
std::vector< BlasMatrix< Zpz > > & mul ( std::vector< BlasMatrix< Zpz > > & C,
const std::vector< BlasMatrix< Zpz > > & A,
const std::vector< BlasMatrix< Zpz > > & B,
const mulMethod::ToomCook< GF > & T )

◆ mul() [5/7]

template<class Zpz>
BlasMatrix< Givaro::Extension< Zpz > > & mul ( BlasMatrix< Givaro::Extension< Zpz > > & C,
const BlasMatrix< Givaro::Extension< Zpz > > & A,
const BlasMatrix< Givaro::Extension< Zpz > > & B,
const mulMethod::ToomCook< Givaro::Extension< Zpz > > & T )

Toom-Cook multiplication for GF(p^e)

Template Parameters
Zpzis some modular field, GFq is Givaro::Extension (or the like)
Parameters
[out]Cresult
Amatrix
Bmatrix
Returns
C=AB
Warning
p should not be too small, and e>1 (you've been warned...)

◆ mul() [6/7]

template<class Zpz, class GFq>
std::vector< BlasMatrix< Zpz > > & mul ( std::vector< BlasMatrix< Zpz > > & C,
const std::vector< BlasMatrix< Zpz > > & A,
const std::vector< BlasMatrix< Zpz > > & B,
const mulMethod::ToomCook< GFq > & T )

Toom-Cook multiplication for GF(p^e) A matrix over GF(p^e) is represented by a polynomial of Z/pZ matrices.

Template Parameters
Zpzis some modular field, GFq is Givaro::Extension (or the like)
Parameters
[out]Cresult
Amatrix
Bmatrix
Returns
C=AB
Warning
p should not be too small, and e>1 (you've been warned...)

◆ mul() [7/7]

template<class DenseIntMat>
DenseIntMat & mul ( DenseIntMat & C,
const DenseIntMat & A,
const DenseIntMat & B,
const mulMethod::CRA &  )