linbox
Todo List
Global _LB_MAX_SZ
!
Global BlasMatrix< _Field, _Storage >::random (const size_t &b)
b should be the random generator
Global BlasMatrixDomain< Field_ >::mulpoly (Polynomial &res, const Polynomial &P1, const Polynomial &P2) const
Temporary: waiting for an implementation of a domain of polynomial
Global BlasSubmatrix< _Matrix >::BlasSubmatrix (constSelf_t &SM, size_t rowbeg, size_t colbeg, size_t Rowdim, size_t Coldim)
BlasSub from (sub)Vector
Class ContainerTraits< std::vector< _Rep > >
remove vectors
Global CRABuilderEarlyMultip< Domain_Type >::progress (const Domain &D, const Vect &e)
Could be much faster
  • do not compute twice the product of moduli
  • reconstruct one element of e until Early Termination, then only, try a random linear combination.
Global CRABuilderEarlyMultip< Domain_Type >::progress (const Domain &D, const BlasVector< OKDomain > &e)
Could be much faster
  • do not compute twice the product of moduli
  • reconstruct one element of e until Early Termination, then only, try a random linear combination.
Class DataSeries
Times and Values could be dmatrix_t (and mergeable)
File debug.h
we should put vector printing elsewhere.
File dense-nullspace.h
random nullspace vector
Global field_subtests::testRingTrivia (const Field &F, const char *name)
enable init with 1UL et -1L pour GMPRationalElement
Global generate_precRatMat (string &filename, RMatrix &M, DVector &den, Integer &denPrec)
temp fix
Global HYB_ELL_COO_THRESHOLD
benchmark me
Global HYB_ELL_THRESHOLD
benchmark me
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<Givaro::ZRing<Integer> >

Namespace LinBox
GMP Integers can be configured with limbs of different sizes (32 or 64 bits), depending on the machine. We do not handle that right now, but storing info about their dimension might be a good idea, to at least emit a warning.
Global LinBox::NullSpaceBasis (const Tag::Side Side, const BlasMatrix< Field > &A, BlasMatrix< Field > &Ker, size_t &kerdim)
make it work for BlasSubmatrix too
Global LinBox::NullSpaceBasisIn (const Tag::Side Side, BlasMatrix< Field > &A, BlasMatrix< Field > &Ker, size_t &kerdim)
make it work for BlasSubmatrix too
Global LinBox::NullSpaceBasisIn (const Tag::Side Side, BlasSubmatrix< DenseMat > &A, BlasMatrix< typename DenseMat::Field > &Ker, size_t &kerdim)

uses too much memory

use copy

use copy

use copy

Global LinBox::prepare (const Field &F, Vector &y, const typename Field::Element &a)
Vector knows Field
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,Tag::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,Tag::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::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)
use fzero
Global LinBox::RandomBlasPermutation (BlasPermutation< size_t > &P)
To be factorized.
Global LinBox::smithForm (SmithList< typename Blackbox::Field > &S, const Blackbox &A, const Method &M)
Other methods will be provided later. For now see the examples/smith.C for ways to call other smith form algorithms.
Module matrix
vector of rows ?
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 OpenCLMatrixDomain< Field_ >::mulpoly (Polynomial &res, const Polynomial &P1, const Polynomial &P2) const
Temporary: waiting for an implementation of a domain of polynomial
Class PlotGraph

make depend on PlotStyle (that owns data)

use getUsingSeries in latex/html/csv/xml

Class PlotStyle

Allow for 'speed up against col X' style

make depend on PlotData

setUsingSeries(const svector_t &)

Global PowerGaussDomainPowerOfTwo< UnsignedIntType >::isOdd (const UInt_t &b) const
use Givaro isOdd
Global RandomDenseMatrix< Randiter, Field >::randomRank (Matrix &A, int rank)
use CatergoryTag
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 RawVector< Element >
template by Field
Class RNS< Unsigned >
template by field and ring
Global RNS< Unsigned >::RNS (size_t l, size_t ps=21)
if log2(maxint/curint)<ps use smaller genprime.
Module 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 SparseMatrix< _Field, SparseMatrixFormat::COO >::consistent () const
Global SparseMatrix< _Field, SparseMatrixFormat::COO >::setEntry (const size_t &i, const size_t &j, const Element &e)
make it faster if i is 0 or m-1 ?
Global SparseMatrix< _Field, SparseMatrixFormat::COO >::SparseMatrix (const _Field &F)
convert from other matrix.
Global SparseMatrix< _Field, SparseMatrixFormat::COO::implicit >::consistent () const
Global SparseMatrix< _Field, SparseMatrixFormat::COO::implicit >::setEntry (const size_t &i, const size_t &j, const Element &e)
make it faster if i is 0 or m-1 ?
Global SparseMatrix< _Field, SparseMatrixFormat::COO::implicit >::SparseMatrix ()
convert from other matrix.
Global SparseMatrix< _Field, SparseMatrixFormat::CSR >::consistent () const
Global SparseMatrix< _Field, SparseMatrixFormat::CSR >::setEntry (const size_t &i, const size_t &j, const Element &e)
make it faster if i is 0 or m-1 ?
Global SparseMatrix< _Field, SparseMatrixFormat::CSR >::SparseMatrix (const _Field &F)
convert from other matrix.
Global SparseMatrix< _Field, SparseMatrixFormat::ELL >::consistent () const
Non element marker.
Global SparseMatrix< _Field, SparseMatrixFormat::ELL >::setEntry (const size_t &i, const size_t &j, const Element &e)
make it faster if i is 0 or m-1 ?
Global SparseMatrix< _Field, SparseMatrixFormat::ELL >::SparseMatrix (const _Field &F, VectStream &stream)
Global SparseMatrix< _Field, SparseMatrixFormat::ELL >::SparseMatrix (const _Field &F)
convert from other matrix.
Global SparseMatrix< _Field, SparseMatrixFormat::ELL_R >::setEntry (const size_t &i, const size_t &j, const Element &e)
make it faster if i is 0 or m-1 ?
Global SparseMatrix< _Field, SparseMatrixFormat::ELL_R >::SparseMatrix (const _Field &F)
convert from other matrix.
Global SparseMatrix< _Field, SparseMatrixFormat::ELL_R >::SparseMatrix (const _Field &F, VectStream &stream)
Global SparseMatrix< _Field, SparseMatrixFormat::HYB >::consistent () const
Non element marker.
Global SparseMatrix< _Field, SparseMatrixFormat::HYB >::optimise ()
±1 !
Global SparseMatrix< _Field, SparseMatrixFormat::HYB >::setEntry (const size_t &i, const size_t &j, const Element &e)
make it faster if i is 0 or m-1 ?
Global SparseMatrix< _Field, SparseMatrixFormat::HYB >::SparseMatrix ()
convert from other matrix.
Global Squarize< Blackbox >::apply (Vector1 &y, const Vector2 &x) const
use field().zero
Global Squarize< Blackbox >::applyTranspose (Vector1 &y, const Vector2 &x) const
use field().zero
File test-matrix-stream.C
I would like to see a matrix writer that writes sms format and generic dense format.
File test-nullspace.C

test non dense nullspace

test for submatrices

make sure this is faster than FFPACK ?

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 testRing (Ring &F, const char *title, bool fieldp=true, bool runInitConvertIdentity=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)