linbox  1
Public Member Functions
MatrixArchetype< _Element > Class Template Reference

Directly-represented matrix archetype. More...

#include <archetype.h>

List of all members.

Public Member Functions

 MatrixArchetype ()
 MatrixArchetype (size_t m, size_t n)
 MatrixArchetype (const MatrixArchetype &M)
MatrixArchetypeoperator= (const MatrixArchetype &M)
size_t rowdim () const
size_t coldim () const
void resize (size_t m, size_t n)
 Resize the matrix to the given dimensions.
Input and output
template<class Field >
std::istream & read (std::istream &file, const Field &F)
template<class Field >
std::ostream & write (std::ostream &os, const Field &F) const
Access to matrix elements
void setEntry (size_t i, size_t j, const Element &a_ij)
Element & refEntry (size_t i, size_t j)
const Element & getEntry (size_t i, size_t j) const
Element & getEntry (Element &x, size_t i, size_t j) const
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
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.

RawIterator rawBegin ()
RawIterator rawEnd ()
ConstRawIterator rawBegin () const
ConstRawIterator rawEnd () const
Computing matrix information
template<class Vector >
Vector & columnDensity (Vector &v) const
MatrixArchetypetranspose (MatrixArchetype &M) 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 Col Column
typedef ConstCol ConstColumn
ColIterator colBegin ()
ColIterator colEnd ()
ConstColIterator colBegin () const
ConstColIterator colEnd () 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.

typedef const RawIndexedIterator ConstRawIndexedIterator
RawIndexedIterator rawIndexedBegin ()
RawIndexedIterator rawIndexedEnd ()
ConstRawIndexedIterator rawIndexedBegin () const
ConstRawIndexedIterator rawIndexedEnd () const
Row operator[] (size_t i)
ConstRow operator[] (size_t i) const

Detailed Description

template<class _Element>
class LinBox::MatrixArchetype< _Element >

Directly-represented matrix archetype.

This archetype gives the common interface for matrices that have direct representations. The matrices are required to provide iterators to access and manipulate their entries, but not any matrix-matrix or matrix-vector arithmetic. That is, they are pure containers. As such, they are only parameterized on the element type, not on the field type.


Constructor & Destructor Documentation

Empty Constructor.

MatrixArchetype ( size_t  m,
size_t  n 
)

Constructor with size

Parameters:
mrow dimension
ncolumn dimension
MatrixArchetype ( const MatrixArchetype< _Element > &  M)

Copy constructor


Member Function Documentation

MatrixArchetype& operator= ( const MatrixArchetype< _Element > &  M)

Operator =

size_t rowdim ( ) const

Get the number of rows in the matrix

Returns:
Number of rows in matrix
size_t coldim ( ) const

Get the number of columns in the matrix

Returns:
Number of columns in matrix
void resize ( size_t  m,
size_t  n 
)

Resize the matrix to the given dimensions.

The state of the matrix's entries after a call to this method is undefined.

This interface is optional; a matrix can omit it if it makes no sense in the context.

Parameters:
mNumber of rows
nNumber of columns
std::istream& read ( std::istream &  file,
const Field F 
)

Read the matrix from an input stream

Parameters:
fileInput stream from which to read
FField over which to read
std::ostream& write ( std::ostream &  os,
const Field F 
) const

Write the matrix to an output stream

Parameters:
osOutput stream to which to write
FField over which to write
void setEntry ( size_t  i,
size_t  j,
const Element &  a_ij 
)

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
Element& refEntry ( size_t  i,
size_t  j 
)

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
const Element& getEntry ( size_t  i,
size_t  j 
) const

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

Parameters:
iRow index
jColumn index
Returns:
Const reference to matrix entry
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

Parameters:
xElement in which to store result
iRow index
jColumn index
Returns:
Reference to x
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.

This may be omitted by an implementation if no Row type is available

Parameters:
iRow index
Vector& columnDensity ( Vector &  v) const

Compute the column density, i.e. the number of entries per column

MatrixArchetype& transpose ( MatrixArchetype< _Element > &  M) const

Compute the transpose


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