linbox
Data Structures | Public Types | Public Member Functions
BlasMatrix< _Field > Class Template Reference

Dense matrix representation. More...

#include <blas-matrix.h>

+ Inheritance diagram for BlasMatrix< _Field >:

Data Structures

class  IndexedIterator
 Indexed Iterator. More...
 
struct  rebind
 Rebind operator. More...
 

Public Types

typedef Field::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< _Field > Self_t
 Self type.
 

Public Member Functions

 BlasMatrix (const _Field &F)
 Allocates a new $ 0 \times 0$ matrix.
 
 BlasMatrix ()
 Allocates a new $ 0 \times 0$ matrix.
 
 BlasMatrix (MatrixStream< _Field > &ms)
 Constructor from a matrix stream. More...
 
template<class Matrix >
 BlasMatrix (const Matrix &A)
 Generic copy constructor from either a blackbox or a matrix container. More...
 
template<class Matrix >
 BlasMatrix (const Matrix &A, const size_t i0, const size_t j0, const size_t m, const size_t n)
 Generic copy constructor from either a blackbox or a matrix container (allow submatrix). More...
 
template<class _Matrix >
 BlasMatrix (const _Matrix &A, const _Field &F)
 Constructor. More...
 
 BlasMatrix (const BlasMatrix< _Field > &A)
 Copy Constructor of a matrix (copying data). More...
 
 BlasMatrix (const _Field &F, const std::vector< Element > &v, size_t m, size_t n)
 Create a BlasMatrix from a vector of elements. More...
 
 BlasMatrix (const _Field &F, const Element *v, size_t m, size_t n)
 Create a BlasMatrix from an array of elements. More...
 
template<class StreamVector >
 BlasMatrix (const Field &F, VectorStream< StreamVector > &stream)
 Constructor using a finite vector stream (stream of the rows). More...
 
 ~BlasMatrix ()
 Destructor.
 
BlasMatrix< _Field > & operator= (const BlasMatrix< _Field > &A)
 operator = (copying data)
 
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.
 
size_t & getWriteStride ()
 Get a reference to the stride of the matrix. More...
 
void resize (size_t m, size_t n, const Element &val=Element())
 Resize the matrix to the given dimensions. More...
 
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. More...
 
ElementrefEntry (size_t i, size_t j)
 Get a writeable reference to the entry in the (i, j) position. More...
 
const ElementgetEntry (size_t i, size_t j) const
 Get a read-only reference to the entry in the (i, j) position. More...
 
ElementgetEntry (Element &x, size_t i, size_t j) const
 Copy the (i, j) entry into x, and return a reference to x. More...
 
BlasMatrix< _Field > transpose (BlasMatrix< _Field > &tM) const
 Creates a transposed matrix of *this. More...
 
template<bool _IP>
void transpose ()
 Transpose (inplace). More...
 
void reverseRows ()
 Reverse the rows of a matrix. More...
 
void reverseCols ()
 Reverse the columns of a matrix. More...
 
void reverse ()
 Reverse the rows/columns of a matrix. More...
 
std::istream & read (std::istream &file)
 Read the matrix from an input stream. More...
 
std::ostream & write (std::ostream &os, enum LinBoxTag::Format f=LinBoxTag::FormatMaple) const
 Write the matrix to an output stream. More...
 
std::ostream & write (std::ostream &os, bool mapleFormat) const
 
template<class Vector >
VectorcolumnDensity (Vector &v) const
 Compute column density. More...
 
template<class Vector1 , class Vector2 >
Vector1 & apply (Vector1 &y, const Vector2 &x) const
 
template<class T >
 BlasMatrix (const _Field &F, const uint64_t &m, const T &n)
 Allocates a new $ m \times n$ matrix. More...
 
template<class T >
 BlasMatrix (const _Field &F, const int64_t &m, const T &n)
 Allocates a new $ m \times n$ matrix. More...
 
template<class T >
 BlasMatrix (const _Field &F, const uint32_t &m, const T &n)
 Allocates a new $ m \times n$ matrix. More...
 
template<class T >
 BlasMatrix (const _Field &F, const int32_t &m, const T &n)
 Allocates a new $ m \times n$ matrix. More...
 
template<class T >
 BlasMatrix (const _Field &F, const Integer &m, const T &n)
 
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 ()
 
IndexedIterator IndexedEnd ()
 
ConstIndexedIterator IndexedBegin () const
 
ConstIndexedIterator IndexedEnd () const
 
Row operator[] (size_t i)
 Retrieve a reference to a row. More...
 
ConstRow operator[] (size_t i) const
 Retrieve a reference to a row. More...
 

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

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

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.

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

Detailed Description

template<class _Field>
class LinBox::BlasMatrix< _Field >

Dense matrix representation.

A BlasMatrix is a matrix of _Field::Element, with the structure of BLAS matrices. It is basically a vector of _Field::Element. In the Mother model, a BlasMatrix is allocated by the user.

Examples:
examples/charpoly.C, examples/det.C, examples/doubledet.C, and examples/smith.C.

Constructor & Destructor Documentation

BlasMatrix ( const _Field &  F,
const uint64_t &  m,
const T &  n 
)

Allocates a new $ m \times n$ matrix.

Parameters
F
mrows
ncols
Todo:
BlasMatrix ( const _Field &  F,
const int64_t &  m,
const T &  n 
)

Allocates a new $ m \times n$ matrix.

Parameters
F
mrows
ncols
Todo:
BlasMatrix ( const _Field &  F,
const uint32_t &  m,
const T &  n 
)

Allocates a new $ m \times n$ matrix.

Parameters
F
mrows
ncols
Todo:
BlasMatrix ( const _Field &  F,
const int32_t &  m,
const T &  n 
)

Allocates a new $ m \times n$ matrix.

Parameters
F
mrows
ncols
Todo:
BlasMatrix ( const _Field &  F,
const Integer &  m,
const T &  n 
)
Todo:
check m,n not too big ?
BlasMatrix ( MatrixStream< _Field > &  ms)

Constructor from a matrix stream.

Parameters
msmatrix stream.
BlasMatrix ( const Matrix &  A)

Generic copy constructor from either a blackbox or a matrix container.

Parameters
Amatrix to be copied
BlasMatrix ( const Matrix &  A,
const size_t  i0,
const size_t  j0,
const size_t  m,
const size_t  n 
)

Generic copy constructor from either a blackbox or a matrix container (allow submatrix).

Parameters
Amatrix to be copied
i0
j0
mrows
ncolumns
BlasMatrix ( const _Matrix &  A,
const _Field &  F 
)

Constructor.

Parameters
Amatrix to be copied
FField
BlasMatrix ( const BlasMatrix< _Field > &  A)

Copy Constructor of a matrix (copying data).

Parameters
Amatrix to be copied.
BlasMatrix ( const _Field &  F,
const std::vector< Element > &  v,
size_t  m,
size_t  n 
)

Create a BlasMatrix from a vector of elements.

Parameters
F
v
m
n
BlasMatrix ( const _Field &  F,
const Element v,
size_t  m,
size_t  n 
)

Create a BlasMatrix from an array of elements.

Parameters
F
v
m
n
BlasMatrix ( const Field &  F,
VectorStream< StreamVector > &  stream 
)

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

Member Function Documentation

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
size_t & getWriteStride ( )

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

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 
)

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
_Field::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 _Field::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
_Field::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
BlasMatrix< _Field > transpose ( BlasMatrix< _Field > &  tM) const

Creates a transposed matrix of *this.

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

Transpose (inplace).

If rows and columns agree, we can transpose inplace.

void reverseRows ( )

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

Reverse the columns of a matrix.

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

void reverse ( )

Reverse the rows/columns of a matrix.

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

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

Read the matrix from an input stream.

The stream is in SMS or DENSE format and is autodetected.

Parameters
fileInput stream from which to read
std::ostream & write ( std::ostream &  os,
enum LinBoxTag::Format  f = LinBoxTag::FormatMaple 
) const

Write the matrix to an output stream.

Parameters
osOutput stream to which to write
fwrite in some format (LinBoxTag::Format). Default is Maple's.
Warning
matrix base does not provide this field(), maybe should? _Mat.field ().write (os, *pe); os << *pe; fixed by using extra field
std::ostream& write ( std::ostream &  os,
bool  mapleFormat 
) const
inline
Deprecated:
Only for compatiblity.
BlasMatrix< _Field >::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.

Parameters
iRow index
BlasMatrix< _Field >::ConstRow operator[] ( size_t  i) const

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

Compute column density.

Parameters
v
Vector1 & apply ( Vector1 &  y,
const Vector2 &  x 
) const
Bug:
this supposes &x[0]++ == &x[1]

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