Dense QR factorisation, eigenvalues and eigenvectors

The following procedures are available in the file gmm/gmm\_dense\_qr.h for dense real and complex matrices:

gmm::qr_factor(M, Q, R) // compute the QR factorization of M in Q and R
                        // (Householder version)

implicit_qr_algorithm(M, eigval, double tol = 1E-16) // compute the
   // eigenvalues of M using the implicit QR factorisation (Householder and
   // Francis QR step version). eigval should be a vector of appropriate size
   // in which the eigenvalues will be computed. If the matrix have
   // complex eigenvalues, please use a complex vector.

implicit_qr_algorithm(M, eigval, shvect, double tol = 1E-16) // idem,
   // compute additionally the schur vectors in the matrix shvect.

symmetric_qr_algorithm(M, eigval, double tol = 1E-16) // idem for symmetric
   // real and hermitian complex matrices (based on Wilkinson QR step)

symmetric_qr_algorithm(M, eigval, eigvect, double tol = 1E-16) // idem,
   // compute additionally the eigenvectors in the matrix eigvect.

Remark: The computation of eigenvectors for non hermitian matrices is not yet implemented. You can use for the moment the functions geev_interface_left and geev_interface_right from the LAPACK interface (see gmm/gmm_lapack_interface.h. These LAPACK functions compute right and left eigenvectors.

The following function defined in the file gmm/gmm\_condition\_number.h:

gmm::condition_number(M)

compute the condition number of a matrix M. This function uses a dense QR algorithm and thus is only usable for dense matrices.