This is the namespace all LinBox internal code is in.
More...
|
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) |
|
This is the namespace all LinBox internal code is in.
◆ 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
-
F | the field in which A lives |
A | is a matrix whose nullspace we look for. |
M | number of lines in A |
N | number of column of A |
lda | the leading dimension of matrix A |
ker_dim | the dimension of the kernel |
- Template Parameters
-
- Returns
- a matrix of leading dimension ker_dim whose column vectors span the nullspace of A. Returns
NULL
(and not ) 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]
- 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]
◆ random_rankupdate()