|
OPALX (Object Oriented Parallel Accelerator Library for Exascal) MINIorX
OPALX
|
#include <MMatrix.h>
Public Member Functions | |
| MMatrix () | |
| default constructor makes an empty MMatrix of size (0,0) | |
| MMatrix (const MMatrix< Tmplt > &mv) | |
| Copy constructor makes a deep copy of mv. | |
| MMatrix (size_t nrows, size_t ncols, Tmplt *data_beginning) | |
| Construct a matrix and fill with data from memory data_beginning. | |
| MMatrix (size_t nrows, size_t ncols, Tmplt value) | |
| Construct a matrix and fill with identical data. | |
| MMatrix (size_t nrows, size_t ncols) | |
| Construct a matrix and fill all fields with 0. | |
| ~MMatrix () | |
| destructor | |
| size_t | num_row () const |
| returns number of rows in the matrix | |
| size_t | num_col () const |
| returns number of columns in the matrix | |
| Tmplt | trace () const |
| returns sum of terms with row == column, even if matrix is not square | |
| Tmplt | determinant () const |
| returns matrix determinant; throws an exception if matrix is not square | |
| MMatrix< Tmplt > | inverse () const |
| returns matrix inverse leaving this matrix unchanged | |
| void | invert () |
| turns this matrix into its inverse | |
| MMatrix< Tmplt > | T () const |
| returns matrix transpose T (such that M(i,j) = T(j,i)) | |
| MVector< m_complex > | eigenvalues () const |
| returns a vector of eigenvalues. Throws an exception if either this matrix is not square or the eigenvalues could not be found (e.g. singular matrix or whatever). | |
| std::pair< MVector< m_complex >, MMatrix< m_complex > > | eigenvectors () const |
| MMatrix< Tmplt > | sub (size_t min_row, size_t max_row, size_t min_col, size_t max_col) const |
| MVector< Tmplt > | get_mvector (size_t column) const |
| const Tmplt & | operator() (size_t row, size_t column) const |
| Tmplt & | operator() (size_t row, size_t column) |
| MMatrix< Tmplt > & | operator= (const MMatrix< Tmplt > &mm) |
| MMatrix< double > & | operator= (const MMatrix< double > &mm) |
| MMatrix< m_complex > & | operator= (const MMatrix< m_complex > &mm) |
| MMatrix (const MMatrix< double > &mm) | |
| MMatrix (const MMatrix< m_complex > &mm) | |
| m_complex | determinant () const |
| double | determinant () const |
| void | invert () |
| void | invert () |
| MMatrix< double > | T () const |
| MMatrix< m_complex > | T () const |
| size_t | num_row () const |
| size_t | num_row () const |
| size_t | num_col () const |
| size_t | num_col () const |
| const double & | operator() (size_t i, size_t j) const |
| const m_complex & | operator() (size_t i, size_t j) const |
| double & | operator() (size_t i, size_t j) |
| m_complex & | operator() (size_t i, size_t j) |
Static Public Member Functions | |
| static MMatrix< Tmplt > | Diagonal (size_t i, Tmplt diag_value, Tmplt off_diag_value) |
| Construct a square matrix filling on and off diagonal values. | |
Private Member Functions | |
| void | build_matrix (size_t i, size_t j) |
| void | build_matrix (size_t i, size_t j, Tmplt *temp) |
| void | delete_matrix () |
| void | delete_matrix () |
| void | delete_matrix () |
| void | build_matrix (size_t i, size_t j) |
| void | build_matrix (size_t i, size_t j) |
| void | build_matrix (size_t i, size_t j, double *data) |
| void | build_matrix (size_t i, size_t j, m_complex *data) |
Static Private Member Functions | |
| static gsl_matrix * | get_matrix (const MMatrix< double > &m) |
| static gsl_matrix_complex * | get_matrix (const MMatrix< m_complex > &m) |
Private Attributes | |
| void * | _matrix |
Friends | |
| class | MMatrix< double > |
| MMatrix< m_complex > & | operator*= (MMatrix< m_complex > &m, m_complex c) |
| MMatrix< double > & | operator*= (MMatrix< double > &m, double d) |
| MMatrix< m_complex > & | operator*= (MMatrix< m_complex > &m1, MMatrix< m_complex > m2) |
| MMatrix< double > & | operator*= (MMatrix< double > &m1, MMatrix< double > m2) |
| MVector< m_complex > | operator* (MMatrix< m_complex > m, MVector< m_complex > v) |
| MVector< double > | operator* (MMatrix< double > m, MVector< double > v) |
| MMatrix< m_complex > & | operator+= (MMatrix< m_complex > &m1, const MMatrix< m_complex > &m2) |
| MMatrix< double > & | operator+= (MMatrix< double > &m1, const MMatrix< double > &m2) |
| template<class Tmplt2> | |
| MMatrix< Tmplt2 > | operator+ (MMatrix< Tmplt2 > m1, const MMatrix< Tmplt2 > m2) |
C++ wrapper for GSL matrix MMatrix class handles matrix algebra, maths operators and some higher level calculation like matrix inversion, eigenvector analysis etc
Use template to define two types:
(i) MMatrix<double> is a matrix of doubles
(ii) MMatrix<m_complex> is a matrix of m_complex
Maths operators and a few others are defined, but maths operators don't allow operations between types - i.e. you can't multiply a complex matrix by a double matrix. Instead use interface methods like real() and complex() to convert between types first
| template interpolation::MMatrix< Tmplt >::MMatrix | ( | ) |
default constructor makes an empty MMatrix of size (0,0)
Definition at line 41 of file MMatrix.cpp.
References _matrix.
Referenced by determinant(), Diagonal(), eigenvalues(), eigenvectors(), get_matrix(), get_matrix(), inverse(), MMatrix(), MMatrix< double >, operator*, operator*, operator*=, operator*=, operator*=, operator*=, operator+=, operator+=, operator=(), sub(), and T().
| interpolation::MMatrix< Tmplt >::MMatrix | ( | const MMatrix< Tmplt > & | mv | ) |
Copy constructor makes a deep copy of mv.
References MMatrix().
| interpolation::MMatrix< Tmplt >::MMatrix | ( | size_t | nrows, |
| size_t | ncols, | ||
| Tmplt * | data_beginning ) |
Construct a matrix and fill with data from memory data_beginning.
| nrows | number of rows |
| ncols | number of columns |
| data_beginning | pointer to the start of a memory block of size nrows*ncols with data laid out <row> <row> <row>. Note MMatrix does not take ownership of memory in data_beginning. |
Definition at line 120 of file MMatrix.cpp.
References _matrix, and build_matrix().
| interpolation::MMatrix< Tmplt >::MMatrix | ( | size_t | nrows, |
| size_t | ncols, | ||
| Tmplt | value ) |
Construct a matrix and fill with identical data.
| nrows | number of rows |
| ncols | number of columns |
| value | variable to be copied into all items in the matrix |
Definition at line 126 of file MMatrix.cpp.
References build_matrix().
| interpolation::MMatrix< Tmplt >::MMatrix | ( | size_t | nrows, |
| size_t | ncols ) |
Construct a matrix and fill all fields with 0.
| nrows | number of rows |
| ncols | number of columns |
Definition at line 135 of file MMatrix.cpp.
References build_matrix().
| template interpolation::MMatrix< Tmplt >::~MMatrix | ( | ) |
destructor
Definition at line 155 of file MMatrix.cpp.
References delete_matrix().
| interpolation::MMatrix< double >::MMatrix | ( | const MMatrix< double > & | mm | ) |
Definition at line 100 of file MMatrix.cpp.
| interpolation::MMatrix< m_complex >::MMatrix | ( | const MMatrix< m_complex > & | mm | ) |
Definition at line 110 of file MMatrix.cpp.
|
private |
Definition at line 169 of file MMatrix.cpp.
|
private |
Definition at line 163 of file MMatrix.cpp.
|
private |
|
private |
Definition at line 175 of file MMatrix.cpp.
|
private |
Definition at line 184 of file MMatrix.cpp.
|
private |
|
private |
Definition at line 70 of file MMatrix.cpp.
|
private |
Definition at line 63 of file MMatrix.cpp.
|
private |
| double interpolation::MMatrix< double >::determinant | ( | ) | const |
Definition at line 209 of file MMatrix.cpp.
| m_complex interpolation::MMatrix< m_complex >::determinant | ( | ) | const |
Definition at line 196 of file MMatrix.cpp.
| Tmplt interpolation::MMatrix< Tmplt >::determinant | ( | ) | const |
returns matrix determinant; throws an exception if matrix is not square
References MMatrix().
|
static |
Construct a square matrix filling on and off diagonal values.
| i | number of rows and number of columns |
| diag_value | fill values with row == column (i.e. on the diagonal) with this value |
| off_diag_value | fill values with row != column (i.e. off the diagonal) with this value |
Definition at line 141 of file MMatrix.cpp.
References MMatrix().
| template MVector< m_complex > interpolation::MMatrix< Tmplt >::eigenvalues | ( | ) | const |
returns a vector of eigenvalues. Throws an exception if either this matrix is not square or the eigenvalues could not be found (e.g. singular matrix or whatever).
Definition at line 301 of file MMatrix.cpp.
References get_matrix(), interpolation::MVector< Tmplt >::get_vector(), interpolation::m_complex_build(), MMatrix(), num_col(), and num_row().
| template std::pair< MVector< m_complex >, MMatrix< m_complex > > interpolation::MMatrix< Tmplt >::eigenvectors | ( | ) | const |
Definition at line 316 of file MMatrix.cpp.
References get_matrix(), interpolation::MVector< Tmplt >::get_vector(), MMatrix(), num_col(), and num_row().
|
staticprivate |
Definition at line 350 of file MMatrix.h.
References _matrix, and MMatrix().
Referenced by eigenvalues(), and eigenvectors().
|
staticprivate |
| template MVector< m_complex > interpolation::MMatrix< Tmplt >::get_mvector | ( | size_t | column | ) | const |
Definition at line 417 of file MMatrix.cpp.
References num_row(), and operator()().
| MMatrix< Tmplt > interpolation::MMatrix< Tmplt >::inverse | ( | ) | const |
returns matrix inverse leaving this matrix unchanged
Definition at line 222 of file MMatrix.cpp.
References invert(), and MMatrix().
| void interpolation::MMatrix< double >::invert | ( | ) |
Definition at line 246 of file MMatrix.cpp.
| void interpolation::MMatrix< m_complex >::invert | ( | ) |
Definition at line 231 of file MMatrix.cpp.
| void interpolation::MMatrix< Tmplt >::invert | ( | ) |
turns this matrix into its inverse
Referenced by inverse().
|
inline |
|
inline |
| size_t interpolation::MMatrix< Tmplt >::num_col | ( | ) | const |
returns number of columns in the matrix
Referenced by interpolation::complex(), interpolation::complex(), eigenvalues(), eigenvectors(), interpolation::im(), operator*=, operator*=, interpolation::operator-(), interpolation::operator<<(), interpolation::MMatrix< double >::operator=(), interpolation::MMatrix< double >::operator=(), interpolation::operator==(), interpolation::re(), interpolation::SquarePolynomialVector::SetCoefficients(), interpolation::SquarePolynomialVector::SetCoefficients(), and trace().
|
inline |
|
inline |
| size_t interpolation::MMatrix< Tmplt >::num_row | ( | ) | const |
returns number of rows in the matrix
Referenced by interpolation::complex(), interpolation::complex(), eigenvalues(), eigenvectors(), get_mvector(), interpolation::im(), operator*, operator*, operator*=, operator*=, interpolation::operator-(), interpolation::operator<<(), interpolation::MMatrix< double >::operator=(), interpolation::MMatrix< double >::operator=(), interpolation::operator==(), interpolation::re(), interpolation::SquarePolynomialVector::SetCoefficients(), and trace().
|
inline |
|
inline |
|
inline |
|
inline |
| Tmplt & interpolation::MMatrix< Tmplt >::operator() | ( | size_t | row, |
| size_t | column ) |
| const Tmplt & interpolation::MMatrix< Tmplt >::operator() | ( | size_t | row, |
| size_t | column ) const |
| MMatrix< double > & interpolation::MMatrix< double >::operator= | ( | const MMatrix< double > & | mm | ) |
Definition at line 78 of file MMatrix.cpp.
| MMatrix< m_complex > & interpolation::MMatrix< m_complex >::operator= | ( | const MMatrix< m_complex > & | mm | ) |
Definition at line 89 of file MMatrix.cpp.
| MMatrix< Tmplt > & interpolation::MMatrix< Tmplt >::operator= | ( | const MMatrix< Tmplt > & | mm | ) |
| template MMatrix< m_complex > interpolation::MMatrix< Tmplt >::sub | ( | size_t | min_row, |
| size_t | max_row, | ||
| size_t | min_col, | ||
| size_t | max_col ) const |
Definition at line 277 of file MMatrix.cpp.
References MMatrix(), and operator()().
| MMatrix< m_complex > interpolation::MMatrix< m_complex >::T | ( | ) | const |
Definition at line 269 of file MMatrix.cpp.
| MMatrix< double > interpolation::MMatrix< double >::T | ( | ) | const |
Definition at line 261 of file MMatrix.cpp.
| MMatrix< Tmplt > interpolation::MMatrix< Tmplt >::T | ( | ) | const |
| template m_complex interpolation::MMatrix< Tmplt >::trace | ( | ) | const |
returns sum of terms with row == column, even if matrix is not square
Definition at line 290 of file MMatrix.cpp.
References num_col(), num_row(), and operator()().
|
friend |
|
friend |
Definition at line 271 of file MMatrix.h.
References _matrix, interpolation::MVector< Tmplt >::_vector, interpolation::m_complex_build(), MMatrix(), and num_row().
|
friend |
Definition at line 340 of file MMatrix.cpp.
References _matrix, interpolation::m_complex_build(), MMatrix(), num_col(), and num_row().
|
friend |
|
private |
Definition at line 191 of file MMatrix.h.
Referenced by interpolation::MMatrix< double >::determinant(), get_matrix(), get_matrix(), interpolation::MMatrix< double >::invert(), MMatrix(), MMatrix(), interpolation::MMatrix< double >::MMatrix(), interpolation::MMatrix< double >::MMatrix(), operator*, operator*, operator*=, operator*=, operator*=, operator*=, operator+=, operator+=, interpolation::MMatrix< double >::operator=(), interpolation::MMatrix< double >::operator=(), and interpolation::MMatrix< double >::T().