linbox
TransposeMatrix< Matrix, Trait > Class Template Reference

Matrix transpose. More...

#include <transpose-matrix.h>

+ Inheritance diagram for TransposeMatrix< Matrix, Trait >:

Public Types

typedef Matrix::Field Field
 
typedef Field::Element Element
 
typedef Matrix::ColIterator RowIterator
 
typedef Matrix::RowIterator ColIterator
 
typedef Matrix::Iterator Iterator
 
typedef Matrix::IndexedIterator IndexedIterator
 
typedef Matrix::ConstColIterator ConstRowIterator
 
typedef Matrix::ConstRowIterator ConstColIterator
 
typedef Matrix::ConstIterator ConstIterator
 
typedef Matrix::ConstIndexedIterator ConstIndexedIterator
 
typedef Matrix::Row Column
 
typedef Matrix::Row Col
 
typedef Matrix::Col Row
 

Public Member Functions

 TransposeMatrix (Matrix &A)
 Constructor.
 
 TransposeMatrix (const TransposeMatrix &Mat)
 Copy constructor.
 
const Fieldfield () const
 Get the field of the matrix.
 
size_t rowdim () const
 Get the number of rows in the matrix.
 
size_t coldim () const
 Get the number of columns in the matrix.
 
Matrix I/O
std::ostream & write (std::ostream &stream) const
 Write a matrix to an output stream.
 
Access to matrix elements
void setEntry (size_t i, size_t j, const Element &a_ij)
 Set the entry at the (i, j) position to a_ij.
 
ElementrefEntry (size_t i, size_t j)
 Get a writeable reference to the entry in the (i, j) position.
 
const ElementgetEntry (size_t i, size_t j) const
 Get a read-only reference to the entry in the (i, j) position.
 
ElementgetEntry (Element &x, size_t i, size_t j) const
 Copy the (i, j) entry into x, and return a reference to x.
 
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

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

ColIterator colBegin ()
 
ColIterator colEnd ()
 
ConstColIterator colBegin () const
 
ConstColIterator colEnd () const
 
Raw iterator

The raw 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.

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 rowIndex() and colIndex() functions.

Matrix_Mat
 
IndexedIterator IndexedBegin ()
 
IndexedIterator IndexedEnd ()
 
ConstIndexedIterator IndexedBegin () const
 
ConstIndexedIterator IndexedEnd () const
 

Detailed Description

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
class LinBox::TransposeMatrix< Matrix, Trait >

Matrix transpose.

This class takes a matrix meeting the BlasMatrix archetype and switches the row and column iterators, giving the transpose of the original matrix. It is generic with respect to the matrix given.

If the matrix given has limited iterators, then its transpose will have limited iterators as well. In particular, if the matrix given has only row iterators, then the transpose object will have only column iterators, and vice versa.

This class differs from Transpose in that it constructs a full matrix representation, with row and/or column iterators. It does not include any logic for matrix-vector products, and does not meet the BlackboxArchetype interface. Nor does it make such assumptions about the matrix given.

This class gives a constant matrix as output. It provides no iterators for modification of the data in the matrix.

The input/output functionality of this class passes requests directly through to the underlying matrix. In particular, the output will be the transpose of the matrix expected and the input will expect the transpose of the matrix given. Thus, it is not recommended to use TransposeMatrix for reading and writing matrices, except for testing purposes.

Member Typedef Documentation

◆ Field

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::Field Field

◆ Element

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Field::Element Element

◆ RowIterator

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::ColIterator RowIterator

◆ ColIterator

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::RowIterator ColIterator

◆ Iterator

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::Iterator Iterator

◆ IndexedIterator

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::IndexedIterator IndexedIterator

◆ ConstRowIterator

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::ConstColIterator ConstRowIterator

◆ ConstColIterator

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::ConstRowIterator ConstColIterator

◆ ConstIterator

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::ConstIterator ConstIterator

◆ ConstIndexedIterator

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::ConstIndexedIterator ConstIndexedIterator

◆ Column

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::Row Column

◆ Col

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::Row Col

◆ Row

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
typedef Matrix::Col Row

Constructor & Destructor Documentation

◆ TransposeMatrix() [1/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
TransposeMatrix ( Matrix & A)
inline

Constructor.

Parameters
AUnderlying matrix of which to construct the transpose

◆ TransposeMatrix() [2/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
TransposeMatrix ( const TransposeMatrix< Matrix, Trait > & Mat)
inline

Copy constructor.

Member Function Documentation

◆ field()

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
const Field & field ( ) const
inline

Get the field of the matrix.

Returns
field of the matrix

◆ rowdim()

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
size_t rowdim ( ) const
inline

Get the number of rows in the matrix.

Returns
Number of rows in matrix

◆ coldim()

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
size_t coldim ( ) const
inline

Get the number of columns in the matrix.

Returns
Number of columns in matrix

◆ write()

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
std::ostream & write ( std::ostream & stream) const
inline

Write a matrix to an output stream.

Parameters
streamStream to which to write the matrix
Returns
Reference to stream

◆ setEntry()

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
void setEntry ( size_t i,
size_t j,
const Element & a_ij )
inline

Set the entry at the (i, j) position to a_ij.

Parameters
iRow number, 0...rowdim () - 1
jColumn number 0...coldim () - 1
a_ijElement to set

◆ refEntry()

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
Element & refEntry ( size_t i,
size_t j )
inline

Get a writeable reference to the entry in the (i, j) position.

Parameters
iRow index of entry
jColumn index of entry
Returns
Reference to matrix entry

◆ getEntry() [1/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
const Element & getEntry ( size_t i,
size_t j ) const
inline

Get a read-only reference to the entry in the (i, j) position.

Parameters
iRow index
jColumn index
Returns
Const reference to matrix entry

◆ getEntry() [2/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
Element & getEntry ( Element & x,
size_t i,
size_t j ) const
inline

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

Parameters
xElement in which to store result
iRow index
jColumn index
Returns
Reference to x

◆ rowBegin() [1/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
RowIterator rowBegin ( )
inline

◆ rowEnd() [1/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
RowIterator rowEnd ( )
inline

◆ rowBegin() [2/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
ConstRowIterator rowBegin ( ) const
inline

◆ rowEnd() [2/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
ConstRowIterator rowEnd ( ) const
inline

◆ colBegin() [1/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
ColIterator colBegin ( )
inline

◆ colEnd() [1/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
ColIterator colEnd ( )
inline

◆ colBegin() [2/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
ConstColIterator colBegin ( ) const
inline

◆ colEnd() [2/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
ConstColIterator colEnd ( ) const
inline

◆ Begin() [1/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
Iterator Begin ( )
inline

◆ End() [1/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
Iterator End ( )
inline

◆ Begin() [2/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
ConstIterator Begin ( ) const
inline

◆ End() [2/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
ConstIterator End ( ) const
inline

◆ IndexedBegin() [1/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
IndexedIterator IndexedBegin ( )
inline

◆ IndexedEnd() [1/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
IndexedIterator IndexedEnd ( )
inline

◆ IndexedBegin() [2/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
ConstIndexedIterator IndexedBegin ( ) const
inline

◆ IndexedEnd() [2/2]

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
ConstIndexedIterator IndexedEnd ( ) const
inline

Field Documentation

◆ _Mat

template<class Matrix, class Trait = typename MatrixTraits<Matrix>::MatrixCategory>
Matrix& _Mat
protected

The documentation for this class was generated from the following file: