#include <UpperHessenbergQR.h>
Public Member Functions | |
void | apply_QtY (GenericMatrix Y) const |
void | apply_QtY (Vector &Y) const |
void | apply_QY (GenericMatrix Y) const |
void | apply_QY (Vector &Y) const |
void | apply_YQ (GenericMatrix Y) const |
void | apply_YQt (GenericMatrix Y) const |
virtual void | compute (ConstGenericMatrix &mat, const Scalar &shift=Scalar(0)) |
virtual void | matrix_QtHQ (Matrix &dest) const |
virtual Matrix | matrix_R () const |
UpperHessenbergQR (ConstGenericMatrix &mat, const Scalar &shift=Scalar(0)) | |
UpperHessenbergQR (Index size) | |
virtual | ~UpperHessenbergQR () |
Static Protected Member Functions | |
static void | compute_rotation (const Scalar &x, const Scalar &y, Scalar &r, Scalar &c, Scalar &s) |
static void | stable_scaling (const Scalar &a, const Scalar &b, Scalar &r, Scalar &c, Scalar &s) |
Protected Attributes | |
bool | m_computed |
Index | m_n |
Array | m_rot_cos |
Array | m_rot_sin |
Scalar | m_shift |
Private Types | |
using | Array = Eigen::Array< Scalar, Eigen::Dynamic, 1 > |
using | ConstGenericMatrix = const Eigen::Ref< const Matrix > |
using | GenericMatrix = Eigen::Ref< Matrix > |
using | Index = Eigen::Index |
using | Matrix = Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > |
using | RowVector = Eigen::Matrix< Scalar, 1, Eigen::Dynamic > |
using | Vector = Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > |
Private Attributes | |
Matrix | m_mat_R |
Perform the QR decomposition of an upper Hessenberg matrix.
Scalar | The element type of the matrix. Currently supported types are float , double and long double . |
Definition at line 45 of file UpperHessenbergQR.h.
|
private |
Definition at line 52 of file UpperHessenbergQR.h.
|
private |
Definition at line 55 of file UpperHessenbergQR.h.
|
private |
Definition at line 54 of file UpperHessenbergQR.h.
|
private |
Definition at line 48 of file UpperHessenbergQR.h.
|
private |
Definition at line 49 of file UpperHessenbergQR.h.
|
private |
Definition at line 51 of file UpperHessenbergQR.h.
|
private |
Definition at line 50 of file UpperHessenbergQR.h.
|
inline |
Constructor to preallocate memory. Computation can be performed later by calling the compute() method.
Definition at line 178 of file UpperHessenbergQR.h.
|
inline |
Constructor to create an object that performs and stores the QR decomposition of an upper Hessenberg matrix mat
, with an optional shift: . Here
stands for the matrix
mat
, and is the shift.
mat | Matrix type can be Eigen::Matrix<Scalar, ...> (e.g. Eigen::MatrixXd and Eigen::MatrixXf ), or its mapped version (e.g. Eigen::Map<Eigen::MatrixXd> ). Only the upper triangular and the subdiagonal elements of the matrix are used. |
Definition at line 198 of file UpperHessenbergQR.h.
|
inlinevirtual |
Virtual destructor.
Definition at line 211 of file UpperHessenbergQR.h.
|
inline |
Apply the matrix to another matrix
.
Y | A matrix that will be overwritten by the matrix product ![]() |
Matrix type can be Eigen::Matrix<Scalar, ...>
(e.g. Eigen::MatrixXd
and Eigen::MatrixXf
), or its mapped version (e.g. Eigen::Map<Eigen::MatrixXd>
).
Definition at line 438 of file UpperHessenbergQR.h.
|
inline |
Apply the matrix to a vector
.
Y | A vector that will be overwritten by the matrix product ![]() |
Vector type can be Eigen::Vector<Scalar, ...>
, depending on the template parameter Scalar
defined.
Definition at line 379 of file UpperHessenbergQR.h.
|
inline |
Apply the matrix to another matrix
.
Y | A matrix that will be overwritten by the matrix product ![]() |
Matrix type can be Eigen::Matrix<Scalar, ...>
(e.g. Eigen::MatrixXd
and Eigen::MatrixXf
), or its mapped version (e.g. Eigen::Map<Eigen::MatrixXd>
).
Definition at line 408 of file UpperHessenbergQR.h.
|
inline |
Apply the matrix to a vector
.
Y | A vector that will be overwritten by the matrix product ![]() |
Vector type can be Eigen::Vector<Scalar, ...>
, depending on the template parameter Scalar
defined.
Definition at line 352 of file UpperHessenbergQR.h.
|
inline |
Apply the matrix to another matrix
.
Y | A matrix that will be overwritten by the matrix product ![]() |
Matrix type can be Eigen::Matrix<Scalar, ...>
(e.g. Eigen::MatrixXd
and Eigen::MatrixXf
), or its mapped version (e.g. Eigen::Map<Eigen::MatrixXd>
).
Definition at line 469 of file UpperHessenbergQR.h.
|
inline |
Apply the matrix to another matrix
.
Y | A matrix that will be overwritten by the matrix product ![]() |
Matrix type can be Eigen::Matrix<Scalar, ...>
(e.g. Eigen::MatrixXd
and Eigen::MatrixXf
), or its mapped version (e.g. Eigen::Map<Eigen::MatrixXd>
).
Definition at line 515 of file UpperHessenbergQR.h.
|
inlinevirtual |
Compute the QR decomposition of an upper Hessenberg matrix with an optional shift.
mat | Matrix type can be Eigen::Matrix<Scalar, ...> (e.g. Eigen::MatrixXd and Eigen::MatrixXf ), or its mapped version (e.g. Eigen::Map<Eigen::MatrixXd> ). Only the upper triangular and the subdiagonal elements of the matrix are used. |
Definition at line 223 of file UpperHessenbergQR.h.
|
inlinestaticprotected |
Definition at line 132 of file UpperHessenbergQR.h.
|
inlinevirtual |
Overwrite dest
with , where
is the input matrix
mat
, and is the shift. The result is an upper Hessenberg matrix.
mat | The matrix to be overwritten, whose type should be Eigen::Matrix<Scalar, ...> , depending on the template parameter Scalar defined. |
Definition at line 305 of file UpperHessenbergQR.h.
|
inlinevirtual |
Return the matrix in the QR decomposition, which is an upper triangular matrix.
Eigen::Matrix<Scalar, ...>
, depending on the template parameter Scalar
defined. Definition at line 290 of file UpperHessenbergQR.h.
|
inlinestaticprotected |
Definition at line 70 of file UpperHessenbergQR.h.
|
protected |
Definition at line 67 of file UpperHessenbergQR.h.
|
private |
Definition at line 57 of file UpperHessenbergQR.h.
|
protected |
Definition at line 60 of file UpperHessenbergQR.h.
|
protected |
Definition at line 65 of file UpperHessenbergQR.h.
|
protected |
Definition at line 66 of file UpperHessenbergQR.h.
|
protected |
Definition at line 64 of file UpperHessenbergQR.h.