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