HSL Software Index
For information on licensing HSL please see our licensing page.
Please remember to cite HSL as:
"HSL. A collection of Fortran codes for large scale scientific computation. http://www.hsl.rl.ac.uk/"
HSL has moved to a rolling release schedule. New and upgraded packages are added continuously.
Select a bundle from the options below, or select an interface to see available packages:
For convenience, packages for use with the following software have been bundled together.

IPOPT
Packages have been bundled in CoinHSL and CoinHSL Archive. To obtain these, please visit our IPOPT page.
GALAHAD
The required HSL packages are available to obtain by visiting the following pages.
All supported packages
Archive packages only

EIGENVALUES AND EIGENVECTORS

EA: Eigenvalues and eigenvectors of real symmetric matrices

EB: Eigenvalues and eigenvectors of general matrices

EP: Parallel eigenvalues and eigenvectors of real symmetric matrices
 EP25
 Sparse symmetric: Lanczos for the spectrum


MATHEMATICAL FUNCTIONS

SORTING

KB: Sorting numbers


LINEAR PROGRAMMING

LINEAR ALGEBRA

MA: Solution of linear systems
 MA38
 Sparse unsymmetric system: unsymmetric multifrontal method
 MA41
 Sparse unsymmetric system: unsymmetric multifrontal method
 MA42
 Sparse unsymmetric system: outofcore frontal method
 HSL_MA42_ELEMENT
 Unsymmetric finiteelement system: outofcore frontal method (real and complex)
 HSL_MA42
 Sparse unsymmetric system: outofcore frontal method
 MA43
 Sparse unsymmetric system: rowbyrow frontal method
 MA44
 Overdetermined linear system: leastsquares solution
 MA46
 Sparse unsymmetric finiteelement system: multifrontal
 MA48
 Sparse unsymmetric system: driver for conventional direct method
 HSL_MA48
 Sparse unsymmetric system: driver for conventional direct method
 MA49
 Sparse overdetermined system: least squares by QR
 MA50
 Sparse unsymmetric system: conventional direct method
 MA51
 Auxiliary for MA48 and MA50: identify ignored rows or columns in the rectangular or rankdeficient case, compute determinant
 MA52
 Sparse unsymmetric finiteelement system: outofcore multiple front method
 HSL_MA54
 Definite symmetric full matrix: partial or complete factorization and solution
 HSL_MA55
 Band symmetric positivedefinite system
 MA57
 Sparse symmetric system: multifrontal method
 HSL_MA57
 Sparse symmetric system: multifrontal method
 MA60
 Iterative refinement and error estimation
 MA61
 Sparse symmetric positivedefinite system: incomplete factorization
 MA62
 Sparse symmetric finiteelement system: outofcore frontal method
 HSL_MA64
 Indefinite symmetric full matrix: partial or complete factorization and solution
 MA65
 Unsymmetric banded system of linear equations
 MA67
 Sparse symmetric system, zeros on diagonal: blocked conventional
 MA69
 Unsymmetric system whose leading subsystem is easy to solve
 HSL_MA69
 Unsymmetric system whose leading subsystem is easy to solve
 MA72
 Sparse symmetric finiteelement system: outofcore multiple front method
 HSL_MA74
 Unsymmetric full matrix: partial or complete factorization and solution
 MA75
 Sparse overdetermined system: weighted least squares
 HSL_MA77
 Sparse symmetric system: multifrontal out of core
 HSL_MA78
 Sparse unsymmetric finiteelement system: multifrontal out of core
 HSL_MA79
 Sparse symmetric system: mixed precision
 HSL_MA85
 Sparse diagonallyweighted linear least squares solver
 HSL_MA86
 Sparse solver for real and complex indefinite matrices using OpenMP
 HSL_MA87
 Sparse Cholesky solver for real/complex matrices using OpenMP
 HSL_MA97
 Bitcompatible parallel sparse symmetric/Hermitian solver using OpenMP

MC: Computations with real matrices and vectors
 MC13
 Permute a sparse matrix to block triangular form
 MC21
 Permute a sparse matrix to put entries on the diagonal
 MC22
 Permute a sparse matrix given row and column permutations
 MC25
 Permute a sparse matrix to block triangular form
 MC26
 Sparse rectangular matrix: compute normal matrix
 MC29
 Sparse unsymmetric matrix: calculate scaling factors
 MC30
 Sparse symmetric matrix: calculate scaling factors
 MC33
 Sparse unsymmetric matrix: permute to bordered block triangular form
 MC34
 Sparse symmetric structure: expand from lower triangle
 HSL_MC34
 Sparse symmetric structure: expand from lower triangle
 MC37
 Sparse symmetric matrix: represent as a sum of element matrices
 MC38
 Sparse rectangular matrix held by columns: transpose
 MC44
 Unassembled finiteelement matrix: generate the element or supervariable connectivity graph
 MC46
 Sparse rectangular matrix held by rows: transpose
 MC47
 Sparse symmetric pattern: approximate minimumdegree ordering allowing dense rows
 MC53
 Generate an ordering for finiteelement matrices within a subdomain
 MC54
 Write a sparse matrix in RutherfordBoeing format
 MC55
 Write a supplementary file in RutherfordBoeing format
 MC56
 Read a file or a supplementary file held in RutherfordBoeing format
 HSL_MC56
 Read a file containing a sparse matrix held in format
 MC57
 Assemble a set of finiteelement matrices
 MC58
 Estimate rank and find independent rows/columns of a sparse unsymmetric or rectangular matrix
 MC59
 Sort a sparse matrix to an ordering by columns
 MC60
 Sparse symmetric pattern: reduce the profile and wavefront
 MC61
 Straightforward interface to MC60
 MC62
 Generate a row ordering for a rowbyrow frontal solver
 MC63
 Generate an element assembly ordering for a frontal solver
 MC64
 Permute and scale a sparse unsymmetric matrix to put large entries on the diagonal
 HSL_MC64
 Permute and scale a sparse unsymmetric or rectangular matrix to put large entries on the diagonal
 HSL_MC65
 Construct and manipulate matrices in compressed sparse row format
 HSL_MC66
 Permute an unsymmetric sparse matrix to singly bordered blocked diagonal form
 MC67
 Refine a profilereducing permutation of a symmetric matrix
 HSL_MC68
 Symmetric sparse matrix: compute elimination orderings
 HSL_MC69
 Matrix format converter
 MC71
 Unsymmetric matrix: estimate 1norm
 MC72
 Full unsymmetric matrix: calculate scaling factors
 HSL_MC73
 Sparse symmetric matrix: compute Fiedler vector and permute to reduce the profile and wavefront
 MC75
 Sparse unsymmetric matrix: estimate condition number
 MC77
 Sparse unsymmetric matrix: calculate scaling factors
 HSL_MC78
 Analysis phase in Cholesky algorithm
 HSL_MC79
 Sparse matrix: maximum matching and DulmageMendelsohn decomposition
 HSL_MC80
 Sparse symmetric matrix: matchingbased ordering and scaling
 HSL_MC81
 Randomized methods for lowrank matrix approximation

ME: Solution of complex linear systems and other calculations for complex matrices
 ME22
 Permute a sparse matrix given row and column permutations
 ME38
 Sparse unsymmetric system: unsymmetric multifrontal method
 ME42
 Sparse unsymmetric system: outofcore frontal method
 ME43
 Sparse unsymmetric system: rowbyrow frontal method
 ME48
 Sparse unsymmetric system: driver for conventional direct method
 ME50
 Sparse unsymmetric system: conventional direct method
 ME57
 Sparse Hermitian or complex symmetric: multifrontal method
 HSL_ME57
 Sparse solver for complex symmetric or Hermitian linear systems
 ME62
 Sparse Hermitian or complex symmetric finiteelement system: outofcore frontal method
 See also
 HSL_MA86 (Parallel sparse symmetric indefinite/Hermitian)
 HSL_MA87 (Parallel sparse Cholesky)
 HSL_MA97 (Bitcompatible parallel sparse symmetric/Hermitian)

MF: Computations with complex matrices and vectors

MI: Iterative methods for sparse matrices
 HSL_MI02
 Symmetric possiblyindefinite system: SYMMBK method
 MI11
 Unsymmetric system: incomplete LU factorization
 MI12
 Unsymmetric system: approximateinverse preconditioner
 HSL_MI13
 Preconditioners for saddlepoint systems
 MI15
 Unsymmetric system: flexible GMRES
 HSL_MI20
 Unsymmetric system: algebraic multigrid preconditioner
 MI21
 Symmetric positivedefinite system: conjugate gradient method
 MI23
 Unsymmetric system: CGS (conjugate gradient squared) method
 MI24
 Unsymmetric system: GMRES (generalized minimal residual) method
 MI25
 Unsymmetric system: BiCG (BiConjugate Gradient) method
 MI26
 Unsymmetric system: BiCGStab (BiConjugate Gradient Stabilized) method
 HSL_MI27
 Projected preconditioned conjugate gradient method for saddlepoint systems
 HSL_MI28
 Symmetric system: incomplete Cholesky factorization
 HSL_MI29
 MPGMRES: an extension of GMRES which allows multiple preconditioners
 HSL_MI30
 Symmetric indefinite saddlepoint system: signed incomplete Cholesky factorization
 HSL_MI31
 Symmetric positivedefinite system: conjugate gradient method, stopping according to the Anorm of the error
 HSL_MI32
 Symmetric possiblyindefinite system: MINRES method
 HSL_MI35
 Sparse least squares: incomplete factorization preconditioner

MP: MPI dependant packages
 HSL_MP01
 MPI constants
 HSL_MP42
 Unsymmetric finiteelement system: multiplefront method, element entry
 HSL_MP43
 Sparse unsymmetric system: multiplefront method, equation entry
 HSL_MP48
 Sparse unsymmetric system: parallel direct method
 HSL_MP54
 Parallel Cholesky solver
 HSL_MP62
 Symmetric finiteelement system: multiplefront method
 HSL_MP82
 Tallskinny QR factorization


NONLINEAR EQUATIONS

NS: Solution of systems of nonlinear equations in several unknowns
 NS23
 Sparse nonlinear overdetermined equations: Marquardt method


INPUT/OUTPUT

OF: File management
 HSL_OF01
 Fortran virtual memory


POLYNOMIAL AND RATIONAL FUNCTIONS

TEST PROGRAM GENERATORS

YM: Generate test programs for chapter M of the library
 YM11
 Generate a random sparse matrix


FORTRAN SYSTEM FACILITES
If you would like us to create a MATLAB interface to one of our other codes, please let us know.

LINEAR ALGEBRA

MA: Solution of linear systems
 HSL_MA48
 Sparse unsymmetric system: driver for conventional direct method
 MA57
 Sparse symmetric system: multifrontal method
 MA75
 Sparse overdetermined system: weighted least squares
 HSL_MA86
 Sparse solver for real and complex indefinite matrices using OpenMP
 HSL_MA87
 Sparse Cholesky solver for real/complex matrices using OpenMP
 HSL_MA97
 Bitcompatible parallel sparse symmetric/Hermitian solver using OpenMP

MC: Computations with real matrices and vectors

ME: Solution of complex linear systems and other calculations for complex matrices

MI: Iterative methods for sparse matrices

If you would like us to create a C interface to one of our other codes, please let us know.

LINEAR ALGEBRA

MA: Solution of linear systems
 HSL_MA48
 Sparse unsymmetric system: driver for conventional direct method
 HSL_MA57
 Sparse symmetric system: multifrontal method
 HSL_MA77
 Sparse symmetric system: multifrontal out of core
 HSL_MA86
 Sparse solver for real and complex indefinite matrices using OpenMP
 HSL_MA87
 Sparse Cholesky solver for real/complex matrices using OpenMP
 HSL_MA97
 Bitcompatible parallel sparse symmetric/Hermitian solver using OpenMP

MC: Computations with real matrices and vectors
 HSL_MC64
 Permute and scale a sparse unsymmetric or rectangular matrix to put large entries on the diagonal
 HSL_MC68
 Symmetric sparse matrix: compute elimination orderings
 HSL_MC69
 Matrix format converter
 HSL_MC78
 Analysis phase in Cholesky algorithm
 HSL_MC79
 Sparse matrix: maximum matching and DulmageMendelsohn decomposition

MI: Iterative methods for sparse matrices

An interface to HSL packages from Julia can be obtained by visiting our JuliaHSL page.
This is a requirement for HSL.jl which is recommended for a simplified interface.