Represents a matrix of elements from a given ring T. More...
#include <nmatrix.h>
Public Member Functions | |
NMatrixRing (unsigned long rows, unsigned long cols) | |
Creates a new matrix of the given size. | |
NMatrixRing (const NMatrix< T > &cloneMe) | |
Creates a new matrix that is a clone of the given matrix. | |
void | makeIdentity () |
Turns this matrix into an identity matrix. | |
bool | isIdentity () const |
Determines whether this matrix is a square identity matrix. | |
void | addRow (unsigned long source, unsigned long dest) |
Adds the given source row to the given destination row. | |
void | addRow (unsigned long source, unsigned long dest, T copies) |
Adds the given number of copies of the given source row to the given destination row. | |
void | addCol (unsigned long source, unsigned long dest) |
Adds the given source column to the given destination column. | |
void | addCol (unsigned long source, unsigned long dest, T copies) |
Adds the given number of copies of the given source column to the given destination column. | |
void | multRow (unsigned long row, T factor) |
Multiplies the given row by the given factor. | |
void | multCol (unsigned long column, T factor) |
Multiplies the given column by the given factor. | |
std::auto_ptr< NMatrixRing< T > > | operator* (const NMatrixRing< T > &other) const |
Multiplies this by the given matrix, and returns the result. | |
template<class MatrixClass > | |
std::auto_ptr< MatrixClass > | multiplyAs (const NMatrixRing< T > &other) const |
Multiplies this by the given matrix, and returns a new matrix of subclass MatrixClass. | |
T | det () const |
Evaluates the determinant of the matrix. | |
Static Public Attributes | |
static T | zero |
Zero in the underlying ring. | |
static T | one |
One (the multiplicative identity) in the underlying ring. |
Represents a matrix of elements from a given ring T.
=
) operator. out << t
. +
, -
and *
and unary operators +=
, -=
and *=
. a
is of type T, then a
can be initialised to a long integer l
using a(l)
. Here the value 1 refers to the multiplicative identity in the ring T.regina::NMatrixRing< T >::NMatrixRing | ( | unsigned long | rows, |
unsigned long | cols | ||
) | [inline] |
Creates a new matrix of the given size.
All entries will be initialised using their default constructors.
rows | the number of rows in the new matrix. |
cols | the number of columns in the new matrix. |
regina::NMatrixRing< T >::NMatrixRing | ( | const NMatrix< T > & | cloneMe ) | [inline] |
Creates a new matrix that is a clone of the given matrix.
cloneMe | the matrix to clone. |
void regina::NMatrixRing< T >::addCol | ( | unsigned long | source, |
unsigned long | dest | ||
) | [inline] |
Adds the given source column to the given destination column.
source | the columns to add. |
dest | the column that will be added to. |
void regina::NMatrixRing< T >::addCol | ( | unsigned long | source, |
unsigned long | dest, | ||
T | copies | ||
) | [inline] |
Adds the given number of copies of the given source column to the given destination column.
Note that copies is passed by value in case it is an element of the row to be changed.
source | the columns to add. |
dest | the column that will be added to. |
copies | the number of copies of source to add to dest. |
void regina::NMatrixRing< T >::addRow | ( | unsigned long | source, |
unsigned long | dest | ||
) | [inline] |
Adds the given source row to the given destination row.
source | the row to add. |
dest | the row that will be added to. |
void regina::NMatrixRing< T >::addRow | ( | unsigned long | source, |
unsigned long | dest, | ||
T | copies | ||
) | [inline] |
Adds the given number of copies of the given source row to the given destination row.
Note that copies is passed by value in case it is an element of the row to be changed.
source | the row to add. |
dest | the row that will be added to. |
copies | the number of copies of source to add to dest. |
T regina::NMatrixRing< T >::det | ( | ) | const [inline] |
Evaluates the determinant of the matrix.
This algorithm has quartic complexity, and uses the dynamic programming approach of Mahajan and Vinay. For further details, see Meena Mahajan and V. Vinay, "Determinant: Combinatorics, algorithms, and complexity", Chicago J. Theor. Comput. Sci., Vol. 1997, Article 5.
bool regina::NMatrixRing< T >::isIdentity | ( | ) | const [inline] |
Determines whether this matrix is a square identity matrix.
If this matrix is square, isIdentity() will return true
if and only if the matrix has ones in the main diagonal and zeroes everywhere else.
If this matrix is not square, isIdentity() will always return false
(even if makeIdentity() was called earlier).
true
if and only if this is a square identity matrix. void regina::NMatrixRing< T >::makeIdentity | ( | ) | [inline] |
Turns this matrix into an identity matrix.
This matrix need not be square; after this routine it will have entry(r,c)
equal to one
if r == c
and zero
otherwise.
void regina::NMatrixRing< T >::multCol | ( | unsigned long | column, |
T | factor | ||
) | [inline] |
Multiplies the given column by the given factor.
Note that factor is passed by value in case it is an element of the row to be changed.
column | the column to work with. |
factor | the factor by which to multiply the given column. |
std::auto_ptr<MatrixClass> regina::NMatrixRing< T >::multiplyAs | ( | const NMatrixRing< T > & | other ) | const [inline] |
Multiplies this by the given matrix, and returns a new matrix of subclass MatrixClass.
This matrix is not changed.
other | the matrix by which to multiply this matrix. |
this * other
. void regina::NMatrixRing< T >::multRow | ( | unsigned long | row, |
T | factor | ||
) | [inline] |
Multiplies the given row by the given factor.
Note that factor is passed by value in case it is an element of the row to be changed.
row | the row to work with. |
factor | the factor by which to multiply the given row. |
std::auto_ptr<NMatrixRing<T> > regina::NMatrixRing< T >::operator* | ( | const NMatrixRing< T > & | other ) | const [inline] |
Multiplies this by the given matrix, and returns the result.
This matrix is not changed.
other | the matrix by which to multiply this matrix. |
this * other
.