linbox
Todo List
Global _LB_MAX_SZ
!
Global BlasMatrix::BlasMatrix (Integer &m, T n)
check m,n not too big ?
Global BlasMatrix::BlasMatrix (unsigned long m, T n)
Global BlasMatrix::write (std::ostream &os, const Field &F, bool mapleFormat=true) const
factorise writing matrices code.
Global BlasMatrixDomain::mulpoly (Polynomial &res, const Polynomial &P1, const Polynomial &P2) const
Temporary: waiting for an implementation of a domain of polynomial
File debug.h
we should put vector printing elsewhere.
Global eqVec (const Vec &a, const Vec &b)
factorize somewhere!
Global LinBox::NullSpaceBasis (const Field &F, const LinBoxTag::Side Side, BlasMatrix< typename Field::Element > &A, BlasMatrix< typename Field::Element > &Ker, size_t &kerdim)
this is slow : use a constructor from Ker ?
Global LinBox::Protected::random_lu_rank (const Field &F, const Randiter &R, BlasBlackbox< Field > &A, int &rank, const RingCategories::ModularTag &tag)

!!!

RandomPermutation avec P de type [Matrix-Blas]Permutation

: 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

create BMD.applyP(A,P,LinBoxTag::Left) ; avec P : BlasPermutation ou P : MatrixPermutation

BlasPermutation a un ordre p et une taille r distinctes !!!

RandomPermutation avec P de type [Matrix-Blas]Permutation

: 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

create BMD.applyP(A,P,LinBoxTag::Left) ; avec P : BlasPermutation ou P : MatrixPermutation

BlasPermutation a un ordre p et une taille r distinctes !!!

Global LinBox::Protected::random_lu_rank (const Ring &ZZ, const Randiter &R, BlasBlackbox< Ring > &A, int &rank, const RingCategories::IntegerTag &tag)
ZZ is A.field() !
Global LinBox::RandomBlasPermutation (BlasPermutation< size_t > &P)
To be factorized.
Global LinBox::smithForm (Output &S, const Blackbox &A, const MyMethod &M)
Other methods will be provided later. For now see the examples/smith.C for ways to call other smith form algorithms.
Global LinBox::solve (Vector &x, const BB &A, const Vector &b, const Method::Elimination &m)
temporary - fix this
Group matrix
talk about Linux::BlasPermutation
File matrix/random-matrix.h
à la vector/stream.h
Global MatrixDomain::muladd (Matrix1 &D, const typename Field::Element &beta, const Matrix1 &C, const typename Field::Element &alpha, const Matrix2 &A, const Matrix3 &B) const
not efficient...
Global MatrixDomain::pow_apply (Matrix1 &M1, const Matrix2 &M2, unsigned long int k) const
Need documentation of these methods
Global MatrixPermutation::Transpose ()
in place ! (revient à parcourir des cycles)
File minpoly-integer.h
better filter out repeated primes
Global Modular< uint8_t >::add (Element &x, const Element &y, const Element &z) const
is it faster to use uint32 and multiple casts ?
Global Modular< uint8_t >::subin (Element &x, const Element &y) const
why long here ?
Global RandomDenseMatrix::randomRank (Matrix &A, int rank)
use CatergoryTag
Class RandomIntegerIter
one could create the same one on a LinBox::PID_double ?
Class RandomPrimeIter
one could create the same one on a LinBox::PID_double ?
Global RandomPrimeIter::random_between (integer &a, unsigned long _low_bits) const
uses random_between when givaro is released.
Global RandomPrimeIter::random_exact (integer &a) const
uses random_exact when givaro is released.
Global RationalReconstruction::dot (Integer &d, const InVect1 &v1, const InVect2 &v2) const
WHY a dot product here ?
Global RationalReconstruction::RationalReconstruction (const LiftingContainer &lcontainer, const Ring &r=Ring(), int THRESHOLD=DEF_THRESH)
maybe use different ring than the ring in lcontainer
Class RNS
template by field and ring
Global RNS::RNS (unsigned long l, unsigned long ps=21)
if log2(maxint/curint)<ps use smaller genprime.
Group solutions

its multipliers? its output form variants?

primary form? Relative primary form of A? Primary form is similar to A and finest which is a direct sum of companion matrices Cfi such that, for all i, j, gcd(fi, fj) = 1 or fi or fj. Relative primary form is coarsest such decomposition.

this may soon be reversed, in fact.

Global std::swap (_Bit_reference __x, _Bit_reference __y)
JGD 05.11.2009 : it should be in bits/stl_bvector.h ...
File test-matrix-stream.C
I would like to see a matrix writer that writes sms format and generic dense format. Then we could have a self contained test that checks the write/read cycle without depending on preexisting data files.
Global test_applyP (std::ostream &report, const Field &F)
test NULL permutation
Global test_ftrmm (std::ostream &report, const Field &F)

F.isInvertible()

InvertibleRandomIter

check ftrsm fails nicely with non invertible A !

Global testField (Field &F, const char *title, bool fieldp=true)
untested so far :
  • ostream &write (ostream &os) const
  • istream &read (istream &is)
  • ostream &write (ostream &os, const Element &x) const
  • istream &read (istream &is, Element &x) const
  • FieldArchetype (FieldAbstract*, ElementAbstract*, RandIterAbstract* = 0)
Global testRingTrivia (const Field &F, const char *name)
enable init with 1UL et -1L pour GMPRationalElement