Least Squares Routines

LAWSON is a FORTRAN77 library which can solve least squares problems.

The most common least squares problems considers an overdetermined M by N linear system A*X=B. A least squares solution X is sought which has the property that, although it generally is not a solution of the system, it is the best approximation to a solution, in the sense that it minimizes the L2 norm of the residual R=A*X-B.

In some cases, a unique solution to the system A*X=B will exist, and in that case the least squares solution will coincide with what is ordinarily meant by a solution.

In underdetermined cases, where multiple solutions exist, the least squares solution is usually taken to be that solution X which has minimum L2 norm, that is, which minimizes ||X||.

The original FORTRAN77 source code is available through NETLIB at


LAWSON is available in a FORTRAN77 version and a FORTRAN90 version.

Related Data and Programs:

BRENT, a FORTRAN77 library which contains Richard Brent's routines for finding the zero, local minimizer, or global minimizer of a scalar function of a scalar argument, without the use of derivative information.

BVLS, a FORTRAN90 library which applies least squares methods to solve a linear system for which lower and upper constraints may have been placed on every variable.

DQED, a FORTRAN77 library which solves constrained least squares problems.

NL2SOL, a FORTRAN77 library which implements an adaptive nonlinear least-squares algorithm.

PRAXIS, a FORTRAN77 library which minimizes a scalar function of several variables.

QR_SOLVE, a FORTRAN77 library which computes the least squares solution of a linear system A*x=b.

TEST_LS, a FORTRAN77 library which implements linear least squares test problems of the form A*x=b.

TOMS581, a FORTRAN77 library which implements an improved algorithm for computing the singular value decomposition (SVD) of a rectangular matrix; this is ACM TOMS algorithm 571, by Tony Chan.

TOMS611, a FORTRAN77 library which seeks the minimizer of a scalar functional of multiple variables.


  1. Gene Golub, Christian Reinsch,
    Singular Value Decomposition and Least Squares Solutions,
    Numerische Mathematik,
    Volume 14, Number 5, April 1970, pages 403-420.
  2. Charles Lawson, Richard Hanson,
    Solving Least Squares Problems,
    Revised edition,
    SIAM, 1995,
    ISBN: 0898713560,
    LC: QA275.L38.

Source Code:

Examples and Tests:

LAWSON_PRB1 demonstrates algorithms HFTI and HS1 for solving least squares problems, and algorithm COV for computing the associated covariance matrix.

LAWSON_PRB2 demonstrates algorithms HFTI for solving least squares problems, and algorithm COV for computing the associated unscaled covariance matrix.

LAWSON_PRB3 demonstrates the use of routine SVDRS to compute the singular value decomposition of a matrix, and to solve a related least squares linear system.

LAWSON_PRB4 demonstrates singular value analysis with SVA.

LAWSON_PRB5 demonstrates the BNDACC and BNDSOL routines to handle least squares problems with a banded matrix.

LAWSON_PRB6 demonstrates the LDP routine.

List of Routines:

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

Last revised on 20 October 2008.