linbox
Data Structures | Public Types | Public Member Functions | Protected Attributes
BlasSubmatrix< _Matrix > Class Template Reference

Dense Submatrix representation. More...

#include <blas-matrix.h>

Data Structures

class  ConstIndexedIterator
 Raw Indexed Iterator (const version). More...
 
class  ConstIterator
 Raw Iterators (const version). More...
 
class  IndexedIterator
 Raw Indexed Iterator. More...
 
class  Iterator
 Raw Iterators. More...
 

Public Types

typedef Field::Element Element
 Element type.
 
typedef BlasSubmatrix< _Matrix > Self_t
 Self type.
 
typedef const BlasSubmatrix< typename _Matrix::constSelf_t > constSelf_t
 Self type (const)
 
typedef Rep::pointer pointer
 pointer type to elements
 
typedef const pointer const_pointer
 const pointer type
 
typedef Self_t subMatrixType
 Submatrix type.
 
typedef constSelf_t constSubMatrixType
 Submatrix type (const)
 
typedef _Matrix::Self_t matrixType
 non const matrix type
 
typedef _Matrix::constSelf_t constMatrixType
 matrix type (const)
 
typedef matrixType blasType
 blas matrix type
 
typedef BlasVector< Field, Rep > vectorType
 blas matrix type
 
typedef'd Row Iterators.

The row iterator gives the rows of the matrix in ascending order.

Dereferencing the iterator yields a row vector in dense format

typedef matrixType::RowIterator RowIterator
 
typedef matrixType::ConstRowIterator ConstRowIterator
 
typedef matrixType::Row Row
 
typedef matrixType::ConstRow ConstRow
 
typedef'd Column Iterators.

The columns iterator gives the columns of the matrix in ascending order.

Dereferencing the iterator yields a column vector in dense format

typedef matrixType::ColIterator ColIterator
 
typedef matrixType::ConstColIterator ConstColIterator
 
typedef matrixType::Col Col
 
typedef matrixType::Column Column
 
typedef matrixType::ConstCol ConstCol
 

Public Member Functions

 BlasSubmatrix (constMatrixType &M, size_t rowbeg, size_t colbeg, size_t Rowdim, size_t Coldim)
 NULL constructor. More...
 
 BlasSubmatrix (constMatrixType &M)
 Constructor from an existing BlasMatrix. More...
 
 BlasSubmatrix (constSelf_t &SM, size_t rowbeg, size_t colbeg, size_t Rowdim, size_t Coldim)
 Constructor from an existing submatrix and dimensions. More...
 
 BlasSubmatrix (constSelf_t &SM)
 Copy constructor. More...
 
BlasSubmatrixoperator= (const BlasSubmatrix< _Matrix > &SM)
 Assignment operator. More...
 
template<class Matrix >
BlasSubmatrixcopy (const Matrix &B)
 This is deep copy of the data, operator= is a shallow copy.
 
BlasSubmatrixswap (Self_t &B)
 Swap contents. Shapes must be the same.
 
BlasSubmatrixzero ()
 Overwrite with zeroes.
 
void random ()
 Overwrite with random elements.
 
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. More...
 
std::istream & read (std::istream &file)
 Read the matrix from an input stream. More...
 
std::ostream & write (std::ostream &os, Tag::FileFormat f=Tag::FileFormat::MatrixMarket) const
 Write the matrix to an output stream. More...
 
pointer getPointer ()
  .
 
pointer getWritePointer ()
  .
 
const ElementsetEntry (size_t i, size_t j, const Element &a_ij)
 Set the entry at (i, j). More...
 
ElementrefEntry (size_t i, size_t j)
 Get a writeable reference to an entry in the matrix. More...
 
const ElementgetEntry (size_t i, size_t j) const
 Get a read-only individual entry from the matrix. More...
 
ElementgetEntry (Element &x, size_t i, size_t j) const
 Get an entry and store it in the given value. More...
 
RowIterator rowBegin ()
 iterator to the begining of a row
 
RowIterator rowEnd ()
 iterator to the end of a row
 
ConstRowIterator rowBegin () const
 const iterator to the begining of a row
 
ConstRowIterator rowEnd () const
 const iterator to the end of a row
 
Row operator[] (size_t i)
 operator[]. More...
 
template<class Vector1 , class Vector2 >
Vector1 & apply (Vector1 &y, const Vector2 &x) const
 
template<class Vector1 , class Vector2 >
Vector1 & applyTranspose (Vector1 &y, const Vector2 &x) const
 

Protected Attributes

_Matrix & _Mat
 Parent BlasMatrix (ie encapsulated raw std::vector)
 
size_t _row
 row dimension of Submatrix
 
size_t _col
 col dimension of Submatrix
 
size_t _r0
 upper left corner row of Submatrix in _Mat
 
size_t _c0
 upper left corner row of Submatrix in _Mat
 
size_t _stride
 number of columns in _Mat (or stride of _Mat)
 
size_t _off
 offset in _Mat, precomputed (_row*_stride+_col)
 

Detailed Description

template<class _Matrix>
class LinBox::BlasSubmatrix< _Matrix >

Dense Submatrix representation.

A BlasSubmatrix is a matrix of _Field::Element, with the structure of BLAS matrices. It is basically a read/write view on a vector of _Field::Element. In the Mother model, a BlasSubmatrix is not allocated.

This matrix type conforms to the same interface as BlasMatrix, except that you cannot resize it. It represents a submatrix of a dense matrix. Upon construction, one can freely manipulate the entries in the DenseSubmatrix, and the corresponding entries in the underlying BlasMatrix will be modified.

Constructor & Destructor Documentation

◆ BlasSubmatrix() [1/4]

BlasSubmatrix ( constMatrixType M,
size_t  rowbeg,
size_t  colbeg,
size_t  Rowdim,
size_t  Coldim 
)

NULL constructor.

Bug:
NOT HERE

Constructor from an existing BlasMatrix and dimensions.

Parameters
MPointer to BlasMatrix of which to construct submatrix
rowbegStarting row
colbegStarting column
RowdimRow dimension
ColdimColumn dimension

◆ BlasSubmatrix() [2/4]

Constructor from an existing BlasMatrix.

Parameters
MPointer to BlasMatrix of which to construct submatrix

◆ BlasSubmatrix() [3/4]

BlasSubmatrix ( constSelf_t SM,
size_t  rowbeg,
size_t  colbeg,
size_t  Rowdim,
size_t  Coldim 
)

Constructor from an existing submatrix and dimensions.

Todo:
BlasSub from (sub)Vector
Parameters
SMConstant reference to BlasSubmatrix from which to construct submatrix
rowbegStarting row
colbegStarting column
RowdimRow dimension
ColdimColumn dimension

◆ BlasSubmatrix() [4/4]

Copy constructor.

Parameters
SMSubmatrix to copy

Member Function Documentation

◆ operator=()

BlasSubmatrix< _Matrix > & operator= ( const BlasSubmatrix< _Matrix > &  SM)

Assignment operator.

Assign the given submatrix to this one This is only renaming ! There is no copy because BlasSubmatrix owns nothing.

Parameters
SMSubmatrix to assign
Returns
Reference to this submatrix

◆ rowdim()

size_t rowdim ( ) const

Get the number of rows in the matrix.

Returns
Number of rows in matrix

◆ coldim()

size_t coldim ( ) const

Get the number of columns in the matrix.

Returns
Number of columns in matrix

◆ getStride()

size_t getStride ( ) const

 Get the stride of the matrix.

Returns
stride of submatrix (number of cols of dense base matrix)

◆ read()

std::istream & read ( std::istream &  file)

Read the matrix from an input stream.

Parameters
fileInput stream from which to read
Bug:
reading a submatrix should not be allowed !!

◆ write()

std::ostream & write ( std::ostream &  os,
Tag::FileFormat  f = Tag::FileFormat::MatrixMarket 
) const

Write the matrix to an output stream.

Parameters
osOutput stream to which to write
fwrite in some format (Tag::FileFormat::Format). Default is MM's.
Warning
matrix base does not provide this field(), maybe should? _Mat.field ().write (os, *pe); os << *pe; fixed by using extra field

◆ setEntry()

const LinBox::BlasSubmatrix< _Matrix >::Element & setEntry ( size_t  i,
size_t  j,
const Element a_ij 
)

Set the entry at (i, j).

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

◆ refEntry()

LinBox::BlasSubmatrix< _Matrix >::Element & refEntry ( size_t  i,
size_t  j 
)

Get a writeable reference to an entry in the matrix.

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

◆ getEntry() [1/2]

const LinBox::BlasSubmatrix< _Matrix >::Element & getEntry ( size_t  i,
size_t  j 
) const

Get a read-only individual entry from the matrix.

Parameters
iRow index
jColumn index
Returns
Const reference to matrix entry

◆ getEntry() [2/2]

LinBox::BlasSubmatrix< _Matrix >::Element & getEntry ( Element x,
size_t  i,
size_t  j 
) const

Get an entry and store it in the given value.

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

◆ operator[]()

BlasSubmatrix< _Matrix >::Row operator[] ( size_t  i)

operator[].

Retrieve a reference to a row

Parameters
iRow index

◆ apply()

Vector1& apply ( Vector1 &  y,
const Vector2 &  x 
) const
inline
Bug:
every vector we use here should have a stride/be blas vectors so it's not really templated by Vector1 Vector2 in general

◆ applyTranspose()

Vector1& applyTranspose ( Vector1 &  y,
const Vector2 &  x 
) const
inline
Bug:
use Matrix domain

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