A \(n\times m\) matrix object. More...
#include <include/CepGen/Utils/Algebra.h>
Public Types | |
using | Indices = std::pair<size_t, size_t> |
Public Member Functions | |
Matrix (size_t num_rows, size_t num_cols) | |
Object constructor. | |
Matrix (const std::initializer_list< Vector > &vectors) | |
Object constructor (from vectors) | |
Matrix (const Matrix &) | |
Copy constructor. | |
Matrix & | operator= (const Matrix &) |
Assignment operator. | |
operator Vector () const | |
Implicit conversion to vector. | |
size_t | numColumns () const |
Number of (vertical) columns. | |
size_t | numRows () const |
Number of (horizontal) rows. | |
bool | operator== (const Matrix &) const |
Equality operator. | |
bool | operator!= (const Matrix &oth) const |
Inequality operator. | |
Matrix | subset (size_t min_y, size_t min_x, size_t max_y=0ull, size_t max_x=0ull) const |
Extract a subset of the matrix as a new object. | |
Matrix & | operator*= (double) |
Multiplication by a scalar operator. | |
Matrix & | operator*= (const Vector &) |
Multiplication by a vector operator. | |
Matrix & | operator*= (const Matrix &) |
Multiplication by a matrix operator. | |
Matrix & | operator/= (double) |
Division by a scalar operator. | |
Matrix | operator- () const |
Unary inverse operator. | |
Matrix & | operator+= (const Matrix &) |
Addition of another matrix. | |
Matrix & | operator-= (const Matrix &) |
Subtraction of another matrix. | |
double & | operator() (size_t, size_t) |
Component access operator. | |
double | operator() (size_t, size_t) const |
Component retrieval operator. | |
Vector | operator% (const Vector &) const |
Solving operator (from LU decomposition) | |
Indices | imin () const |
Index (row, column) of the minimum matrix element. | |
Indices | imax () const |
Index (row, column) of the maximum matrix element. | |
double | min () const |
Minimum matrix element. | |
double | max () const |
Maximum matrix element. | |
bool | null () const |
Is the matrix uniformly null? | |
bool | positive () const |
Is the matrix positive-defined? | |
bool | negative () const |
Is the matrix negative-defined? | |
bool | nonNegative () const |
Is the matrix non-negative-defined? | |
Matrix & | truncate (double min=1.e-14) |
Truncate (specify minimum non-zero value) for all matrix components. | |
Matrix & | transpose () |
Transpose the matrix. | |
Matrix | transposed () const |
Return a transposition of this matrix. | |
Matrix & | invert () |
Invert the matrix. | |
Matrix | inverted () const |
Return the inverse of this matrix (LU decomposition) | |
VectorRef | column (size_t) |
Return whole column of the matrix. | |
Vector | column (size_t) const |
Return whole column of the matrix. | |
VectorRef | row (size_t) |
Return whole row of the matrix. | |
Vector | row (size_t) const |
Return whole row of the matrix. | |
VectorRef | diagonal () |
Return the diagonal components of the matrix. | |
Vector | diagonal () const |
Return the diagonal components of the matrix. | |
Static Public Member Functions | |
static Matrix | zero (size_t num_rows, size_t num_cols=0ull) |
Build a zeroed matrix. | |
static Matrix | uniform (size_t num_rows, size_t num_cols, double value=1.) |
Build a uniform matrix. | |
static Matrix | identity (size_t) |
Build a (square) identity matrix. | |
static Matrix | diagonal (const Vector &) |
Build a (square) diagonal matrix from its diagonal vector. | |
Friends | |
Matrix | operator* (double, const Matrix &) |
Multiplication of a matrix by a scalar. | |
Matrix | operator* (const Matrix &, double) |
Multiplication of a matrix by a scalar. | |
Vector | operator* (const Matrix &, const Vector &) |
Multiplication of a matrix by a vector. | |
Matrix | operator* (const Matrix &, const Matrix &) |
Multiplication of a matrix by another matrix. | |
Matrix | operator/ (const Matrix &, double) |
Division of a matrix by a scalar. | |
Matrix | operator+ (const Matrix &, const Matrix &) |
Addition of two matrices. | |
Matrix | operator- (const Matrix &, const Matrix &) |
Subtraction of two matrices. | |
std::ostream & | operator<< (std::ostream &, const Matrix &) |
Printout of matrix components. | |
|
explicit |
[in] | num_rows | number of (horizontal) rows for the matrix |
[in] | num_cols | number of (vertical) columns for the matrix |
[in] | vectors | set of (vector) rows |
VectorRef column | ( | size_t | ) |
Vector column | ( | size_t | ) | const |
VectorRef diagonal | ( | ) |
Vector diagonal | ( | ) | const |
|
static |
Indices imax | ( | ) | const |
Indices imin | ( | ) | const |
Matrix & invert | ( | ) |
Matrix inverted | ( | ) | const |
double max | ( | ) | const |
double min | ( | ) | const |
bool negative | ( | ) | const |
bool nonNegative | ( | ) | const |
bool null | ( | ) | const |
size_t numColumns | ( | ) | const |
size_t numRows | ( | ) | const |
operator Vector | ( | ) | const |
double & operator() | ( | size_t | , |
size_t | ) |
double operator() | ( | size_t | , |
size_t | ) const |
Matrix & operator*= | ( | double | ) |
Matrix operator- | ( | ) | const |
Matrix & operator/= | ( | double | ) |
bool operator== | ( | const Matrix & | ) | const |
bool positive | ( | ) | const |
VectorRef row | ( | size_t | ) |
Vector row | ( | size_t | ) | const |
Matrix subset | ( | size_t | min_y, |
size_t | min_x, | ||
size_t | max_y = 0ull, | ||
size_t | max_x = 0ull ) const |
[in] | min_y | first vertical index for the subset |
[in] | min_x | first horizontal index for the subset |
[in] | max_y | last vertical index for the subset |
[in] | max_x | last horizontal index for the subset |
Matrix & transpose | ( | ) |
Matrix transposed | ( | ) | const |
Matrix & truncate | ( | double | min = 1.e-14 | ) |
|
static |
[in] | num_rows | number of (horizontal) rows for the matrix |
[in] | num_cols | number of (vertical) columns for the matrix |
[in] | value | uniform value for all the matrix components |
|
static |
[in] | num_rows | number of (horizontal) rows for the matrix |
[in] | num_cols | number of (vertical) columns for the matrix |
|
friend |