# 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.