mgmres, a Fortran90 code which applies the restarted Generalized Minimum Residual (GMRES) algorithm to solve a sparse linear system, using compressed rows storage (CRS) or sparse triplet (ST) format, by Lili Ju.

One matrix format used is the sparse triplet (ST) format, which simply stores NZ_NUM, the number of nonzeros, and stores the K-th nonzero matrix entry as

Another matrix format used is the compressed row storage (CRS) format, which is similar to the sparse triplet format except that the vector of row indices is compressed to a vector of length N+1 which points to the beginning of the set of entries for each row.


The computer code and data files described and made available on this web page are distributed under the MIT license.


mgmres is available in a C version and a C++ version and a Fortran90 version and a MATLAB version and an Octave version.

Related Data and Programs:


cg_rc, a Fortran90 code which implements the conjugate gradient method for solving a positive definite sparse linear system A*x=b, using reverse communication.

jacobi, a Fortran90 code which implements the Jacobi iteration for solving symmetric positive definite systems of linear equations.

sparsekit, a Fortran90 code which implements operations on sparse matrices, including conversion between various formats.

test_matrix, a Fortran90 code which defines test matrices.


C version by Lili Ju, Mathematics Department, University of South Carolina; This version by John Burkardt.


  1. Richard Barrett, Michael Berry, Tony Chan, James Demmel, June Donato, Jack Dongarra, Victor Eijkhout, Roidan Pozo, Charles Romine, Henk van der Vorst,
    Templates for the Solution of Linear Systems:
    Building Blocks for Iterative Methods,
    SIAM, 1994,
    ISBN: 0898714710,
    LC: QA297.8.T45.
  2. Tim Kelley,
    Iterative Methods for Linear and Nonlinear Equations,
    SIAM, 2004,
    ISBN: 0898713528,
    LC: QA297.8.K45.
  3. Yousef Saad,
    Iterative Methods for Sparse Linear Systems,
    Second Edition,
    SIAM, 20003,
    ISBN: 0898715342,
    LC: QA188.S17.

Source Code:

Last revised on 30 July 2020.