linpack_d, a Fortran90 code which solves systems of linear equations for a variety of matrix types and storage modes. The matrix and vector data is assumed to be real.
LINPACK has officially been superseded by the LAPACK library. The LAPACK library uses more modern algorithms and code structure. However, the LAPACK library can be extraordinarily complex; what is done in a single LINPACK routine may correspond to 10 or 20 utility routines in LAPACK. This is fine if you treat LAPACK as a black box. But if you wish to learn how the algorithm works, or to adapt it, or to convert the code to another language, this is a real drawback. This is one reason I still keep a copy of LINPACK around.
Versions of LINPACK in various arithmetic precisions are available through the NETLIB web site.
The information on this web page is distributed under the MIT license.
linpack_d is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version and an Octave version and a Python version.
blas1_d, a FORTRAN90 code which contains basic linear algebra routines for vector-vector operations, using double precision real arithmetic.
condition, a FORTRAN90 code which implements methods of computing or estimating the condition number of a matrix.
linpack_bench, a FORTRAN90 code which is a benchmark which measures the time taken by LINPACK to solve a particular linear system.
linpack_z, a FORTRAN90 code which is a version of LINPACK for double precision complex arithmetic.
nms, a FORTRAN90 code which includes LINPACK.
qr_solve, a FORTRAN90 code which computes the least squares solution of a linear system A*x=b.
svd_demo, a FORTRAN90 code which demonstrates the singular value decomposition for a simple example.
test_matrix, a FORTRAN90 code which defines test matrices, some of which have known determinants, eigenvalues and eigenvectors, inverses and so on.
toeplitz_cholesky, a FORTRAN90 code which computes the Cholesky factorization of a nonnegative definite symmetric Toeplitz matrix.