linbox
Data Structures | Functions
LinBox::Protected Namespace Reference

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

Data Structures

class  SparseMatrixGeneric
 Sparse matrix container This class acts as a generic row-wise container for sparse matrices. More...
 

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. More...
 
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. More...
 
template<class Field >
bool checkBlasApply (const Field &F, size_t n)
 
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()

void LinBox::Protected::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()

void LinBox::Protected::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()

Field::Element* LinBox::Protected::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 .

◆ checkBlasApply()

bool LinBox::Protected::checkBlasApply ( const Field &  F,
size_t  n 
)
Bug:

this does not seem right for float or any non M/modular field: doing blas wherever we have a fflas-ffpack field (?)

should return true for some Givaro::ZRing

◆ random_lu_rank() [1/2]

BlasMatrix<Field>& LinBox::Protected::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:
BlasPermutation a un ordre p et une taille r distinctes !!!

◆ random_lu_rank() [2/2]

BlasMatrix<Ring>& LinBox::Protected::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()

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