linbox
Todo List
Global _LB_MAX_SZ
!
Global BlasMatrix< Field, Rep >::random (const unsigned &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
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 EarlyMultipCRA< Domain_Type >::progress (const Domain &D, const Vect< DomainElement, Alloc< DomainElement > > &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 EarlyMultipCRA< 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.
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
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<Givaro::ZRing<Integer> >

Global LinBox::IsNegative (const uint8_t &p)
or use integer_traits<T>::is_unsigned ??
Global LinBox::NullSpaceBasis (const LINBOX_enum(Tag::Side) Side, const BlasMatrix< Field > &A, BlasMatrix< Field > &Ker, size_t &kerdim)
make it work for BlasSubmatrix too
Global LinBox::NullSpaceBasisIn (const LINBOX_enum(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::NullSpaceBasisIn (const LINBOX_enum(Tag::Side) Side, BlasMatrix< Field > &A, BlasMatrix< Field > &Ker, size_t &kerdim)
make it work for BlasSubmatrix too
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 (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.
Group matrix
vector of rows ?
See Also
Dense Matrix.
File matrix/random-matrix.h
à la vector/stream.h
Class MatrixDomain< GF2 >
this is where m4ri will play.
Global MatrixDomain< Matrix >::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< Matrix >::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 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
Class RandomIntegerIter< _Unsigned >
one could create the same one on a LinBox::PID_double ?
Template Parameters
_Unsignedif true, then only non negative integers are generated, if false, their sign is random.
Class RandomPrimeIter
one could create the same one on a LinBox::PID_double ?
Global RandomPrimeIter::random_between (integer &a, uint64_t _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
Parameters
lcontainerNO DOC
rNO DOC
THRESHOLDNO DOC
Class RawVector< Element >
template by Field
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 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 ?
Warning
if this is used to build a matrix and this matrix is "well formed", it can be sped up (no checking that the entry already exists).
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 ?
Warning
if this is used to build a matrix and this matrix is "well formed", it can be sped up (no checking that the entry already exists).
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 ?
Warning
if this is used to build a matrix and this matrix is "well formed", it can be sped up (no checking that the entry already exists).
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 ?
Warning
if this is used to build a matrix and this matrix is "well formed", it can be sped up (no checking that the entry already exists).
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. 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)
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)