The following procedures are available in the file `gmm/gmm\_dense\_lu.h` for dense real and complex matrices (`gmm::dense_matrix<T>`, `gmm::row_matrix< std::vector<T> >` and `gmm::col_matrix< std::vector<T> >`):

```
gmm::lu_factor(M, ipvt) : compute the LU factorization of M in M. ipvt should be
an std::vector<size_t> (of size gmm::mat_nrows(M))
which will contain the indices of the pivots.
gmm::lu_solve(LU, ipvt, x, b) : solve the system LUx = b. LU is the LU
factorization which has to be computed first.
gmm::lu_solve(M, x, b) : solve the system Mx=b calling the lu factorization on
a copy of M.
gmm::lu_solve_transposed(LU, ipvt, x, b) : solve the system transposed(LU)x = b.
LU is the LU factorization which
has to be computed first.
gmm::lu_inverse(LU, ipvt, A) : compute the inverse of LU in A. LU is the LU
factorization which has to be computed first
gmm::lu_inverse(A) : invert A calling the LU factorization and the latter
procedure.
gmm::lu_det(LU, ipvt) : compute the determinant of LU. LU is the LU
factorization which has to be computed first
gmm::lu_det(A) : compute the determinant of A calling the LU factorization
and the latter function.
```