A square matrix class. More...
#include "TensorTypes.h"#include "../defs.h"#include <cstddef>#include "../array/FixedArray.h"#include "../../third-party/loki/static_check.h"#include <iosfwd>#include <algorithm>#include <functional>#include <numeric>#include <cassert>#include <cmath>Go to the source code of this file.
Classes | |
| class | SquareMatrix< N, T > |
| An NxN matrix. More... | |
| class | SquareMatrix< 1, T > |
| A 1x1 matrix. More... | |
| class | SquareMatrix< 2, T > |
| A 2x2 matrix. More... | |
| class | SquareMatrix< 3, T > |
| A 3x3 matrix. More... | |
Functions | |
| template<typename T , int N> | |
| SquareMatrix< N, T > | operator+ (const SquareMatrix< N, T > &m, const T x) |
| SquareMatrix-scalar addition. | |
| template<typename T , int N> | |
| SquareMatrix< N, T > | operator+ (const T x, const SquareMatrix< N, T > &m) |
| Scalar-SquareMatrix addition. | |
| template<typename T , int N> | |
| SquareMatrix< N, T > | operator+ (const SquareMatrix< N, T > &x, const SquareMatrix< N, T > &y) |
| SquareMatrix-SquareMatrix addition. | |
| template<typename T , int N> | |
| SquareMatrix< N, T > | operator- (const SquareMatrix< N, T > &m, const T x) |
| SquareMatrix-scalar subtraction. | |
| template<typename T , int N> | |
| SquareMatrix< N, T > | operator- (const T x, const SquareMatrix< N, T > &m) |
| Scalar-SquareMatrix subtraction. | |
| template<typename T , int N> | |
| SquareMatrix< N, T > | operator- (const SquareMatrix< N, T > &x, const SquareMatrix< N, T > &y) |
| SquareMatrix-SquareMatrix subtraction. | |
| template<int N, typename T > | |
| SquareMatrix< N, T > | operator* (const SquareMatrix< N, T > &m, const T x) |
| SquareMatrix-scalar product. | |
| template<int N, typename T > | |
| SquareMatrix< N, T > | operator* (const T x, const SquareMatrix< N, T > &m) |
| Scalar-SquareMatrix product. | |
| template<int N, typename T > | |
| SquareMatrix< N, T > | operator* (const SquareMatrix< N, T > &x, const SquareMatrix< N, T > &y) |
| SquareMatrix-SquareMatrix product. | |
| template<int N, typename T > | |
| SquareMatrix< N, T > | operator/ (const SquareMatrix< N, T > &m, const T x) |
| SquareMatrix-scalar division. | |
| template<int N, typename T > | |
| SquareMatrix< N, T > | operator/ (const T x, const SquareMatrix< N, T > &m) |
| Scalar-SquareMatrix division. | |
| template<int N, typename T > | |
| T | computeSum (const SquareMatrix< N, T > &x) |
| Return the sum of the elements. | |
| template<int N, typename T > | |
| T | computeProduct (const SquareMatrix< N, T > &x) |
| Return the product of the elements. | |
| template<int N, typename T > | |
| T | computeMinimum (const SquareMatrix< N, T > &x) |
| Return the minimum element. Use < for comparison. | |
| template<int N, typename T > | |
| T | computeMaximum (const SquareMatrix< N, T > &x) |
| Return the maximum element. Use > for comparison. | |
| template<int N, typename T > | |
| T | computeDeterminant (const SquareMatrix< N, T > &x) |
| Return the determinant of the matrix. | |
| template<int N, typename T > | |
| T | computeTrace (const SquareMatrix< N, T > &x) |
| Return the trace of the matrix. | |
| template<int N, typename T > | |
| SquareMatrix< N, T > | computeTranspose (const SquareMatrix< N, T > &x) |
| Return the transpose of the matrix. | |
| template<int N, typename T > | |
| SquareMatrix< N, T > | computeInverse (const SquareMatrix< N, T > &x) |
| Return the inverse of the matrix. | |
| template<int N, typename T > | |
| void | computeInverse (const SquareMatrix< N, T > &x, SquareMatrix< N, T > *y) |
| Compute the inverse of the matrix. | |
| template<int N, typename T > | |
| void | computeScaledInverse (const SquareMatrix< N, T > &x, SquareMatrix< N, T > *si) |
| Calculate the scaled inverse of the matrix: determinant * inverse. | |
| template<int N, typename T > | |
| SquareMatrix< N, T > | computeScaledInverse (const SquareMatrix< N, T > &x) |
| Return the scaled inverse of the matrix: determinant * inverse. | |
| template<int N, typename T > | |
| T | computeFrobeniusNormSquared (const SquareMatrix< N, T > &x) |
| Return the frobenius norm of the matrix. | |
| template<int N, typename T > | |
| T | computeFrobeniusNorm (const SquareMatrix< N, T > &x) |
| Return the frobenius norm of the matrix. | |
| template<int N, typename T > | |
| T | computeInnerProduct (const SquareMatrix< N, T > &x, const SquareMatrix< N, T > &y) |
| Return the inner product of the matrices. computeTrace(transpose(x) * y). | |
| template<int N, typename T > | |
| void | computeProduct (const SquareMatrix< N, T > &m, const FixedArray< N, T > &v, FixedArray< N, T > *x) |
Compute the matrix-vector product. x = m * v. | |
| template<int N, typename T1 , typename T2 > | |
| bool | operator== (const SquareMatrix< N, T1 > &a, const SquareMatrix< N, T2 > &b) |
| Return true if the matrices are equal. | |
| template<int N, typename T1 , typename T2 > | |
| bool | operator!= (const SquareMatrix< N, T1 > &a, const SquareMatrix< N, T2 > &b) |
| Return true if the tensors are not equal. | |
| template<int N, typename T > | |
| std::ostream & | operator<< (std::ostream &out, const SquareMatrix< N, T > &x) |
| Write a matrix as rows with space-separated numbers. | |
| template<int N, typename T > | |
| std::istream & | operator>> (std::istream &in, SquareMatrix< N, T > &x) |
| Read white space-separated numbers into a matrix. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator+ (const SquareMatrix< 1, T > &m, const T x) |
| SquareMatrix-scalar addition. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator+ (const T x, const SquareMatrix< 1, T > &m) |
| Scalar-SquareMatrix addition. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator+ (const SquareMatrix< 1, T > &x, const SquareMatrix< 1, T > &y) |
| SquareMatrix-SquareMatrix addition. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator- (const SquareMatrix< 1, T > &m, const T x) |
| SquareMatrix-scalar subtraction. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator- (const T x, const SquareMatrix< 1, T > &m) |
| Scalar-SquareMatrix subtraction. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator- (const SquareMatrix< 1, T > &x, const SquareMatrix< 1, T > &y) |
| SquareMatrix-SquareMatrix subtraction. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator* (const SquareMatrix< 1, T > &m, const T x) |
| SquareMatrix-scalar product. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator* (const T x, const SquareMatrix< 1, T > &m) |
| Scalar-SquareMatrix product. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator* (const SquareMatrix< 1, T > &x, const SquareMatrix< 1, T > &y) |
| SquareMatrix-SquareMatrix product. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator/ (const SquareMatrix< 1, T > &m, const T x) |
| SquareMatrix-scalar division. | |
| template<typename T > | |
| SquareMatrix< 1, T > | operator/ (const T x, const SquareMatrix< 1, T > &m) |
| Scalar-SquareMatrix division. | |
| template<typename T > | |
| T | computeSum (const SquareMatrix< 1, T > &x) |
| Return the sum of the elements. | |
| template<typename T > | |
| T | computeProduct (const SquareMatrix< 1, T > &x) |
| Return the product of the elements. | |
| template<typename T > | |
| T | computeMinimum (const SquareMatrix< 1, T > &x) |
| Return the minimum element. Use < for comparison. | |
| template<typename T > | |
| T | computeMaximum (const SquareMatrix< 1, T > &x) |
| Return the maximum element. Use > for comparison. | |
| template<typename T > | |
| T | computeDeterminant (const SquareMatrix< 1, T > &x) |
| Return the determinant of the matrix. | |
| template<typename T > | |
| T | computeTrace (const SquareMatrix< 1, T > &x) |
| Return the trace of the matrix. | |
| template<typename T > | |
| SquareMatrix< 1, T > | computeTranspose (const SquareMatrix< 1, T > &x) |
| Return the transpose of the matrix. | |
| template<typename T > | |
| SquareMatrix< 1, T > | computeInverse (const SquareMatrix< 1, T > &x) |
| Return the inverse of the matrix. | |
| template<typename T > | |
| void | computeInverse (const SquareMatrix< 1, T > &x, SquareMatrix< 1, T > *y) |
| Compute the inverse of the matrix. | |
| template<typename T > | |
| void | computeScaledInverse (const SquareMatrix< 1, T > &x, SquareMatrix< 1, T > *si) |
| Calculate the scaled inverse of the matrix: determinant * inverse. | |
| template<typename T > | |
| SquareMatrix< 1, T > | computeScaledInverse (const SquareMatrix< 1, T > &x) |
| Return the scaled inverse of the matrix: determinant * inverse. | |
| template<typename T > | |
| T | computeFrobeniusNorm (const SquareMatrix< 1, T > &x) |
| Return the frobenius norm of the matrix. | |
| template<typename T > | |
| T | computeFrobeniusNormSquared (const SquareMatrix< 1, T > &x) |
| Return the frobenius norm of the matrix. | |
| template<typename T > | |
| T | computeInnerProduct (const SquareMatrix< 1, T > &x, const SquareMatrix< 1, T > &y) |
| Return the inner product of the matrices. computeTrace(transpose(x) * y). | |
| template<typename T > | |
| void | computeProduct (const SquareMatrix< 1, T > &m, const FixedArray< 1, T > &v, FixedArray< 1, T > *x) |
Compute the matrix-vector product. x = m * v. | |
| template<typename T1 , typename T2 > | |
| bool | operator== (const SquareMatrix< 1, T1 > &a, const SquareMatrix< 1, T2 > &b) |
| Return true if the matrices are equal. | |
| template<typename T1 , typename T2 > | |
| bool | operator!= (const SquareMatrix< 1, T1 > &a, const SquareMatrix< 1, T2 > &b) |
| Return true if the tensors are not equal. | |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &out, const SquareMatrix< 1, T > &x) |
| Write a matrix as rows with space-separated numbers. | |
| template<typename T > | |
| std::istream & | operator>> (std::istream &in, SquareMatrix< 1, T > &x) |
| Read white space-separated numbers into a matrix. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator+ (const SquareMatrix< 2, T > &m, const T x) |
| SquareMatrix-scalar addition. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator+ (const T x, const SquareMatrix< 2, T > &m) |
| Scalar-SquareMatrix addition. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator+ (const SquareMatrix< 2, T > &x, const SquareMatrix< 2, T > &y) |
| SquareMatrix-SquareMatrix addition. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator- (const SquareMatrix< 2, T > &m, const T x) |
| SquareMatrix-scalar subtraction. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator- (const T x, const SquareMatrix< 2, T > &m) |
| Scalar-SquareMatrix subtraction. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator- (const SquareMatrix< 2, T > &x, const SquareMatrix< 2, T > &y) |
| SquareMatrix-SquareMatrix subtraction. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator* (const SquareMatrix< 2, T > &m, const T x) |
| SquareMatrix-scalar product. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator* (const T x, const SquareMatrix< 2, T > &m) |
| Scalar-SquareMatrix product. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator* (const SquareMatrix< 2, T > &x, const SquareMatrix< 2, T > &y) |
| SquareMatrix-SquareMatrix product. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator/ (const SquareMatrix< 2, T > &m, const T x) |
| SquareMatrix-scalar division. | |
| template<typename T > | |
| SquareMatrix< 2, T > | operator/ (const T x, const SquareMatrix< 2, T > &m) |
| Scalar-SquareMatrix division. | |
| template<typename T > | |
| T | computeSum (const SquareMatrix< 2, T > &x) |
| Return the sum of the elements. | |
| template<typename T > | |
| T | computeProduct (const SquareMatrix< 2, T > &x) |
| Return the product of the elements. | |
| template<typename T > | |
| T | computeMinimum (const SquareMatrix< 2, T > &x) |
| Return the minimum element. Use < for comparison. | |
| template<typename T > | |
| T | computeMaximum (const SquareMatrix< 2, T > &x) |
| Return the maximum element. Use > for comparison. | |
| template<typename T > | |
| T | computeDeterminant (const SquareMatrix< 2, T > &x) |
| Return the determinant of the matrix. | |
| template<typename T > | |
| T | computeTrace (const SquareMatrix< 2, T > &x) |
| Return the trace of the matrix. | |
| template<typename T > | |
| SquareMatrix< 2, T > | computeTranspose (const SquareMatrix< 2, T > &x) |
| Return the transpose of the matrix. | |
| template<typename T > | |
| SquareMatrix< 2, T > | computeInverse (const SquareMatrix< 2, T > &x) |
| Return the inverse of the matrix. | |
| template<typename T > | |
| SquareMatrix< 2, T > | computeInverse (const SquareMatrix< 2, T > &x, const T det) |
| Return the inverse of the matrix given the matrix and its determinant. | |
| template<typename T > | |
| void | computeInverse (const SquareMatrix< 2, T > &x, SquareMatrix< 2, T > *y) |
| Compute the inverse of the matrix. | |
| template<typename T > | |
| void | computeInverse (const SquareMatrix< 2, T > &x, const T det, SquareMatrix< 2, T > *y) |
| Compute the inverse of the matrix given its determinant. | |
| template<typename T > | |
| void | computeScaledInverse (const SquareMatrix< 2, T > &x, SquareMatrix< 2, T > *si) |
| Calculate the scaled inverse of the matrix: determinant * inverse. | |
| template<typename T > | |
| SquareMatrix< 2, T > | computeScaledInverse (const SquareMatrix< 2, T > &x) |
| Return the scaled inverse of the matrix: determinant * inverse. | |
| template<typename T > | |
| T | computeFrobeniusNorm (const SquareMatrix< 2, T > &x) |
| Return the frobenius norm of the matrix. | |
| template<typename T > | |
| T | computeFrobeniusNormSquared (const SquareMatrix< 2, T > &x) |
| Return the frobenius norm of the matrix. | |
| template<typename T > | |
| T | computeInnerProduct (const SquareMatrix< 2, T > &x, const SquareMatrix< 2, T > &y) |
| Return the inner product of the matrices. computeTrace(transpose(x) * y). | |
| template<typename T > | |
| void | computeProduct (const SquareMatrix< 2, T > &m, const FixedArray< 2, T > &v, FixedArray< 2, T > *x) |
Compute the matrix-vector product. x = m * v. | |
| template<typename T1 , typename T2 > | |
| bool | operator== (const SquareMatrix< 2, T1 > &a, const SquareMatrix< 2, T2 > &b) |
| Return true if the matrices are equal. | |
| template<typename T1 , typename T2 > | |
| bool | operator!= (const SquareMatrix< 2, T1 > &a, const SquareMatrix< 2, T2 > &b) |
| Return true if the tensors are not equal. | |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &out, const SquareMatrix< 2, T > &x) |
| Write a matrix as rows with space-separated numbers. | |
| template<typename T > | |
| std::istream & | operator>> (std::istream &in, SquareMatrix< 2, T > &x) |
| Read white space-separated numbers into a matrix. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator+ (const SquareMatrix< 3, T > &m, const T x) |
| SquareMatrix-scalar addition. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator+ (const T x, const SquareMatrix< 3, T > &m) |
| Scalar-SquareMatrix addition. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator+ (const SquareMatrix< 3, T > &x, const SquareMatrix< 3, T > &y) |
| SquareMatrix-SquareMatrix addition. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator- (const SquareMatrix< 3, T > &m, const T x) |
| SquareMatrix-scalar subtraction. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator- (const T x, const SquareMatrix< 3, T > &m) |
| Scalar-SquareMatrix subtraction. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator- (const SquareMatrix< 3, T > &x, const SquareMatrix< 3, T > &y) |
| SquareMatrix-SquareMatrix subtraction. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator* (const SquareMatrix< 3, T > &m, const T x) |
| SquareMatrix-scalar product. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator* (const T x, const SquareMatrix< 3, T > &m) |
| Scalar-SquareMatrix product. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator* (const SquareMatrix< 3, T > &x, const SquareMatrix< 3, T > &y) |
| SquareMatrix-SquareMatrix product. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator/ (const SquareMatrix< 3, T > &m, const T x) |
| SquareMatrix-scalar division. | |
| template<typename T > | |
| SquareMatrix< 3, T > | operator/ (const T x, const SquareMatrix< 3, T > &m) |
| Scalar-SquareMatrix division. | |
| template<typename T > | |
| T | computeSum (const SquareMatrix< 3, T > &x) |
| Return the sum of the elements. | |
| template<typename T > | |
| T | computeProduct (const SquareMatrix< 3, T > &x) |
| Return the product of the elements. | |
| template<typename T > | |
| T | computeMinimum (const SquareMatrix< 3, T > &x) |
| Return the minimum element. Use < for comparison. | |
| template<typename T > | |
| T | computeMaximum (const SquareMatrix< 3, T > &x) |
| Return the maximum element. Use > for comparison. | |
| template<typename T > | |
| T | computeDeterminant (const SquareMatrix< 3, T > &x) |
| Return the determinant of the matrix. | |
| template<typename T > | |
| T | computeTrace (const SquareMatrix< 3, T > &x) |
| Return the trace of the matrix. | |
| template<typename T > | |
| SquareMatrix< 3, T > | computeTranspose (const SquareMatrix< 3, T > &x) |
| Return the transpose of the matrix. | |
| template<typename T > | |
| SquareMatrix< 3, T > | computeInverse (const SquareMatrix< 3, T > &x) |
| Return the inverse of the matrix. | |
| template<typename T > | |
| SquareMatrix< 3, T > | computeInverse (const SquareMatrix< 3, T > &x, const T det) |
| Return the inverse of the matrix given the matrix and its determinant. | |
| template<typename T > | |
| void | computeInverse (const SquareMatrix< 3, T > &x, SquareMatrix< 3, T > *y) |
| Compute the inverse of the matrix. | |
| template<typename T > | |
| void | computeInverse (const SquareMatrix< 3, T > &x, const T det, SquareMatrix< 3, T > *y) |
| Compute the inverse of the matrix given its determinant. | |
| template<typename T > | |
| void | computeScaledInverse (const SquareMatrix< 3, T > &x, SquareMatrix< 3, T > *si) |
| Calculate the scaled inverse of the matrix: determinant * inverse. | |
| template<typename T > | |
| SquareMatrix< 3, T > | computeScaledInverse (const SquareMatrix< 3, T > &x) |
| Return the scaled inverse of the matrix: determinant * inverse. | |
| template<typename T > | |
| T | computeFrobeniusNorm (const SquareMatrix< 3, T > &x) |
| Return the frobenius norm of the matrix. | |
| template<typename T > | |
| T | computeFrobeniusNormSquared (const SquareMatrix< 3, T > &x) |
| Return the frobenius norm of the matrix. | |
| template<typename T > | |
| T | computeInnerProduct (const SquareMatrix< 3, T > &x, const SquareMatrix< 3, T > &y) |
| Return the inner product of the matrices. computeTrace(transpose(x) * y). | |
| template<typename T > | |
| void | computeProduct (const SquareMatrix< 3, T > &m, const FixedArray< 3, T > &v, FixedArray< 3, T > *x) |
Compute the matrix-vector product. x = m * v. | |
| template<typename T1 , typename T2 > | |
| bool | operator== (const SquareMatrix< 3, T1 > &a, const SquareMatrix< 3, T2 > &b) |
| Return true if the matrices are equal. | |
| template<typename T1 , typename T2 > | |
| bool | operator!= (const SquareMatrix< 3, T1 > &a, const SquareMatrix< 3, T2 > &b) |
| Return true if the tensors are not equal. | |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &out, const SquareMatrix< 3, T > &x) |
| Write a matrix as rows with space-separated numbers. | |
| template<typename T > | |
| std::istream & | operator>> (std::istream &in, SquareMatrix< 3, T > &x) |
| Read white space-separated numbers into a matrix. | |
A square matrix class.
1.6.3