linbox
|
Dense matrix representation. More...
#include <matrix-domain.h>
Data Structures | |
class | IndexedIterator |
Indexed Iterator. More... | |
struct | rebind |
Rebind operator. More... | |
Public Types | |
typedef Field::Element | Element |
Element type. | |
typedef _Storage | Rep |
Actually a std::vector<Element> (or alike: cstor(n), cstor(n, val), operator[], resize(n).) | |
typedef Rep::pointer | pointer |
pointer type to elements | |
typedef BlasMatrix< Field, Rep > | Self_t |
Self typeype. | |
typedef BlasSubmatrix< Self_t > | subMatrixType |
Submatrix type. | |
typedef BlasSubmatrix< constSelf_t > | constSubMatrixType |
Submatrix type. | |
typedef Self_t | matrixType |
matrix type | |
typedef constSelf_t | constMatrixType |
matrix type | |
typedef Self_t | blasType |
blas matrix type | |
Public Member Functions | |
BlasMatrix (const _Field &F) | |
Allocates a new ![]() | |
BlasMatrix (const _Field &F, const size_t &m, const size_t &n) | |
Allocates a new bare ![]() | |
BlasMatrix (MatrixStream< _Field > &ms) | |
Constructor from a matrix stream. More... | |
template<class Matrix > | |
BlasMatrix (const Matrix &A) | |
Generic copy constructor from either a blackbox or a matrix container. More... | |
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). More... | |
template<class _Matrix > | |
BlasMatrix (const _Matrix &A, const _Field &F) | |
Constructor. More... | |
BlasMatrix (const Self_t &A) | |
Copy Constructor of a matrix (copying data). More... | |
BlasMatrix (const _Field &F, const std::vector< Element > &v, const size_t &m, const size_t &n) | |
Create a BlasMatrix from a vector of elements. More... | |
BlasMatrix (const _Field &F, const Element *v, const size_t &m, const size_t &n) | |
Create a BlasMatrix from an array of elements. More... | |
template<class StreamVector > | |
BlasMatrix (const Field &F, VectorStream< StreamVector > &stream) | |
Constructor using a finite vector stream (stream of the rows). More... | |
~BlasMatrix () | |
Destructor. | |
Self_t & | operator= (const Self_t &A) |
operator = (copying data) | |
template<class Matrix > | |
BlasMatrix & | copy (const Matrix &B) |
Make this a (deep)copy of B. More... | |
size_t | rowdim () const |
Get the number of rows in the matrix. More... | |
size_t | coldim () const |
Get the number of columns in the matrix. More... | |
size_t | getStride () const |
Get the stride of the matrix. | |
size_t & | getWriteStride () |
Get a reference to the stride of the matrix. More... | |
void | resize (const size_t &m, const size_t &n, const Element &val=Element()) |
Resize the matrix to the given dimensions. More... | |
pointer | getPointer () |
| |
pointer & | getWritePointer () |
| |
const Element & | setEntry (size_t i, size_t j, const Element &a_ij) |
Set the entry at the (i, j) position to a_ij. More... | |
Element & | refEntry (size_t i, size_t j) |
Get a writeable reference to the entry in the (i, j) position. More... | |
const Element & | getEntry (size_t i, size_t j) const |
Get a read-only reference to the entry in the (i, j) position. More... | |
Element & | getEntry (Element &x, size_t i, size_t j) const |
Copy the (i, j) entry into x, and return a reference to x. More... | |
Self_t | transpose (Self_t &tM) const |
Creates a transposed matrix of *this . More... | |
template<bool _IP> | |
void | transpose () |
Transpose (inplace). More... | |
void | reverseRows () |
Reverse the rows of a matrix. More... | |
void | reverseCols () |
Reverse the columns of a matrix. More... | |
void | reverse () |
Reverse the rows/columns of a matrix. More... | |
std::istream & | read (std::istream &file) |
Read the matrix from an input stream. More... | |
std::ostream & | write (std::ostream &os) const |
Write the matrix in MatrixMarket format. | |
std::ostream & | write (std::ostream &os, Tag::FileFormat f) const |
Write the matrix to an output stream. More... | |
std::ostream & | write (std::ostream &os, bool mapleFormat) const |
void | random (const size_t &b) |
Data Fields | |
const typedef pointer | const_pointer |
const pointer type | |
const typedef BlasMatrix< Field, Rep > | constSelf_t |
Self typeype. | |
pointer | _ptr |
MatrixDomain< Field > | _MD |
VectorDomain< Field > | _VD |
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 | |
typedef Subvector< typename Rep::iterator, typename Rep::const_iterator > | Row |
typedef Subvector< typename Rep::const_iterator > | ConstRow |
RowIterator | rowBegin () |
RowIterator | rowEnd () |
ConstRowIterator | rowBegin () const |
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 | |
typedef Subvector< Subiterator< typename Rep::iterator > > | Col |
typedef Subvector< Subiterator< typename Rep::const_iterator > > | ConstCol |
typedef Col | Column |
typedef ConstCol | ConstColumn |
ColIterator | colBegin () |
ColIterator | colEnd () |
ConstColIterator | colBegin () const |
ConstColIterator | colEnd () const |
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.
BlasMatrix | ( | const _Field & | F, |
const size_t & | m, | ||
const size_t & | n | ||
) |
Allocates a new bare matrix (unshaped, unready).
/ BlasMatrix () ;
/ (Re)allocates a new zero matrix (shaped and ready). void init(const _Field & F, const size_t & r = 0, const size_t & c = 0);
/*! Allocates a new zero matrix (shaped and ready).
F | |
m | rows |
n | cols |
BlasMatrix | ( | MatrixStream< _Field > & | ms | ) |
Constructor from a matrix stream.
ms | matrix stream. |
BlasMatrix | ( | const Matrix & | A | ) |
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 _Matrix & | A, |
const _Field & | F | ||
) |
Constructor.
A | matrix to be copied |
F | Field |
BlasMatrix | ( | const Self_t & | A | ) |
Copy Constructor of a matrix (copying data).
A | matrix to be copied. |
BlasMatrix | ( | const _Field & | F, |
const std::vector< Element > & | v, | ||
const size_t & | m, | ||
const size_t & | n | ||
) |
Create a BlasMatrix from a vector of elements.
F | |
v | |
m | |
n |
BlasMatrix | ( | const _Field & | F, |
const Element * | v, | ||
const size_t & | m, | ||
const size_t & | n | ||
) |
Create a BlasMatrix from an array of elements.
F | |
v | |
m | |
n |
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 |
|
inline |
Make this a (deep)copy of B.
Assumes same shape. make sure we actually copy
size_t rowdim |
Get the number of rows in the matrix.
size_t coldim |
Get the number of columns in the matrix.
size_t & getWriteStride |
Get a reference to the stride of the matrix.
Modify stride this way.
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 |
const _Field::Element & setEntry | ( | size_t | i, |
size_t | j, | ||
const Element & | a_ij | ||
) |
Set the entry at the (i, j) position to a_ij.
i | Row number, 0...rowdim () - 1 |
j | Column number 0...coldim () - 1 |
a_ij | Element to set |
_Field::Element & refEntry | ( | size_t | i, |
size_t | j | ||
) |
Get a writeable reference to the entry in the (i, j) position.
i | Row index of entry |
j | Column index of entry |
const _Field::Element & getEntry | ( | size_t | i, |
size_t | j | ||
) | const |
Get a read-only reference to the entry in the (i, j) position.
i | Row index |
j | Column index |
_Field::Element & getEntry | ( | Element & | x, |
size_t | i, | ||
size_t | j | ||
) | const |
Copy the (i, j) entry into x, and return a reference to x.
This form is more in the Linbox style and is provided for interface compatibility with other parts of the library
x | Element in which to store result |
i | Row index |
j | Column index |
Creates a transposed matrix of *this
.
[in] | tM |
void transpose |
Transpose (inplace).
If rows and columns agree, we can transpose inplace.
void reverseRows |
Reverse the rows of a matrix.
This is done inplace. Let J=antiDiag(1) (or the matrix of the reverse permutation or the matrix (i,j) = (i+j+1==m)). Then, we compute A <- J.A;
void reverseCols |
Reverse the columns of a matrix.
This is done inplace. This is A <- J.A
void reverse |
Reverse the rows/columns of a matrix.
This is done inplace. This is A <- J.A.J
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 |
|
inline |
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 |
BlasMatrix< _Field, _Rep >::ConstIndexedIterator IndexedBegin |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
BlasMatrix< _Field, _Rep >::ConstIndexedIterator IndexedEnd |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
ConstIndexedIterator IndexedBegin | ( | ) | const |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
ConstIndexedIterator IndexedEnd | ( | ) | const |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
BlasMatrix< _Field, _Rep >::Row operator[] | ( | size_t | i | ) |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
BlasMatrix< _Field, _Rep >::ConstRow operator[] | ( | size_t | i | ) | const |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
|
inline |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
|
inline |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
Vector1 & apply | ( | Vector1 & | y, |
const Vector2 & | x | ||
) | const |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
BlasVector<Field,_VRep>& apply | ( | BlasVector< Field, _VRep > & | y, |
const BlasVector< Field, _VRep > & | x | ||
) | const |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
Vector1 & applyTranspose | ( | Vector1 & | y, |
const Vector2 & | x | ||
) | const |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
|
inline |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
|
inline |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
const _Field & field |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
|
inline |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
|
inline |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
|
inline |
Retrieve a reference to a row.
Since rows may also be indexed, this allows A[i][j] notation to be used.
i | Row index |
void random< size_t > | ( | const size_t & | b | ) |
MatrixDomain<Field> _MD |
VectorDomain<Field> _VD |