For personal use HSL Archive packages are available at no cost (subject to licence). They **may not be redistributed**. For information on licencing HSL Archive packages please see our licencing page.

The list below gives the latest version of each package. In addition, from time to time a PDF version of the library catalogue is produced. The latest version is dated September 2007, and includes a full index.

Please remember to cite HSL as:

"**HSL(2013). A collection of Fortran codes for large scale scientific computation. http://www.hsl.rl.ac.uk**"

- COMPUTER ALGEBRA
- DIFFERENTIAL EQUATIONS
- DA: Runge-Kutta methods for ordinary differential equation initial value problems
- DC: Linear multi-step methods, predictor corrector methods for
ordinary differential equation initial value problems
- DC03
- Ordinary differential equations: Gear's method, sparse Jacobian
- DC04
- Simplified calling sequence for DC03
- DC05
- Ordinary differential equations: Gear's method, reverse communication
- HSL_DC05
- Stiff differential-algebraic equations
- DC06
- Advances Ordinary differential equations: advances DC05 solution forward
- DC07
- Ordinary differential equations: Gear's method, full Jacobian

- DD: Two-point boundary value ordinary differential equation problems
- DP: Parabolic partial differential equation problems

- EIGENVALUES AND EIGENVECTORS
- EA Eigenvalues and eigenvectors of real symmetric matrices
- EA02
- Eigenvalue and vector nearest given estimate
- EA06
- Eigenvalues and vectors using QR
- EA07
- Eigenvalues using QR
- EA08
- Eigenvalues of a tridiagonal symmetric matrix using QR
- EA09
- Eigenvalues and vectors of a tridiagonal matrix using QR
- EA11
- Solves Ax = lambda Bx, with B positive definite
- EA23
- Full symmetric: Jacobi's method

- EB: Eigenvalues and eigenvectors of real general matrices
- EB06
- Eigenvalues and vectors of a real matrix using QR
- EB07
- Eigenvalues of a real matrix using QR
- EB08
- Eigenvalues and vectors of a real upper Hessenberg matrix using QR
- EB09
- Eigenvalues of a real upper Hessenberg matrix using QR
- EB10
- Singular value decomposition of a real matrix

- EC: Eigenvalues and eigenvectors of Hermitian matrices
- EC06
- Eigenvalues and vectors of a complex Hermitian matrix using QR
- EC07
- Eigenvalues of a Hermitian matrix using QR
- EC08
- Eigenvalues and vectors of a Hermitian tridiagonal matrix using QR
- EC09
- Eigenvalues of a Hermitian tridiagonal matrix using QR
- EC12
- Eigenvalues and vectors of a Hermitian tridiagonal matrix using Sturm sequences
- EC23
- Full Hermitian matrix: classical Jacobi's method

- EA Eigenvalues and eigenvectors of real symmetric matrices
- MATHEMATICAL FUNCTIONS
- FA: Random numbers
- FB: Elliptic integrals
- FC: Error function, gamma function, exponential integrals and
related functions
- FC01
- Complex error function
- FC03
- Real gamma function
- FC05
- Beta function
- FC07
- Complementary error function
- FC08
- Real error function
- FC10
- Complex Fresnel integral
- FC11
- Exponential integral
- FC12
- Complex plasma dispersion function
- FC13
- Dawson's integral
- FC14
- Real gamma function
- FC15
- Log modulus of the complex gamma function
- FC16
- Plasma dispersion function

- FD: Simple functions
- FF: Bessel functions
- FF01
- Bessel functions J0 and Y0
- FF02
- Bessel functions J1 and Y1
- FF03
- Bessel functions I0 and K0
- FF04
- Bessel functions I1 and K1
- FF05
- Spherical Bessel functions
- FF06
- Bessel functions: ber, bei, ker, kei, etc.
- FF07
- Bessel functions Inu and Knu

- FG: Functions associated with Quantum Physics
- FP: Supplementary calculations for graph plotting
- FT: Fourier transforms

- GEOMETRICAL PROBLEMS
- GA Transformation of co-ordinates and areas of contours
- GA01
- Convert cartesian to spherical coordinates
- GA02
- Area bounded by contour and side(s) of a triangle
- GA03
- Areas between successive contours
- GA04
- Solid angle subtended by a disc of unit radius
- GA06
- Triangulate arbitrary set of points in a plane
- GA15
- Test if a point is inside a two-dimensional region

- GA Transformation of co-ordinates and areas of contours
- INTEGER VALUED FUNCTIONS
- IC: Character string manipulation functions
- ID: Simple integer functions
- IM: Integer functions for matrices

- SORTING
- KB: Sorting numbers, sorting text, sorting tables
- KC: Sorting and merging intervals on the real line
- KD: Hashing and searching

- LINEAR PROGRAMMING
- LINEAR ALGEBRA
- MA Solution of linear equations, also inverses and determinants
- MA01
- Solves with one or more RHS, simple Gaussian elimination
- MA08
- Form the normal equations for linear least squares
- MA09
- Solve linear least squares using normal equations
- MA10
- Solve symmetric positive definite systems using Cholesky
- MA11
- Solve an overdetermined system in the minimax sense
- MA12
- Solves an upper Hessenberg system using Gaussian elimination
- MA19
- Minimax solution of a system subject to simple bounds
- MA20
- Solves an overdetermined system in the L1 sense
- MA21
- Solution, inversion, determinant, scaling and iterative refinement
- MA22
- As MA21 but for symmetric positive definite systems
- MA24
- As MA21 but for Hermitian positive definite systems
- MA25
- Minimax solution to a system subject to simple bounds
- MA26
- Solve symmetric positive-definite tridiagonal system, Cholesky
- MA27
- Solve sparse symmetric system, not necessarily positive definite
- MA28
- Factorize and solve sparse system of linear equations
- MA29
- Factorize and solve symmetric system of linear equations
- MA30
- Perform LU decomposition of a sparse matrix
- MA32
- Solve sparse system using frontal method
- MA33
- Perform LU decomposition of a sparse, possibly rectangular matrix
- MA35
- Solve a band structured system of linear equations
- MA36
- Solve symmetric positive definite band system
- MA37
- Solve a sparse system, symmetric or nearly symmetric
- MA47
- Solve sparse symmetric indefinite system of linear equations

- MB: Inverses of matrices, also determinants, adjoints and generalized
inverses
- MB01
- Inverse of a real matrix using Gaussian elimination
- MB04
- Given a matrix and its inverse, finds inverse of leading submatrix
- MB05
- Given a matrix and inverse of its leading submatrix, finds its inverse
- MB10
- Generalized inverse of a rectangular matrix
- MB11
- Generalized inverse of a rectangular matrix of full rank

- MC: Computations with real matrices and vectors
- MC04
- Householder transformation of symmetrical matrix to tridiagonal
- MC06
- Apply Gram-Schmidt orthogonalization to vectors
- MC09
- Sparse matrix-vector product
- MC11
- Rank-1 update to positive definite matrix
- MC14
- Transform real matrix to upper Hessenberg form
- MC15
- Scale rows and columns to balance matrix elements
- MC16
- Append n+1 vector to n by n triangular matrix
- MC17
- Delete a column from an n by n triangular matrix
- MC18
- Compute Householder transformation of symmetric matrix
- MC19
- Sparse unsymmetric matrix: calculate scaling factors
- MC20
- Sort a sparse matrix to an ordering by columns
- MC24
- Bound on largest element of sparse matrix during Gaussian elimination
- MC27
- Downdate factorization of positive definite symmetric matrix
- MC31
- Part of MA32
- MC32
- Part of MA32
- MC36
- Read sparse matrix in Harwell-Boeing format from an i/o stream
- MC39
- Sort a sparse matrix to an ordering by columns
- MC40
- Symmetric permutation that reduces profile of sparse matrix with a symmetric sparsity pattern
- MC43
- Ordering for finite element matrix, for frontal solver
- MC49
- Sort a sparse matrix to an ordering by columns
- MC52
- Write sparse matrix in Harwell-Boeing format to an i/o stream
- MC54
- Write a sparse matrix in Rutherford-Boeing format
- MC55
- Write a supplementary file in Rutherford-Boeing format
- MC56
- Read a file or a supplementary file held in Rutherford-Boeing format

- ME: Solution of complex linear equations and other calculations for
complex matrices
- ME05
- Solution, inversion, determinant and iterative refinement
- ME08
- Reduce to tridiagonal Hermitian form
- ME17
- Full unsymmetric matrix: calculate scaling factors
- ME20
- Sort the nonzeros of a sparse complex matrix
- ME24
- Bound on largest element of sparse matrix during Gaussian elimination
- ME27
- Solve sparse Hermitian systems of linear equations
- ME28
- Sparse unsymmetric: driver for conventional direct method
- ME30
- Sparse unsymmetric: conventional direct method
- ME47
- Solve sparse symmetric complex systems of linear equations

- MF: Computations with complex matrices and vectors

- MA Solution of linear equations, also inverses and determinants
- NONLINEAR EQUATIONS
- NB: Solution of a single nonlinear equation in one unknown
- NS: Solution of systems of nonlinear equations in several unknowns

- INPUT AND OUTPUT AIDS
- OA: Printing arrays in tabular form
- OB: Subroutines generating output for the graph plotter
- OC: Graphical output for the line printer or terminal
- OE: Source and text editing facilities
- OE08
- Maintain different source versions in one master file
- OE09
- Construct a master file for OE08
- OE10
- Source editor for card image files
- OE12
- Fortran profiler, inserts statements to count executions
- OE15
- Compares two files containing fixed length records
- OE16
- Performs partial analysis of a Fortran 77 statement
- OE17
- To count and time subroutine calls during execution

- OF: Direct access data set management

- POLYNOMIAL AND RATIONAL FUNCTIONS
- PA: Zeros of polynomials
- PB: Evaluation of polynomials
- PC Generating coefficients of polynomials
- PD: Functions of polynomials
- PD02
- Taylor's series expansion of polynomial reciprocal
- PD03
- New coefficients on a change of variable
- PD04
- Quotient on dividing a polynomial by a linear factor
- PD05
- Taylor series expansion of log [A(x)]
- PD06
- Taylor series expansion of exp [A(x)]
- PD07
- Taylor series expansions of sin [A(x)] and cos [A(x)]
- PD08
- Taylor series expansion of a power of [A(x)]
- PD09
- Taylor series expansion of A(x)B(x)
- PD10
- Taylor series expansion of A(x)/B(x)

- PE: Polynomial and rational approximations, orthogonal polynomials
- PE01
- Given polynomial expressed in terms of Chebyshev polynomials,
- PE02
- Evaluate polynomial expressed in terms of Chebyshev polynomials
- PE03
- Given a polynomial obtain its expansion in terms of Chebyshev polynomials
- PE04
- Finds a rational approximation of a function
- PE06
- Finds the Pade_ approximation of a polynomial
- PE07
- Value of polynomial expressed as linear combination of orthogonal polynomials
- PE08
- Coefficients of polynomial expressed as linear combination of orthogonal polynomials
- PE09
- Value, 1st and 2nd derivative of polynomial expressed as linear combination of orthogonal polynomials
- PE11
- Minimax polynomial approximation to a function over a set of points
- PE12
- Converts polynomial in terms of orthogonal polynomials to one in terms of Chebyshev polynomials

- NUMERICAL INTEGRATION
- QA Integrals of functions of one variable
- QA01
- Integrate using Newton-Coates formulae
- QA02
- Integrate using variable step Simpson's rule
- QA03
- Tabulate an integral function using variable step Simpson's rule
- QA04
- Integrate to specified accuracy using adaptive Gaussian Integration
- QA05
- Integrate using Romberg extrapolation and Trapezoidal rule

- QB: Multi-dimensional integration of functions of several variables
- QC: One-dimensional infinite integrals
- QD: Integration of trigonometric and related functions
- QG: Integration of spline functions
- QG01
- Integrate cubic spline between knot point limits
- QG02
- Integrate cubic spline between general limits
- QG03
- Integrate product of a Gaussian exponential and a piecewise linear function
- QG04
- Integrate (Gaussian exponential) (cubic spline) product

- QM: Estimation of integrals by Monte Carlo methods

- QA Integrals of functions of one variable
- STATISTICS
- SA: Probability functions
- SV: Extraction of statistical information from data fitting subroutines

- INTERPOLATION AND APPROXIMATION
- TA: Generating and printing finite differences
- TB Interpolation by polynomials and spline functions
- TB01 Interpolate the value of an even function
- TB02
- Interpolate the value of a function
- TB03
- Coefficients of piecewise cubic function
- TB04
- Cubic spline that interpolates given function values
- TB06
- Cubic spline interpolation as sum of B-splines
- TB07
- Optimal spline interpolation as sum of B-splines
- TB08
- Computes knots of optimal spline interpolation
- TB15
- Periodic spline that interpolates given function values

- TC: Inverse interpolation
- TD: Estimation of derivatives by finite differences
- TG: Evaluation of spline functions
- TG01
- Value of a cubic spline expressed by values and derivatives at knots
- TG02
- Value and derivatives of a cubic spline expressed by values and derivatives at knots
- TG03
- Value and derivatives of a spline expressed as a sum of B-splines
- TG04
- Values and integrals of B-splines over a given set of knots

- TS: Approximation of functions by spline functions

- OPTIMIZATION AND NONLINEAR DATA FITTING
- VA: Minimization of general functions and sums of squares of
functions of several variables
- VA05
- Minimize a sum of squares, derivatives not needed
- VA06
- Minimum of a general function, derivatives required
- VA08
- Minimize a function of several variables: Fletcher-Reeves method
- VA09
- Minimum of a general function, derivatives required
- VA10
- Minimum of general function, differentiable but derivatives not required
- VA13
- Minimum of general function, BFGS variable metric method
- VA21
- Minimum of general function when 1st and 2nd derivatives available
- VA23
- The VA24 method with user control at a basic level
- VA24
- Minimum of general function, no derivatives
- VA27
- Minimize a sum of squares, derivatives required, Marquardt method
- VA34
- Minimize a function of a huge number of variables: conjugate gradients
- VA35
- Minimize a function: limited-memory BFGS method

- VB: Nonlinear data fitting, minimization of sums of squares of functions and data fitting by spline functions
- VC: Data fitting by polynomials and spline functions
- VC03
- Smooth weighted least squares fit to given data by cubic spline
- VC04
- Least squares fit of a straight line to data
- VC11
- Calculate best weighted least squares fit by a polynomial
- VC15
- Calculate weighted least squares fit by a sum of n decaying exponentials

- VD: Minimization of a function of one variable
- VE: Minimization of a general function subject to linear constraints
- VE01
- Minimize a general function, linear constraints, Davidon's method
- VE02
- Minimize a quadratic function, linear constraints
- VE03
- Minimize a general function, linear and simple bounds
- VE04
- Minimize quadratic function, bounds on the variables
- VE07
- Solves a convex quadratic programming problem
- VE08
- Minimize a sum of finite-element functions
- VE10
- Minimize a sum of squares of element functions
- VE11
- Minimize a differentiable function, linear constraints and bounds
- VE17
- Solve convex quadratic programming problem, linear constraints

- VF: Minimization of a general function subject to nonlinear constraints
- VG: Nonlinear minimax minimization
- VH: Minimization of functions of integer variables

- VA: Minimization of general functions and sums of squares of
functions of several variables
- TEST PROGRAM GENERATORS
- FORTRAN SYSTEM FACILITIES
- ZA: Timing, machine constants, etc
- ZD: Derived types
- ZE: Estimation of rounding errors