|
linbox
|
Dense matrix representation. More...
#include <blas-matrix.h>
Data Structures | |
| struct | rebind |
| Rebind operator. More... | |
Public Types | |
| typedef _Field | Field |
| typedef Field::Element | Element |
| Element type. | |
| typedef Field::Element_ptr | Element_ptr |
| Pointer to Element type. | |
| typedef Field::ConstElement_ptr | ConstElement_ptr |
| Pointer to const Element type. | |
| typedef _Storage | RawStorage |
| Actually a std::vector<Element> (or alike: cstor(n), cstor(n, val), operator[], resize(n).) | |
| typedef BlasVector< Field, RawStorage > | Storage |
Actually a BlasVector of a std::vector<Element> (or alike: cstor(n), cstor(n, val), operator[], resize(n).) | |
| typedef BlasMatrix< Field, RawStorage > | Self_t |
| Self type. | |
| typedef Self_t | matrixType |
| matrix type | |
| typedef BlasSubmatrix< Self_t > | subMatrixType |
| typedef BlasSubmatrix< const Self_t > | constSubMatrixType |
| typedef Storage::subVectorType | subVectorType |
| typedef Storage::constSubVectorType | constSubVectorType |
| typedef subVectorType | Row |
| typedef subVectorType | Col |
| typedef constSubVectorType | ConstRow |
| typedef constSubVectorType | ConstCol |
Public Member Functions | |
| void | init (const size_t &r=0, const size_t &c=0) |
| (Re)allocates a new \( m \times n\) zero matrix (shaped and ready). | |
| void | resize (const size_t &m, const size_t &n, const Element &val=Element()) |
| Resize the matrix to the given dimensions. | |
| BlasMatrix (const Self_t &A) | |
| Copy Constructor of a matrix (copying data). | |
| BlasMatrix (const _Field &F) | |
| Allocates a new \( 0 \times 0\) matrix (shaped and ready). | |
| BlasMatrix (const _Field &F, const size_t &m, const size_t &n) | |
| Allocates a new \( m \times n\) zero matrix (shaped and ready). | |
| BlasMatrix (MatrixStream< _Field > &ms) | |
| Constructor from a matrix stream. | |
| template<class Matrix> | |
| BlasMatrix (const Matrix &A) | |
| Generic copy constructor from either a blackbox or a matrix container. | |
| template<class Matrix> | |
| BlasMatrix (const Matrix &A, const size_t &i0, const size_t &j0, const size_t &m, const size_t &n) | |
| Generic copy constructor from either a blackbox or a matrix container (allow submatrix). | |
| template<class StreamVector> | |
| BlasMatrix (const Field &F, VectorStream< StreamVector > &stream) | |
| Constructor using a finite vector stream (stream of the rows). | |
| template<class constIterator> | |
| BlasMatrix (const _Field &F, const size_t &m, const size_t &n, const constIterator &it) | |
| Create a BlasMatrix from an iterator of elements. | |
| template<class _Matrix> | |
| BlasMatrix (const _Matrix &A, const _Field &F) | |
| Create a BlasMatrix from another matrix defined over a different field (use homomorphism if it exists) | |
| ~BlasMatrix () | |
| Destructor. | |
| Self_t & | operator= (const Self_t &A) |
| operator = (copying data) | |
| template<class _Matrix> | |
| Self_t & | operator= (const _Matrix &A) |
| operator = (copying data from different matrix type) | |
| template<class _Matrix> | |
| Self_t & | copy (const _Matrix &A) |
| size_t | rowdim () const |
| Get the number of rows in the matrix. | |
| size_t | coldim () const |
| Get the number of columns in the matrix. | |
| size_t | getStride () const |
| Get the stride of the matrix. | |
| ConstElement_ptr | getPointer () const |
| | |
| Element_ptr | getPointer () |
| ConstElement_ptr | getConstPointer () const |
| void | setEntry (size_t i, size_t j, const Element &a_ij) |
| Set the entry at the (i, j) position to a_ij. | |
| Element & | refEntry (size_t i, size_t j) |
| Get a writeable reference to the entry in the (i, j) position. | |
| const Element & | getEntry (size_t i, size_t j) const |
| Get a read-only reference to the entry in the (i, j) position. | |
| Element & | getEntry (Element &x, size_t i, size_t j) const |
| Copy the (i, j) entry into x, and return a reference to x. | |
| const _Field & | field () const |
| get a read only reference to the field of the matrix | |
| std::istream & | read (std::istream &file) |
| Read the matrix from an input stream. | |
| std::ostream & | write (std::ostream &os, Tag::FileFormat f=Tag::FileFormat::MatrixMarket) const |
| Write the matrix to an output stream. | |
| template<class _Matrix> | |
| void | createBlasMatrix (const _Matrix &A, const size_t i0, const size_t j0, const size_t m, const size_t n, MatrixContainerCategory::Container) |
| template<class _Matrix> | |
| void | createBlasMatrix (const _Matrix &A, const size_t i0, const size_t j0, const size_t m, const size_t n, MatrixContainerCategory::BlasContainer) |
| template<class OtherMatrix> | |
| BlasMatrix (const OtherMatrix &A, const _Field &F) | |
| template<class Matrix> | |
| BlasMatrix< _Field, _Storage > & | operator= (const Matrix &A) |
Protected Member Functions | |
create BlasMatrix | |
| template<class Matrix> | |
| void | createBlasMatrix (const Matrix &A, const size_t i0, const size_t j0, const size_t m, const size_t n, MatrixContainerCategory::Container) |
| template<class Matrix> | |
| void | createBlasMatrix (const Matrix &A, const size_t i0, const size_t j0, const size_t m, const size_t n, MatrixContainerCategory::BlasContainer) |
| template<class Matrix> | |
| void | createBlasMatrix (const Matrix &A, const size_t i0, const size_t j0, const size_t m, const size_t n, MatrixContainerCategory::Blackbox) |
| template<class constIterator> | |
| void | createBlasMatrix (constIterator it) |
Protected Attributes | |
| size_t | _row |
| size_t | _col |
| Storage | _rep |
Column of rows iterator | |
The column of rows iterator traverses the rows of the matrix in ascending order. Dereferencing the iterator yields a row vector in dense format | |
| using | RowIterator = BlasMatrixIterator<Field, Storage, subVectorType> |
| using | ConstRowIterator = BlasMatrixIterator<Field, Storage, constSubVectorType> |
| RowIterator | rowBegin () |
| ConstRowIterator | rowBegin () const |
| RowIterator | rowEnd () |
| ConstRowIterator | rowEnd () const |
Row of columns iterator | |
The row of columns iterator traverses the columns of the matrix in ascending order. Dereferencing the iterator yields a column vector in dense format | |
| using | ColIterator = BlasMatrixIterator<Field, Storage, subVectorType> |
| using | ConstColIterator = BlasMatrixIterator<Field, Storage, constSubVectorType> |
| ColIterator | colBegin () |
| ConstColIterator | colBegin () const |
| ColIterator | colEnd () |
| ConstColIterator | colEnd () const |
Iterator | |
The iterator is a method for accessing all entries in the matrix in some unspecified order. This can be used, e.g. to reduce all matrix entries modulo a prime before passing the matrix into an algorithm. | |
| typedef Storage::iterator | Iterator |
| typedef Storage::const_iterator | ConstIterator |
| Iterator | Begin () |
| Iterator | End () |
| ConstIterator | Begin () const |
| ConstIterator | End () const |
Raw Indexed iterator | |
Like the raw iterator, the indexed iterator is a method for accessing all entries in the matrix in some unspecified order. At each position of the the indexed iterator, it also provides the row and column indices of the currently referenced entry. This is provided through it's | |
| using | IndexedIterator = BlasMatrixIndexedIterator<Field, Element_ptr, Element> |
| Retrieve a reference to a row. | |
| using | ConstIndexedIterator = BlasMatrixIndexedIterator<Field, ConstElement_ptr, const Element> |
| Retrieve a reference to a row. | |
| IndexedIterator | IndexedBegin () |
| Retrieve a reference to a row. | |
| ConstIndexedIterator | IndexedBegin () const |
| Retrieve a reference to a row. | |
| IndexedIterator | IndexedEnd () |
| Retrieve a reference to a row. | |
| ConstIndexedIterator | IndexedEnd () const |
| Retrieve a reference to a row. | |
| subVectorType | operator[] (size_t i) |
| Retrieve a reference to a row. | |
| constSubVectorType | operator[] (size_t i) const |
| Retrieve a reference to a row. | |
| template<class Vector> | |
| Vector & | columnDensity (Vector &v) const |
| Compute column density. | |
| size_t | size () const |
| Compute the number of non zero elt. | |
| void | finalize () |
| Finalize some optimization in the matrix storage. | |
| template<class Vector1, class Vector2> | |
| Vector1 & | apply (Vector1 &y, const Vector2 &x) const |
| Retrieve a reference to a row. | |
| template<class Vector1, class Vector2> | |
| Vector1 & | applyTranspose (Vector1 &y, const Vector2 &x) const |
| Retrieve a reference to a row. | |
| subMatrixType & | applyRight (subMatrixType &Y, const subMatrixType &X) |
| Retrieve a reference to a row. | |
| subMatrixType & | applyLeft (subMatrixType &Y, const subMatrixType &X) |
| Retrieve a reference to a row. | |
| void | zero () |
| Retrieve a reference to a row. | |
| void | random () |
| Retrieve a reference to a row. | |
| template<class RandIter> | |
| void | random (RandIter &I) |
| Retrieve a reference to a row. | |
Dense matrix representation.
A BlasMatrix is a matrix of _Field::Element, with the structure of BLAS matrices. It is basically a vector of _Field::Element. In the Mother model, a BlasMatrix is allocated by the user.
| typedef _Field Field |
| typedef Field::Element_ptr Element_ptr |
Pointer to Element type.
| typedef Field::ConstElement_ptr ConstElement_ptr |
Pointer to const Element type.
| typedef _Storage RawStorage |
Actually a std::vector<Element> (or alike: cstor(n), cstor(n, val), operator[], resize(n).)
| typedef BlasVector<Field,RawStorage> Storage |
Actually a BlasVector of a std::vector<Element> (or alike: cstor(n), cstor(n, val), operator[], resize(n).)
| typedef BlasMatrix<Field,RawStorage> Self_t |
Self type.
| typedef Self_t matrixType |
matrix type
| typedef BlasSubmatrix< Self_t> subMatrixType |
| typedef BlasSubmatrix<const Self_t> constSubMatrixType |
| typedef Storage::subVectorType subVectorType |
| typedef Storage::constSubVectorType constSubVectorType |
| typedef subVectorType Row |
| typedef subVectorType Col |
| typedef constSubVectorType ConstRow |
| typedef constSubVectorType ConstCol |
| using RowIterator = BlasMatrixIterator<Field, Storage, subVectorType> |
| using ConstRowIterator = BlasMatrixIterator<Field, Storage, constSubVectorType> |
| using ColIterator = BlasMatrixIterator<Field, Storage, subVectorType> |
| using ConstColIterator = BlasMatrixIterator<Field, Storage, constSubVectorType> |
| typedef Storage::iterator Iterator |
| typedef Storage::const_iterator ConstIterator |
| using IndexedIterator = BlasMatrixIndexedIterator<Field, Element_ptr, Element> |
| using ConstIndexedIterator = BlasMatrixIndexedIterator<Field, ConstElement_ptr, const Element> |
| BlasMatrix | ( | const Self_t & | A | ) |
Copy Constructor of a matrix (copying data).
| A | matrix to be copied. |
| BlasMatrix | ( | const _Field & | F | ) |
Allocates a new \( 0 \times 0\) matrix (shaped and ready).
| BlasMatrix | ( | const _Field & | F, |
| const size_t & | m, | ||
| const size_t & | n ) |
Allocates a new \( m \times n\) zero matrix (shaped and ready).
| F | |
| m | rows |
| n | cols |
| BlasMatrix | ( | MatrixStream< _Field > & | ms | ) |
Constructor from a matrix stream.
| ms | matrix stream. |
Generic copy constructor from either a blackbox or a matrix container.
| A | matrix to be copied |
| BlasMatrix | ( | const Matrix & | A, |
| const size_t & | i0, | ||
| const size_t & | j0, | ||
| const size_t & | m, | ||
| const size_t & | n ) |
Generic copy constructor from either a blackbox or a matrix container (allow submatrix).
| A | matrix to be copied |
| i0 | |
| j0 | |
| m | rows |
| n | columns |
| BlasMatrix | ( | const Field & | F, |
| VectorStream< StreamVector > & | stream ) |
Constructor using a finite vector stream (stream of the rows).
| F | The field of entries; passed so that arithmetic may be done on elements |
| stream | A vector stream to use as a source of vectors for this matrix |
| BlasMatrix | ( | const _Field & | F, |
| const size_t & | m, | ||
| const size_t & | n, | ||
| const constIterator & | it ) |
Create a BlasMatrix from an iterator of elements.
| F | |
| m | |
| n | |
| it |
| BlasMatrix | ( | const _Matrix & | A, |
| const _Field & | F ) |
Create a BlasMatrix from another matrix defined over a different field (use homomorphism if it exists)
| F | Field of the created nmatrix |
| A | matrix to be copied |
|
inline |
Destructor.
| BlasMatrix | ( | const OtherMatrix & | A, |
| const _Field & | F ) |
|
protected |
Copy data according to Matrix container structure (allow submatrix).
|
protected |
Copy data according to Matrix container structure (allow submatrix).
|
protected |
Copy data according to Matrix container structure (allow submatrix).
|
protected |
constructor from an iterator of elements.
| v | iterator on to Element s |
| void init | ( | const size_t & | r = 0, |
| const size_t & | c = 0 ) |
(Re)allocates a new \( m \times n\) zero matrix (shaped and ready).
| void resize | ( | const size_t & | m, |
| const size_t & | n, | ||
| const Element & | val = Element() ) |
Resize the matrix to the given dimensions.
The state of the matrix's entries after a call to this method is undefined
| m | Number of rows |
| n | Number of columns |
| val |
operator = (copying data)
| Self_t & operator= | ( | const _Matrix & | A | ) |
operator = (copying data from different matrix type)
|
inline |
|
inline |
Get the number of rows in the matrix.
|
inline |
Get the number of columns in the matrix.
|
inline |
Get the stride of the matrix.
|
inline |
Get read-only access to the matrix data.
|
inline |
|
inline |
|
inline |
|
inline |
Get a writeable reference to the entry in the (i, j) position.
| i | Row index of entry |
| j | Column index of entry |
|
inline |
Get a read-only reference to the entry in the (i, j) position.
| i | Row index |
| j | Column index |
|
inline |
get a read only reference to the field of the matrix
| std::istream & read | ( | std::istream & | file | ) |
Read the matrix from an input stream.
The stream is in SMS, DENSE, or MatrixMarket format and is autodetected.
| file | Input stream from which to read |
| std::ostream & write | ( | std::ostream & | os, |
| Tag::FileFormat | f = Tag::FileFormat::MatrixMarket ) const |
Write the matrix to an output stream.
| os | Output stream to which to write |
| f | write in some format (Tag::FileFormat::Format). Default is Maple's. |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Compute column density.
|
inline |
Compute the number of non zero elt.
|
inline |
Finalize some optimization in the matrix storage.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| void createBlasMatrix | ( | const _Matrix & | A, |
| const size_t | i0, | ||
| const size_t | j0, | ||
| const size_t | m, | ||
| const size_t | n, | ||
| MatrixContainerCategory::Container | ) |
| void createBlasMatrix | ( | const _Matrix & | A, |
| const size_t | i0, | ||
| const size_t | j0, | ||
| const size_t | m, | ||
| const size_t | n, | ||
| MatrixContainerCategory::BlasContainer | ) |
| BlasMatrix< _Field, _Storage > & operator= | ( | const Matrix & | A | ) |
|
protected |
|
protected |
|
protected |