|
Lapack++
|
Represent a QR decomposition. More...
#include <gfqrc.h>
Public Member Functions | |
| LaGenQRFactComplex () | |
| LaGenQRFactComplex (LaGenMatComplex &A) | |
| LaGenQRFactComplex (LaGenQRFactComplex &QR) | |
| ~LaGenQRFactComplex () | |
| void | decomposeQR_IP (LaGenMatComplex &A) |
| LaGenMatComplex & | generateQ_IP () |
| void | generateQ (LaGenMatComplex &A) const |
| void | Mat_Mult (LaGenMatComplex &C, bool hermitian, bool from_left) const |
Represent a QR decomposition.
This class calculates the QR factorization of a general m-by-n Matrix
given by
for
, where
is an n-by-n upper triangular matrix and
is an m-by-m unitary matrix. If
is of full rank n, then
is non-singular.
See http://www.netlib.org/lapack/lug/node40.html for more details.
Null constructor. Use decomposeQR_IP() to actually use this object.
Constructor that directly calculates the QR decomposition from the given matrix A, in-place. See decomposeQR_IP() for more about the implications of this.
Copy constructor.
Default destructor.
| void LaGenQRFactComplex::decomposeQR_IP | ( | LaGenMatComplex & | A | ) |
Calculate the QR decomposition of A.
This is in-place, i.e. it destroys the input matrix A and keeps a reference to its memory around. In other words, you cannot do anything with your input matrix A anymore. You can safely delete any references to A because this object will keep its own references still around.
Internally this uses the lapack routine zgeqrf .
Generate the matrix Q explicitly. This is in-place, i.e. it destroys the internal QR decomposition but only calculates the matrix Q.
Internally this uses the lapack routine zungqr .
| void LaGenQRFactComplex::generateQ | ( | LaGenMatComplex & | A | ) | const |
Generate the matrix Q explicitly. The given matrix A will be overwritten by the matrix Q.
Internally this uses the lapack routine zungqr .
| void LaGenQRFactComplex::Mat_Mult | ( | LaGenMatComplex & | C, |
| bool | hermitian, | ||
| bool | from_left | ||
| ) | const |
Multiply the matrix C by the matrix Q of the QR decomposition that is represented through this object. This method calculates one out of the following four different calculations:


or
This does not modify the internal QR decomposition, so this multiplication can be applied repeatedly.
Internally this uses the lapack routine zunmqr .
| C | The matrix to be multiplied. |
| hermitian | If true, then (hermitian, or conjugate transposed) is used. If false, then is used directly. |
| from_left | If true, then Q or is applied from the left so that C=Q*C . If false, then Q is applied from the right so that C=C*Q . |
1.7.6.1