The HSL Archive contains packages that have been superceded or that we are no longer able to support.

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.

Please remember to cite HSL as:

"**HSL. 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