linbox
Todo List
Global _LB_MAX_SZ
!
Global bench_blas (index_t min, index_t max, int step)
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.

Global BlasMatrix< _Field >::BlasMatrix (const _Field &F, const Integer &m, const T &n)
check m,n not too big ?
Global BlasMatrix< _Field >::BlasMatrix (const _Field &F, const uint64_t &m, const T &n)
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.
File dense-nullspace.h
random nullspace vector
Global eqVec (const Vec &a, const Vec &b)
factorize somewhere!
Class IMLTraits

enable multi-vectors.

enable right/left solving.

be input aware (long/Integer)

Global IMLTraits::IMLTraits (const IMLNonSing &imlroutine, bool withRNS=false)
make the special flags available in Specifier.
File lattice.h

Create a BlasMatrix<NTL_ZZ> that is just like a mat_ZZ !

Create a BlasMatrix<FPLLL_ZZ> that is just like a IntMatrix !

This will avoid copy back/forth a BlasMatrix<PID_integer>

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, BlasMatrix< 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, BlasMatrix< 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 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
Class MatrixDomain< GF2 >
this is where m4ri will play.
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
Global RandomDenseMatrix< Randiter, Field >::randomRank (Matrix &A, int rank)
use CatergoryTag
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.
File rational-reconstruction.h
wrap Mat_ZZ<T>/IntMat in BlasMatrix<T>, BlasMatrix<Integer> e.g.
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=50)
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 subtests::testRingTrivia (const Field &F, const char *name)
enable init with 1UL et -1L pour GMPRationalElement
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)