22 #ifndef CRNSQUAREMATRIXDOUBLE_HEADER
23 #define CRNSQUAREMATRIXDOUBLE_HEADER
87 double Cofactor(
size_t r,
size_t c)
const;
106 std::vector<std::complex<double>>
Eigenvalues(
size_t max_iter = 30)
const;
110 void tred2(
SquareMatrixDouble &z, std::vector<double> &diag, std::vector<double> &offdiag)
const;
111 virtual std::string getClassName()
const override {
return "SquareMatrixDouble"; }
std::vector< std::complex< double > > Eigenvalues(size_t max_iter=30) const
Extract eigenvalues for matrix of real (eigenvalues may be complex)
static SquareMatrixDouble NewGaussianSobelX(double sigma)
Create Gaussian Sobel X derivation mask.
bool IsDiagonal() const
Check if matrix is diagonal.
bool IsUpperTriangular() const
Check if matrix is upper triangular.
SquareMatrixDouble MakeGaussJordanInverse() const
Invert using Gauss-Jordan elimination.
virtual ~SquareMatrixDouble() override=default
Destructor.
virtual SquareMatrixDouble & Transpose() override
Transposition.
SquareMatrixDouble(size_t size, double value=0.0)
Constructor.
SquareMatrixDouble MakeUpperHessenberg() const
Get the upper Hessenberg form of matrix.
SquareMatrixDouble & operator=(const SquareMatrixDouble &)=default
double Trace() const
Trace.
std::multimap< double, MatrixDouble > MakeJacobiEigensystem(size_t MaxIteration=100) const
Perform diagonalization for symmetric matrix.
static SquareMatrixDouble NewGaussian(double sigma)
Create Gaussian matrix.
static SquareMatrixDouble NewIdentity(size_t n)
Create identity matrix.
bool IsUpperHessenberg() const
Check if matrix is upper Hessenberg.
SquareMatrixDouble MakeInverse() const
Invert using determinants.
std::multimap< double, MatrixDouble > MakeTQLIEigensystem(size_t maxiter=30) const
Perform diagonalization for positive symmetric matrix.
virtual void Deserialize(xml::Element &el)
static SquareMatrixDouble NewGaussianSobelY(double sigma)
Create Gaussian Sobel Y derivation mask.
#define CRN_DECLARE_CLASS_CONSTRUCTOR(classname)
Declares a class constructor.
Square double matrix class.
bool IsLowerTriangular() const
Check if matrix is lower triangular.
std::multimap< double, MatrixDouble > MakeSpectralEigensystem() const
Perform diagonalization for 2x2 symmetric matrix.
SquareMatrixDouble MakeMinor(size_t r, size_t c) const
Minor matrix.
double Cofactor(size_t r, size_t c) const
Cofactor.
double Determinant() const
Determinant.
SquareMatrixDouble MakeCholesky() const
Get the lower triangular factor in Cholesky decomposition.
A class containing informations on a type.
double DiagonalProduct() const
Diagonal product.