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 Coin-HSL and Coin-HSL 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: out-of-core frontal method
- HSL_MA42_ELEMENT
- Unsymmetric finite-element system: out-of-core frontal method (real and complex)
- HSL_MA42
- Sparse unsymmetric system: out-of-core frontal method
- MA43
- Sparse unsymmetric system: row-by-row frontal method
- MA44
- Over-determined linear system: least-squares solution
- MA46
- Sparse unsymmetric finite-element system: multifrontal
- MA48
- Sparse unsymmetric system: driver for conventional direct method
- HSL_MA48
- Sparse unsymmetric system: driver for conventional direct method
- MA49
- Sparse over-determined 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 rank-deficient case, compute determinant
- MA52
- Sparse unsymmetric finite-element system: out-of-core multiple front method
- HSL_MA54
- Definite symmetric full matrix: partial or complete factorization and solution
- HSL_MA55
- Band symmetric positive-definite system
- MA57
- Sparse symmetric system: multifrontal method
- HSL_MA57
- Sparse symmetric system: multifrontal method
- MA60
- Iterative refinement and error estimation
- MA61
- Sparse symmetric positive-definite system: incomplete factorization
- MA62
- Sparse symmetric finite-element system: out-of-core 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 finite-element system: out-of-core multiple front method
- HSL_MA74
- Unsymmetric full matrix: partial or complete factorization and solution
- MA75
- Sparse over-determined system: weighted least squares
- HSL_MA77
- Sparse symmetric system: multifrontal out of core
- HSL_MA78
- Sparse unsymmetric finite-element system: multifrontal out of core
- HSL_MA79
- Sparse symmetric system: mixed precision
- HSL_MA85
- Sparse diagonally-weighted 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
- Bit-compatible 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 finite-element matrix: generate the element or supervariable connectivity graph
- MC46
- Sparse rectangular matrix held by rows: transpose
- MC47
- Sparse symmetric pattern: approximate minimum-degree ordering allowing dense rows
- MC53
- Generate an ordering for finite-element matrices within a subdomain
- 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
- HSL_MC56
- Read a file containing a sparse matrix held in format
- MC57
- Assemble a set of finite-element 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 row-by-row 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 profile-reducing permutation of a symmetric matrix
- HSL_MC68
- Symmetric sparse matrix: compute elimination orderings
- HSL_MC69
- Matrix format converter
- MC71
- Unsymmetric matrix: estimate 1-norm
- 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 Dulmage-Mendelsohn decomposition
- HSL_MC80
- Sparse symmetric matrix: matching-based ordering and scaling
- HSL_MC81
- Randomized methods for low-rank 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: out-of-core frontal method
- ME43
- Sparse unsymmetric system: row-by-row 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 finite-element system: out-of-core frontal method
- See also
- HSL_MA86 (Parallel sparse symmetric indefinite/Hermitian)
- HSL_MA87 (Parallel sparse Cholesky)
- HSL_MA97 (Bit-compatible parallel sparse symmetric/Hermitian)
-
MF: Computations with complex matrices and vectors
-
MI: Iterative methods for sparse matrices
- HSL_MI02
- Symmetric possibly-indefinite system: SYMMBK method
- MI11
- Unsymmetric system: incomplete LU factorization
- MI12
- Unsymmetric system: approximate-inverse preconditioner
- HSL_MI13
- Preconditioners for saddle-point systems
- MI15
- Unsymmetric system: flexible GMRES
- HSL_MI20
- Unsymmetric system: algebraic multigrid preconditioner
- MI21
- Symmetric positive-definite 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 saddle-point systems
- HSL_MI28
- Symmetric system: incomplete Cholesky factorization
- HSL_MI29
- MPGMRES: an extension of GMRES which allows multiple preconditioners
- HSL_MI30
- Symmetric indefinite saddle-point system: signed incomplete Cholesky factorization
- HSL_MI31
- Symmetric positive-definite system: conjugate gradient method, stopping according to the A-norm of the error
- HSL_MI32
- Symmetric possibly-indefinite system: MINRES method
- HSL_MI35
- Sparse least squares: incomplete factorization preconditioner
-
MP: MPI dependant packages
- HSL_MP01
- MPI constants
- HSL_MP42
- Unsymmetric finite-element system: multiple-front method, element entry
- HSL_MP43
- Sparse unsymmetric system: multiple-front method, equation entry
- HSL_MP48
- Sparse unsymmetric system: parallel direct method
- HSL_MP54
- Parallel Cholesky solver
- HSL_MP62
- Symmetric finite-element system: multiple-front method
- HSL_MP82
- Tall-skinny QR factorization
-
-
NONLINEAR EQUATIONS
-
NS: Solution of systems of nonlinear equations in several unknowns
- NS23
- Sparse nonlinear over-determined 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 over-determined 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
- Bit-compatible 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
- Bit-compatible 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 Dulmage-Mendelsohn 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.