linbox
Public Types | Public Member Functions | Protected Attributes
TriangularBlasMatrix< Element > Class Template Reference

Triangular BLAS matrix. More...

#include <blas-matrix.h>

+ Inheritance diagram for TriangularBlasMatrix< Element >:

Public Types

typedef Element Element
 Element type.
typedef RawVector< Element >::Dense Rep
 Actually a std::vector<Element> (or alike.)
typedef Rep::pointer pointer
 pointer type to elements
typedef const pointer const_pointer
 const pointer type
typedef BlasMatrix< ElementSelf_t
 Self type.

Public Member Functions

 TriangularBlasMatrix (const size_t m, const size_t n, LinBoxTag::Shape x=LinBoxTag::Upper, LinBoxTag::Diag y=LinBoxTag::NonUnit)
 Constructor for a new TriangularBlasMatrix.
 TriangularBlasMatrix (const BlasMatrix< Element > &A, LinBoxTag::Shape x=LinBoxTag::Upper, LinBoxTag::Diag y=LinBoxTag::NonUnit)
 Constructor from a BlasMatrix (copy).
 TriangularBlasMatrix (BlasMatrix< Element > &A, LinBoxTag::Shape x=LinBoxTag::Upper, LinBoxTag::Diag y=LinBoxTag::NonUnit)
 Constructor from a BlasMatrix (no copy).
 TriangularBlasMatrix (const TriangularBlasMatrix< Element > &A)
 Constructor from a TriangularBlasMatrix (copy).
template<class Matrix >
 TriangularBlasMatrix (const Matrix &A, LinBoxTag::Shape x=LinBoxTag::Upper, LinBoxTag::Diag y=LinBoxTag::NonUnit)
 Generic constructor from a Matrix (no copy).
LinBoxTag::Shape getUpLo () const
 get the shape of the matrix (upper or lower)
LinBoxTag::Diag getDiag () const
 Is the diagonal implicitly unit ?
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.
size_t & getWriteStride ()
 Get a reference to the stride of the matrix.
void resize (size_t m, size_t n, const Element &val=Element())
 Resize the matrix to the given dimensions.
pointer getPointer () const
  
pointergetWritePointer ()
  
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.
BlasMatrix< Elementtranspose (BlasMatrix< Element > &tM) const
 Creates a transposed matrix of *this.
void transpose ()
 Transpose (inplace).
void reverseRows ()
 Reverse the rows of a matrix.
void reverseCols ()
 Reverse the columns of a matrix.
void reverse ()
 Reverse the rows/columns of a matrix.
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.
Vector & columnDensity (Vector &v) const
 Compute column density.
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.

IndexedIterator IndexedBegin ()
ConstIndexedIterator IndexedBegin () const
IndexedIterator IndexedEnd ()
ConstIndexedIterator IndexedEnd () const
Row operator[] (size_t i)
 Retrieve a reference to a row.
ConstRow operator[] (size_t i) const
 Retrieve a reference to a row.

Protected Attributes

LinBoxTag::Shape _uplo
 upper or lower triangular
LinBoxTag::Diag _diag
 unit or non unit diagonal

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 ()
ConstRowIterator rowBegin () const
RowIterator rowEnd ()
ConstRowIterator rowEnd () const
typedef Subvector< typename
Rep::iterator, typename
Rep::const_iterator > 
Row
typedef Subvector< typename
Rep::const_iterator > 
ConstRow

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 ()
ConstColIterator colBegin () const
ColIterator colEnd ()
ConstColIterator colEnd () const
typedef Subvector< Subiterator
< typename Rep::iterator > > 
Col
typedef Subvector< Subiterator
< typename Rep::const_iterator > > 
ConstCol
typedef Col Column
typedef ConstCol ConstColumn

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.

Iterator Begin ()
ConstIterator Begin () const
Iterator End ()
ConstIterator End () const
typedef Rep::iterator Iterator
typedef Rep::const_iterator ConstIterator

Detailed Description

template<class Element>
class LinBox::TriangularBlasMatrix< Element >

Triangular BLAS matrix.


Constructor & Destructor Documentation

TriangularBlasMatrix ( const size_t  m,
const size_t  n,
LinBoxTag::Shape  x = LinBoxTag::Upper,
LinBoxTag::Diag  y = LinBoxTag::NonUnit 
) [inline]

Constructor for a new TriangularBlasMatrix.

Parameters:
mrows
ncols
y(non)unit diagonal
x(upp/low)er matrix
TriangularBlasMatrix ( const BlasMatrix< Element > &  A,
LinBoxTag::Shape  x = LinBoxTag::Upper,
LinBoxTag::Diag  y = LinBoxTag::NonUnit 
) [inline]

Constructor from a BlasMatrix (copy).

Parameters:
Amatrix
y(non)unit diagonal
x(upp/low)er matrix
TriangularBlasMatrix ( BlasMatrix< Element > &  A,
LinBoxTag::Shape  x = LinBoxTag::Upper,
LinBoxTag::Diag  y = LinBoxTag::NonUnit 
) [inline]

Constructor from a BlasMatrix (no copy).

Parameters:
Amatrix
y(non)unit diagonal
x(upp/low)er matrix

Constructor from a TriangularBlasMatrix (copy).

Parameters:
Amatrix
TriangularBlasMatrix ( const Matrix A,
LinBoxTag::Shape  x = LinBoxTag::Upper,
LinBoxTag::Diag  y = LinBoxTag::NonUnit 
) [inline]

Generic constructor from a Matrix (no copy).

Parameters:
Amatrix
y(non)unit diagonal
x(upp/low)er matrix

Member Function Documentation

size_t rowdim ( ) const [inherited]

Get the number of rows in the matrix.

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

Get the number of columns in the matrix.

Returns:
Number of columns in matrix
size_t& getWriteStride ( ) [inherited]

Get a reference to the stride of the matrix.

Modify stride this way.

void resize ( size_t  m,
size_t  n,
const Element val = Element() 
) [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
void setEntry ( size_t  i,
size_t  j,
const Element a_ij 
) [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 
) [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 [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 [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
BlasMatrix<Element> transpose ( BlasMatrix< Element > &  tM) const [inherited]

Creates a transposed matrix of *this.

Parameters:
[in]tM
Returns:
the transposed matrix of this.
void transpose ( ) [inherited]

Transpose (inplace).

If rows and columns agree, we can transpose inplace.

void reverseRows ( ) [inherited]

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

Reverse the columns of a matrix.

This is done inplace. This is A <- J.A

void reverse ( ) [inherited]

Reverse the rows/columns of a matrix.

This is done inplace. This is A <- J.A.J

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.

Todo:
factorise writing matrices code.
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 ?
Row operator[] ( size_t  i) [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 [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 [inherited]

Compute column density.

Parameters:
v

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