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 linbox/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: {\tt #include "/linbox/blackbox/BB.h"}
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 {\tt Compose, Sum, Dif, Submatrix, DirectSum, Inverse, MoorePenrose}.
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.
Compounds | |
class | BlackboxArchetype |
showing the member functions provided by all blackbox matrix classes. More... | |
class | BlasBlackbox |
template <class _Field> More... | |
class | Butterfly |
Butterfly Switching Network based BlackBox Matrix. A good preconditioner. @doc Implements butterfly switching network on a LinBox vector as a black box matrix through the use of a switch object. More... | |
struct | Companion |
Companion matrix of a monic polynomial. More... | |
class | Compose |
General case. More... | |
class | DenseMatrix |
Blackbox interface to dense matrix representation. More... | |
class | Diagonal |
General diagonal, not be implemented. More... | |
class | Dif |
Blackbox of a difference: C := A - B, i.e. Cx = Ax - Bx. More... | |
class | DirectSum |
If C = DirectSum(A, B) and y = xA and z = wB, then (y,z) = (x,w)C. More... | |
class | Frobenius |
template <class _Field> More... | |
class | Hankel |
template <class _Field> More... | |
class | Hilbert |
Example of a blackbox that is space efficient, though not time efficient. More... | |
class | Inverse |
A Blackbox for the inverse. Not efficient if many applications are used. More... | |
class | MoorePenrose |
Generalized inverse of a blackbox. Efficiency concerns when many applications are used. More... | |
class | NullMatrix |
This is a representation of the 0 by 0 empty matrix which does not occupy memory. It has it's uses! More... | |
class | Permutation |
size is n. More... | |
class | PolynomialBB |
represent the matrix P(A) where A is a blackbox and P a polynomial More... | |
class | ScalarMatrix |
Blackbox for aI. Use particularly for representing 0 and I. More... | |
class | SparseMatrix |
vector of sparse rows. More... | |
class | Submatrix |
class | SubRowMatrix< Matrix, MatrixCategories::RowMatrixTag > |
class | Sum |
blackbox of a matrix sum without copying. More... | |
class | Sylvester |
class | Toeplitz |
This is the blackbox representation of a Toeplitz matrix. More... | |
class | Transpose |
transpose matrix without copying. More... | |
class | TriplesBB |
wrapper for NAG Sparse Matrix format. More... | |
class | ZeroOne |
Time and space efficient representation of sparse {0,1}-matrices. More... |