linbox
Data Structures | Files
blackbox

These matrix classes adhere to the simple blackbox interface. More...

Data Structures

class  BlackboxArchetype
 showing the member functions provided by all blackbox matrix classes. More...
class  BlasBlackbox< _Field >
 Dense matrix representation for BLAS based elimination. More...
class  Butterfly< _Field, Switch >
 Switching Network based BlackBox Matrix. More...
struct  Companion< _Field >
 Companion matrix of a monic polynomial. More...
class  Compose< _Blackbox1, _Blackbox2 >
 Blackbox of a product: $C = AB$, i.e $Cx \gets A(Bx)$. More...
class  ComposeOwner< _Blackbox1, _Blackbox2 >
 Blackbox of a product: $C = AB$, i.e $Cx \gets A(Bx)$. More...
class  DenseMatrix< _Field >
 Blackbox interface to dense matrix representation. More...
class  Diagonal< Field, Trait >
 Random diagonal matrices are used heavily as preconditioners. More...
class  Dif< _Blackbox1, _Blackbox2 >
 Blackbox of a difference: C := A - B, i.e Cx = Ax - Bx. More...
class  DirectSum< _Blackbox1, _Blackbox2 >
 If C = DirectSum(A, B) and y = xA and z = wB, then (y,z) = (x,w)C. More...
class  Hilbert< _Field >
 Example of a blackbox that is space efficient, though not time efficient. More...
class  Inverse< Blackbox >
 A Blackbox for the inverse. More...
class  JIT_Matrix< _Field, JIT_EntryGenerator >
 Example of a blackbox that is space efficient, though not time efficient. More...
class  MatrixBlackbox< _Field, _Matrix, _Vector >
 Matrix black box. More...
class  MoorePenrose< Blackbox >
 Generalized inverse of a blackbox. More...
class  Sylvester< _Field >
 This is a representation of the Sylvester matrix of two polynomials. More...
class  NullMatrix
 This is a representation of the 0 by 0 empty matrix which does not occupy memory. More...
class  Permutation< _Field, _Storage >
 size is n. More...
class  PolynomialBB< Blackbox, Poly >
 represent the matrix P(A) where A is a blackbox and P a polynomial More...
class  PolynomialBBOwner< Blackbox, Poly >
 represent the matrix P(A) where A is a blackbox and P a polynomial More...
class  ZOQuad< _Field >
 A class of striped or block-decomposed zero-one matrices. More...
class  ScalarMatrix< _Field >
 Blackbox for aI. More...
class  SparseMatrix< _Field, _Row >
 vector of sparse rows. More...
class  Squarize< Blackbox >
 transpose matrix without copying. More...
class  Submatrix< Blackbox, Trait >
 leading principal minor of existing matrix without copying. More...
class  Sum< _Blackbox1, _Blackbox2 >
 blackbox of a matrix sum without copying. More...
class  SumOwner< _Blackbox1, _Blackbox2 >
 blackbox of a matrix sum without copying. More...
class  Toeplitz< _CField, _PField >
 This is the blackbox representation of a Toeplitz matrix. More...
class  Transpose< Blackbox >
 transpose matrix without copying. More...
class  TransposeOwner< Blackbox >
 transpose matrix without copying. More...
class  TriplesBB< _Field >
 wrapper for NAG Sparse Matrix format. More...
class  ZeroOne< _Field >
 Time and space efficient representation of sparse {0,1}-matrices. More...
struct  ZeroOne< GF2 >
 Time and space efficient representation of sparse matrices over GF2. More...

Files

file  blackbox/archetype.h
 

NO DOC.


file  blackbox/dense.h
 

NO DOC.


file  diagonal.h
 

Random diagonal matrices and diagonal matrices Class especially meant for diagonal precondtionners.


file  frobenius.h
 

NO DESC.


file  hilbert.h
 

NO DESC.


file  triplesbb.h
 

NO DOC.


file  zero-one.inl
 

NO DOC.


file  zo-gf2.inl
 

NO DOC.



Detailed Description

These matrix classes adhere to the simple blackbox interface.

Blackbox matrix algorithms require of the matrix only it's property of being a linear operator. That is, such algorithms exploit only the capacity to apply the matrix to a vector (column vector on right or row vector on left). The advantage is efficient generic methods particularly applicable to sparse and structured matrix classes in which matrix vector product is fast. Importantly, these methods are also space efficient, typically, for an n by n matrix using only O(n) space beyond the matrix representation itself.

These classes all implement the very simple black box interface as it is defined in the LinBox::BlackboxArchetype base class. Thus blackbox matrix algorithms may be used on objects of any of these classes. In contrast, classes representing matrices in such a way that elimination and other operations can be performed on them adhere to more extensive interfaces defined in the matrix directory.

Some of the classes are intended for general use, some are designed to support specific needs of algorithms, and some are primarily for testing purposes.

Users are most likely to be interested in the sparse matrix classes (SparseMatrix, TriplesBB), the class DenseMatrix, and structured matrix classes such as Toeplitz. Consult the constructors and/or read() member function documentation to see how to create them. To use a blackbox of class BB in a code:

Classes designed to be used as preconditioners in algorithms or for testing typically also provide functionality to generate random instances of the class. Examples are Diagonal and Butterfly for preconditioners, xxx for testing.

Some of the classes provide a rudimentary basis of blackbox operators for a "blackbox calculus." These include Compose, Sum, Dif, Submatrix, DirectSum, Inverse, MoorePenrose.

Note:
Developers: All black box matrices should be derived from the BlackboxArchetype , so that they may be used as parameters to functions compiled with the blackbox archetype.