If M is a triangular matrix (upper or lower) and X a vector containing the right hand side, the following procedures solve the system . The vector X contains the result:
gmm::upper_tri_solve(M, X, false) // Solving an upper triangular system
gmm::upper_tri_solve(M, X, true) // Solving an upper triangular system
// assuming there is 1 on the diagonal
gmm::lower_tri_solve(M, X, false) // Solving a lower triangular system
gmm::lower_tri_solve(M, X, true) // Solving a lower triangular system
// assuming there is 1 on the diagonal
components which are lower the diagonal are ignored by gmm::upper_tri_solve and components which are upper the diagonal are ignored by gmm::lower_tri_solve.