linbox
Todo List

Global _LB_MAX_SZ
!

Global bench_blas (index_t min, index_t max, int step)

compare to cblas_dgemm instead.

compare to cblas_dgemm instead.

Global bench_rectangular (index_t k, int charac, index_t l=2)
resize if it>nb !!

Global bench_rectangular (index_t k, int charac)

resize if it>nb !!

make long legends oblique.

File benchmark-fgemm.C
make graphs look better (legends, units,...)

File benchmark-ftrXm.C

ftrmm has an 'alpha' but mul/mulin in BMd don't... That could be useful for $\alpha=-1$...

benchmark ftrsm too here.

File blas-matrix.h
explain the differences with DenseMatrixBase<_element > and DenseSubmatrix<_element > or DenseMatrix<_field >...

Global BlasMatrixDomain< Field >::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::random_lu_rank (const Field &F, const Randiter &R, DenseMatrix< Field > &A, int &rank)

!!!

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,BlasTag::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,BlasTag::Left) ; avec P : BlasPermutation ou P : MatrixPermutation

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

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

Global main (int ac, char **av)

use commentator.

use commentator.

Group matrix
talk about Linux::BlasPermutation

File matrix/random-matrix.h
à la vector/stream.h

Global MatrixDomain< Field >::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< Field >::pow_apply (Matrix1 &M1, const Matrix2 &M2, unsigned long int k) const
Need documentation of these methods

Global MatrixPermutation< _UnsignedInt >::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 ?

Class PlotData< NAM >
write members that permute, add, scale,... data.

Global PlotGraph< NAM >::print_latex ()
check FN opened.

Class PlotStyle
Allow for 'speed up against col X' style

Class RandomIntegerIter< _Unsigned >
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< _LiftingContainer, RatRecon >::dot (Integer &d, const InVect1 &v1, const InVect2 &v2) const
WHY a dot product here ?

Global RationalReconstruction< _LiftingContainer, RatRecon >::RationalReconstruction (const LiftingContainer &lcontainer, const Ring &r=Ring(), int THRESHOLD=DEF_THRESH)
maybe use different ring than the ring in lcontainer

Class RNS< Unsigned >
template by field and ring

Global RNS< Unsigned >::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 :

Global testRingTrivia (const Field &F, const char *name)
enable init with 1UL et -1L pour GMPRationalElement