12#ifndef LAPACK_UTILITIES_HPP
13#define LAPACK_UTILITIES_HPP
28void svd(Eigen::MatrixXd A, Eigen::MatrixXd &U, Eigen::MatrixXd &V, Eigen::VectorXd &S);
31void svd(Eigen::MatrixXd A, Eigen::MatrixXd &V, Eigen::VectorXd &S);
34Eigen::VectorXd
svd(Eigen::MatrixXd A);
38inline double cond(
const Eigen::VectorXd &s)
40 return s[0] / s[s.size() - 1];
44unsigned int rank(
const Eigen::VectorXd &s,
const double &tolerance = std::numeric_limits<double>::epsilon());
47void MGS(
const Eigen::MatrixXd &X, Eigen::MatrixXd &Q, Eigen::MatrixXd &R);
50QR_Factorization
MGS(
const Eigen::MatrixXd &X,
const double &tolerance = std::numeric_limits<double>::epsilon());
53QR_Factorization
QR(
const Eigen::MatrixXd &X,
const double &tolerance = std::numeric_limits<double>::epsilon());
56QR_Factorization
QRP(
const Eigen::MatrixXd &X,
const double &tolerance = std::numeric_limits<double>::epsilon());
59Eigen::MatrixXd
triu(
const Eigen::MatrixXd &X,
const unsigned int &i);
62void eig(
const Eigen::MatrixXd A, Eigen::VectorXd &D, Eigen::MatrixXd &R);
65void inverseTri(
const Eigen::MatrixXd A, Eigen::MatrixXd &InvA,
const char &UPLO,
const char &DIAG);
67double rcondest(
const Eigen::SparseMatrix<double> &sparseA);
Definition LAPACK_utilities.cpp:90
unsigned int rank(const Eigen::VectorXd &s, const double &tolerance)
Definition LAPACK_utilities.cpp:477
void inverseTri(const Eigen::MatrixXd A, Eigen::MatrixXd &InvA, const char &UPLO, const char &DIAG)
Compute inverse of triangular matrix.
Definition LAPACK_utilities.cpp:198
void eig(const Eigen::MatrixXd A, Eigen::VectorXd &D, Eigen::MatrixXd &R)
Compute eigenvalues and eigenvectors of A = R * D * R'.
Definition LAPACK_utilities.cpp:215
double cond(const Eigen::VectorXd &s)
Compute condition number in norm 2 given singular values.
Definition LAPACK_utilities.hpp:38
void MGS(const Eigen::MatrixXd &X, Eigen::MatrixXd &Q, Eigen::MatrixXd &R)
Compute the modified Gram-Schmidt factorization of matrix X.
Definition LAPACK_utilities.cpp:92
double rcondest(const Eigen::SparseMatrix< double > &sparseA)
Definition LAPACK_utilities.cpp:117
Eigen::MatrixXd triu(const Eigen::MatrixXd &X, const unsigned int &i)
Extract upper triangular part of matrix X.
Definition LAPACK_utilities.cpp:149
void svd(Eigen::MatrixXd A, Eigen::MatrixXd &V, Eigen::VectorXd &S)
Given A = U * S * V' returns only S and V'.
Definition LAPACK_utilities.cpp:166
QR_Factorization QR(const Eigen::MatrixXd &X, const double &tolerance)
Compute the QR matrix based on Householder reflectors.
Definition LAPACK_utilities.cpp:346
QR_Factorization QRP(const Eigen::MatrixXd &X, const double &tolerance)
Compute the QR with pivoting matrix based on Householder reflectors.
Definition LAPACK_utilities.cpp:405
Definition LAPACK_utilities.hpp:20
Eigen::MatrixXd P
Definition LAPACK_utilities.hpp:23
Eigen::MatrixXd R
Definition LAPACK_utilities.hpp:22
Eigen::MatrixXd Q
Definition LAPACK_utilities.hpp:21
unsigned int Space_Dimension
Definition LAPACK_utilities.hpp:24