linbox
LinBox::Protected Namespace Reference

This is the namespace all LinBox internal code is in. More...

Data Structures

class  FactorizedMatrixLeftLSolve
 
class  FactorizedMatrixLeftSolve
 
class  FactorizedMatrixLeftSolve< Field, BlasVector< Field > >
 
class  FactorizedMatrixLeftSolve< Field, std::vector< typename Field::Element > >
 
class  FactorizedMatrixLeftSolveIP
 
class  FactorizedMatrixLeftUSolve
 
class  FactorizedMatrixRightLSolve
 
class  FactorizedMatrixRightSolve
 
class  FactorizedMatrixRightSolve< Field, BlasVector< Field > >
 
class  FactorizedMatrixRightSolve< Field, std::vector< typename Field::Element > >
 
class  FactorizedMatrixRightSolveIP
 
class  FactorizedMatrixRightUSolve
 
struct  IntegerSparseCraMatMul
 
class  SparseMatrixGeneric
 Sparse matrix container This class acts as a generic row-wise container for sparse matrices. More...
 
class  SparseMatrixGeneric< _Field, _Row, VectorCategories::SparseAssociativeVectorTag >
 
class  SparseMatrixGeneric< _Field, _Row, VectorCategories::SparseParallelVectorTag >
 
class  SparseMatrixGeneric< _Field, _Row, VectorCategories::SparseSequenceVectorTag >
 

Functions

template<class Field>
void Zero (const Field &F, typename Field::Element *Z, const size_t ldZ, const size_t lig1, const size_t col1, const size_t lig2, const size_t col2)
 
template<class Field>
void Identity (const Field &F, typename Field::Element *Id, const size_t ldI, const size_t lig1, const size_t col1, const size_t lig2, const size_t col2)
 Creates identity matrix in F of size dim1 x dim2.
 
template<class Field>
Field::Element * RightNullspaceDirect (const Field &F, typename Field::Element *A, const size_t &M, const size_t &N, const size_t &lda, size_t &ker_dim)
 The right or left nullspace (kernel or cokernel) of a matrix A We use the LU decomposition.
 
template<class Field>
Field::Element * RightNullspaceIndirect (const Field &F, typename Field::Element *A, const size_t &M, const size_t &N, const size_t &lda, size_t &ker_dim)
 
template<class Field>
Field::Element * LeftNullspaceIndirect (const Field &F, typename Field::Element *A, const size_t &M, const size_t &N, const size_t &lda, size_t &coker_dim)
 
template<class Field>
Field::Element * LeftNullspaceDirect (const Field &F, typename Field::Element *A, const size_t &M, const size_t &N, const size_t &lda, size_t &coker_dim)
 
template<class Randiter, class Field>
BlasMatrix< Field > & random_lu_rank (const Field &F, const Randiter &R, BlasMatrix< Field > &A, int &rank, const RingCategories::ModularTag &tag)
 
template<class Randiter, class Ring>
BlasMatrix< Ring > & random_lu_rank (const Ring &ZZ, const Randiter &R, BlasMatrix< Ring > &A, int &rank, const RingCategories::IntegerTag &tag)
 
template<class Randiter, class Field>
BlasMatrix< Field > & random_rankupdate (Field &F, const Randiter &R, BlasMatrix< Field > &A, int &rank, const RingCategories::IntegerTag &tag)
 

Detailed Description

This is the namespace all LinBox internal code is in.

Function Documentation

◆ Zero()

template<class Field>
void Zero ( const Field & F,
typename Field::Element * Z,
const size_t ldZ,
const size_t lig1,
const size_t col1,
const size_t lig2,
const size_t col2 )
Parameters
F
Z
ldZ
lig1
col1
lig2
col2
Todo
use fzero

◆ Identity()

template<class Field>
void Identity ( const Field & F,
typename Field::Element * Id,
const size_t ldI,
const size_t lig1,
const size_t col1,
const size_t lig2,
const size_t col2 )

Creates identity matrix in F of size dim1 x dim2.

Warning
diag_num peut être < 0 !
Bug
long et size_t ne cohabitent pas bien.

◆ RightNullspaceDirect()

template<class Field>
Field::Element * RightNullspaceDirect ( const Field & F,
typename Field::Element * A,
const size_t & M,
const size_t & N,
const size_t & lda,
size_t & ker_dim )

The right or left nullspace (kernel or cokernel) of a matrix A We use the LU decomposition.

Parameters
Fthe field in which A lives
Ais a matrix whose nullspace we look for.
Mnumber of lines in A
Nnumber of column of A
ldathe leading dimension of matrix A
ker_dimthe dimension of the kernel
Template Parameters
Field-
Returns
a matrix of leading dimension ker_dim whose column vectors span the nullspace of A. Returns NULL (and not \(\mathbf{0}\)) if ker_dim == 0 .

◆ RightNullspaceIndirect()

template<class Field>
Field::Element * RightNullspaceIndirect ( const Field & F,
typename Field::Element * A,
const size_t & M,
const size_t & N,
const size_t & lda,
size_t & ker_dim )

◆ LeftNullspaceIndirect()

template<class Field>
Field::Element * LeftNullspaceIndirect ( const Field & F,
typename Field::Element * A,
const size_t & M,
const size_t & N,
const size_t & lda,
size_t & coker_dim )

◆ LeftNullspaceDirect()

template<class Field>
Field::Element * LeftNullspaceDirect ( const Field & F,
typename Field::Element * A,
const size_t & M,
const size_t & N,
const size_t & lda,
size_t & coker_dim )

◆ random_lu_rank() [1/2]

template<class Randiter, class Field>
BlasMatrix< Field > & random_lu_rank ( const Field & F,
const Randiter & R,
BlasMatrix< Field > & A,
int & rank,
const RingCategories::ModularTag & tag )
Todo
!!!
Todo
RandomPermutation avec P de type [Matrix-Blas]Permutation
Todo
: L = [[L1,0],[A,L2]] ;U = [[U1,B],[0,U2]] ; LU = [[ rec(L1,U1), ftrmm(L1,B)],[ftrmm(A,U1),fgemm(A,B)+rec(L2,U2) ]] de même UL
Todo
create BMD.applyP(A,P,Tag::Left) ; avec P : BlasPermutation ou P : MatrixPermutation
Todo
Todo
BlasPermutation a un ordre p et une taille r distinctes !!!

◆ random_lu_rank() [2/2]

template<class Randiter, class Ring>
BlasMatrix< Ring > & random_lu_rank ( const Ring & ZZ,
const Randiter & R,
BlasMatrix< Ring > & A,
int & rank,
const RingCategories::IntegerTag & tag )
Todo
ZZ is A.field() !

◆ random_rankupdate()

template<class Randiter, class Field>
BlasMatrix< Field > & random_rankupdate ( Field & F,
const Randiter & R,
BlasMatrix< Field > & A,
int & rank,
const RingCategories::IntegerTag & tag )
Bug
do perms ?
Parameters
F
Bug
const !