Least Squares Minimization

MINPACK is a FORTRAN77 library which solves systems of nonlinear equations, or carries out the least squares minimization of the residual of a set of linear or nonlinear equations.

MINPACK includes software for solving nonlinear equations and nonlinear least squares problems. Five algorithmic paths each include a core subroutine and an easy-to-use driver. The algorithms proceed either from an analytic specification of the Jacobian matrix or directly from the problem functions. The paths include facilities for systems of equations with a banded Jacobian matrix, for least squares problems with a large amount of data, and for checking the consistency of the Jacobian matrix with the functions.

Given a set of N nonlinear equations in N unknowns, F(X) = 0, Powell's method is used to seek a solution X.

Given a set of M nonlinear functions in N unknowns, F(X), the Levenberg-Marquardt method is used to seek an X which minimizes the L2 norm of the residual ||F(X)||.

The user supplies a subroutine to evaluate the nonlinear function; the jacobian matrix dFi(X)/dXj may also be supplied by the user in a subroutine, or approximated by finite differences.


MINPACK is available in a C++ version and a FORTRAN77 version and a FORTRAN90 version.

Related Data and Programs:

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.

SLATEC, a FORTRAN90 library which includes MINPACK.

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

TEST_OPT, a FORTRAN90 library which defines test problems for the minimization of a scalar function of several variables.

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


  1. Jorge More, Burton Garbow, Kenneth Hillstrom,
    User Guide for MINPACK-1,
    Technical Report ANL-80-74,
    Argonne National Laboratory, 1980.
  2. Jorge More, Danny Sorenson, Burton Garbow, Kenneth Hillstrom,
    The MINPACK Project,
    in Sources and Development of Mathematical Software,
    edited by Wayne Cowell,
    Prentice-Hall, 1984,
    ISBN: 0-13-823501-5,
    LC: QA76.95.S68.

Source Code:

Examples and Tests:

List of Routines:

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

Last revised on 07 April 2010.