Restarted GMRES solver for sparse linear systems

MGMRES is a FORTRAN77 library which applies the restarted Generalized Minimum Residual (GMRES) algorithm to solve a sparse linear system, using compressed row (CR) or sparse triplet (ST) format, by Lili Ju.

One matrix format used is the ST or "sparse triplet" 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 CR or "sparse compressed row" format, which is similar to the sparse triplet format except that it 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 GNU LGPL license.


MGMRES is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

CC, a data directory which contains examples of the Compressed Column (CC) sparse matrix file format;

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

CR, a data directory which contains examples of the Compressed Row (CR) sparse matrix file format;

HB, a data directory which contains examples of HB files, the Harwell Boeing sparse matrix file format;

HB_READ, a FORTRAN77 library which reads files in the Harwell Boeing (HB) sparse matrix format; This is a simplified interface intended to handle only the most common format, complex unsymmetric assembled (CUA) or real unsymmetric assembled (RUA).

HB_TO_ST, a FORTRAN77 program which converts a sparse matrix from Harwell-Boeing to sparse triplet format.

SPARSEKIT, a FORTRAN77 library which implements operations on sparse matrices, including conversion between various formats, by Yousef Saad.

SPARSEPAK, a FORTRAN77 library which forms an obsolete version of the Waterloo Sparse Matrix Package.

ST, a data directory which contains examples of ST files, the Sparse Triplet format, a sparse matrix file format, storing just (I,J,A(I,J)), and using zero-based indexing.

SUPERLU, FORTRAN77 programs which illustrate how to use the SUPERLU library, which applies a fast direct solution method to solve sparse linear systems, by James Demmel, John Gilbert, and Xiaoye Li.

UMFPACK, a FORTRAN77 library which solves unsymmetric sparse linear systems, by Timothy Davis, Iain Duff.


Original C version by Lili Ju, Mathematics Department, University of South Carolina; FORTRAN77 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:

Examples and Tests:

List of Routines:

You can go up one level to the FORTRAN77 source codes.

Last revised on 30 August 2010.