linbox
Public Types | Public Member Functions
DenseMatrix< _Field > Class Template Reference

Blackbox interface to dense matrix representation. More...

#include <dense.h>

Inheritance diagram for DenseMatrix< _Field >:

Public Types

typedef Field::Element Element
 Element type.
typedef DenseMatrix< _Field > Self_t
 Self type.
typedef RawVector< Element >::Dense Rep
 No doc.

Public Member Functions

 DenseMatrix (const Field &F, size_t m, size_t n)
 Constructor of a m by n matrix with initial entries which are the default constructor value of the field's element type.
template<class RandIter >
 DenseMatrix (const Field &F, size_t m, size_t n, const RandIter &iter)
 Constructor of a m by n matrix with entries created by a random iterator.
template<class StreamVector >
 DenseMatrix (const Field &F, VectorStream< StreamVector > &stream)
 Constructor using a finite vector stream (stream of the rows).
 DenseMatrix (MatrixStream< Field > &ms)
 Constructor from a MatrixStream.
 DenseMatrix (const Field &F, DenseMatrixBase< Element > &Mat)
 Constructor from a DenseMatrixBase.
 DenseMatrix (const DenseMatrix &Mat)
 Copies all matrix data.
DenseMatrix< Field > & operator= (const DenseMatrix< Field > &Mat)
 Assignment operator makes a complete copy.
size_t rowdim () const
 Get the number of rows in the matrix.
size_t coldim () const
 Get the number of columns in the matrix.
const Field & field () const
 Retrieve the field over which this matrix is defined.
ElementFullIterator () const
 Get a pointer on the storage of the elements.
void resize (size_t m, size_t n, const Element &val=Element())
 Resize the matrix to the given dimensions.
std::istream & read (std::istream &file, const Field &F)
 Read the matrix from an input stream.
std::ostream & write (std::ostream &os, const Field &F, bool mapleFormat=true) const
 Write the matrix to an output stream.
std::ostream & write (std::ostream &os, bool mapleFormat=true) const
 Write brutally the matrix to an output stream.
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.
Vector & columnDensity (Vector &v) const
 Compute column density.
std::istream & read (std::istream &is)
 Read the matrix from an input stream.
std::ostream & write (std::ostream &os=std::cout) const
 Write the matrix to an output stream.
template<class Vect1 , class Vect2 >
Vect1 & apply (Vect1 &y, const Vect2 &x) const
 Generic matrix-vector apply.
template<class Vect1 >
Vect1 & applyIn (Vect1 &y) const
 Generic in-place apply.
template<class Vect1 , class Vect2 >
Vect1 & applyTranspose (Vect1 &y, const Vect2 &x) const
 Generic matrix-vector transpose apply.
template<class Vect >
Vect & applyTransposeIn (Vect &y) const
 Generic in-place transpose apply.
 ~DenseMatrix ()
 destructor
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 ()
ConstRawIterator rawBegin () const
RawIterator rawEnd ()
ConstRawIterator rawEnd () 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.

RawIndexedIterator rawIndexedBegin ()
ConstRawIndexedIterator rawIndexedBegin () const
RawIndexedIterator rawIndexedEnd ()
ConstRawIndexedIterator rawIndexedEnd () const
Row operator[] (size_t i)
 Retrieve a reference to a row.
ConstRow operator[] (size_t i) const
 Retrieve a reference to a row.

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 ()
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

typedef Subvector< Subiterator
< typename Rep::iterator > > 
Col
typedef Subvector< Subiterator
< typename Rep::const_iterator > > 
ConstCol
typedef Col Column
typedef ConstCol ConstColumn
ColIterator colBegin ()
ConstColIterator colBegin () const
ColIterator colEnd ()
ConstColIterator colEnd () const

Detailed Description

template<class _Field>
class LinBox::DenseMatrix< _Field >

Blackbox interface to dense matrix representation.

This is a class of dense matrices templatized by the field in which the elements reside. The matrix is stored as a one dimensional STL vector of the elements, in row major order. The interface provides for iteration over rows and over columns.

The class conforms to the archetype for blackboxes and for the dense matrix container .

Currently, only dense vectors are supported when doing matrix-vector applies.

Parameters:
_Fielda LinBox field class
Examples:

examples/charpoly.C, and examples/smith.C.


Constructor & Destructor Documentation

DenseMatrix ( const Field &  F,
size_t  m,
size_t  n 
) [inline]

Constructor of a m by n matrix with initial entries which are the default constructor value of the field's element type.

Parameters:
Fthe field of entries; passed so that arithmetic may be done on elements.
mrow dimension
ncolumn dimension
DenseMatrix ( const Field &  F,
size_t  m,
size_t  n,
const RandIter &  iter 
) [inline]

Constructor of a m by n matrix with entries created by a random iterator.

Parameters:
Fthe field of entries; passed so that arithmetic may be done on elements.
mrow dimension
ncolumn dimension
iterrandom iterator
DenseMatrix ( const Field &  F,
VectorStream< StreamVector > &  stream 
) [inline]

Constructor using a finite vector stream (stream of the rows).

Parameters:
FThe field of entries; passed so that arithmetic may be done on elements.
streamA vector stream to use as a source of vectors for this matrix
DenseMatrix ( MatrixStream< Field > &  ms) [inline]

Constructor from a MatrixStream.

Parameters:
msA matrix stream properly initialized
DenseMatrix ( const Field &  F,
DenseMatrixBase< Element > &  Mat 
) [inline]

Constructor from a DenseMatrixBase.

Copies all matrix data.

Parameters:
FField over which this matrix' arithmetic will be.
MThis will contain a complete copy of DenseMatrixBase M.

Member Function Documentation

size_t rowdim ( ) const [inline]

Get the number of rows in the matrix.

Returns:
Number of rows in matrix

Reimplemented from DenseMatrixBase< _Field::Element >.

size_t coldim ( ) const [inline]

Get the number of columns in the matrix.

Returns:
Number of columns in matrix

Reimplemented from DenseMatrixBase< _Field::Element >.

const Field& field ( ) const [inline]

Retrieve the field over which this matrix is defined.

Returns:
Reference to the underlying field
std::istream& read ( std::istream &  is) [inline]

Read the matrix from an input stream.

Parameters:
isInput stream from which to read
std::ostream& write ( std::ostream &  os = std::cout) const [inline]

Write the matrix to an output stream.

Parameters:
osOutput stream to which to write
Vect1 & apply ( Vect1 &  y,
const Vect2 &  x 
) const

Generic matrix-vector apply.

$y = A \cdot x$ This version of apply allows use of arbitrary input and output vector types.

Parameters:
[out]yOutput vector
[in]xInput vector
Returns:
Reference to output vector
Vect1& applyIn ( Vect1 &  y) const [inline]

Generic in-place apply.

$y = A \cdot y$. This version of in-place apply allows use of an arbitrary vector type. Because it performs allocation and copying, it is not recommended for general use.

Parameters:
yInput vector
Returns:
Reference to output vector
Vect1 & applyTranspose ( Vect1 &  y,
const Vect2 &  x 
) const

Generic matrix-vector transpose apply.

$y = A^T \cdot x$. This version of applyTranspose allows use of arbitrary input and output vector types

Parameters:
yOutput vector
xInput vector
Returns:
Reference to output vector
Vect& applyTransposeIn ( Vect &  y) const [inline]

Generic in-place transpose apply.

$y = A^T \cdot y$. This version of in-place transpose apply allows use of an arbitrary vector type. Because it performs allocation and copying, it is not recommended for general use.

Parameters:
yInput vector
Returns:
Reference to output vector
Element* FullIterator ( ) const [inline, inherited]

Get a pointer on the storage of the elements.

Returns:
a pointer on Elements /todo What is this?
void resize ( size_t  m,
size_t  n,
const Element val = Element() 
) [inline, inherited]

Resize the matrix to the given dimensions.

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

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

Read the matrix from an input stream.

The stream is in SMS or DENSE format

Parameters:
fileInput stream from which to read
FField over which to read
std::ostream& write ( std::ostream &  os,
const Field F,
bool  mapleFormat = true 
) const [inherited]

Write the matrix to an output stream.

Parameters:
osOutput stream to which to write
FField over which to write
mapleFormatwrite in Maple format ?
std::ostream& write ( std::ostream &  os,
bool  mapleFormat = true 
) const [inherited]

Write brutally the matrix to an output stream.

This a raw version of write(os,F) (no field is given).

Parameters:
osOutput stream to which to write
mapleFormatwrite in maple format ?
void setEntry ( size_t  i,
size_t  j,
const Element a_ij 
) [inline, inherited]

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 
) [inline, inherited]

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 [inline, inherited]

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 [inline, inherited]

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) [inline, inherited]

Retrieve a reference to a row.

Since rows may also be indexed, this allows A[i][j] notation to be used.

Parameters:
iRow index
ConstRow operator[] ( size_t  i) const [inline, inherited]

Retrieve a reference to a row.

Since rows may also be indexed, this allows A[i][j] notation to be used.

Parameters:
iRow index
Vector& columnDensity ( Vector &  v) const [inline, inherited]

Compute column density.

Parameters:
v

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