- 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
- Struct 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.
- Struct 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
- Global LinBox::prepare (const Field &F, Vector &y, const typename Field::Element &a)
- Vector knows Field
- 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::random_lu_rank (const Field &F, const Randiter &R, BlasMatrix< Field > &A, int &rank, const RingCategories::ModularTag &tag)
BlasPermutation a un ordre p
et une taille r
distinctes !!!
!!!
create BMD.applyP(A,P,Tag::Left) ; avec P : BlasPermutation ou P : MatrixPermutation
: 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
RandomPermutation avec P de type [Matrix-Blas]Permutation
- 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
setUsingSeries(const svector_t &)
Allow for 'speed up against col X' style
make depend on PlotData
- 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
- Struct 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. We could end up a line with a marker. A field F would contain an element that does not belong to it. eg a nan for a Givaro::Modular<double>. It could act as a 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, VectStream &stream)
-
- Global SparseMatrix< _Field, SparseMatrixFormat::ELL_R >::SparseMatrix (const _Field &F)
- convert from other matrix.
- Global SparseMatrix< _Field, SparseMatrixFormat::HYB >::consistent () const
- Non element marker. We could end up a line with a marker. A field F would contain an element that does not belong to it. eg a nan for a Givaro::Modular<double>. It could act as a 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. Then we could have a self contained test that checks the write/read cycle without depending on preexisting data files.
- 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)