STFC Website

part of UK Research & Innovation

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 an interface to see available packages:
  • EIGENVALUES AND EIGENVECTORS

    • EA: Eigenvalues and eigenvectors of real symmetric matrices

      EA16
      Compute selected eigenpairs using rational Lanczos method
      HSL_EA19
      Sparse symmetric or Hermitian: leftmost eigenpairs
      HSL_EA20
      s-root of a sparse self-adjoint positive-definite pencil
      EA22
      Sparse symmetric: simultaneous iteration
      EA25
      Sparse symmetric: Lanczos for the spectrum
    • EB: Eigenvalues and eigenvectors of general matrices

      EB13
      Sparse unsymmetric: Arnoldi’s method
      EB22
      Sparse unsymmetric: subspace iteration
    • EP: Parallel eigenvalues and eigenvectors of real symmetric matrices

      EP25
      Sparse symmetric: Lanczos for the spectrum
  • MATHEMATICAL FUNCTIONS

    • FA: Random numbers

      FA14
      Uniform distribution
      HSL_FA14
      Uniform distribution
    • FD: Simple Functions

      FD15
      Real-valued machine constants
  • SORTING

    • KB: Sorting numbers

      KB05
      Sort numbers into ascending order using Quicksort
      KB06
      Sort numbers into descending order using Quicksort
      KB07
      Sort numbers into ascending order with indexing using Quicksort
      KB08
      Sort numbers into descending order with indexing using Quicksort
      HSL_KB22
      Sorting reals using the Heapsort method
  • LINEAR PROGRAMMING

    • LA: Linear prgramming, i.e. minimization of a linear function subject to linear constraints

      LA04
      Sparse linear programming: steepest-edge simplex method
      LA15
      Sparse mathematical programming bases: factorize and update
  • 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

      MF29
      Sparse unsymmetric matrix: calculate scaling factors
      MF30
      Sparse symmetric matrix: calculate scaling factors
      MF64
      Permute and scale a sparse complex unsymmetric matrix to put large entries on the diagonal
      MF71
      Unsymmetric matrix: estimate 1-norm
    • 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

    • PA: Zeros of polynomials

      PA16
      Complex coefficients: all roots by the method of Madsen and Reid
      PA17
      Real coefficients: all roots by the method of Madsen and Reid
  • TEST PROGRAM GENERATORS

    • YM: Generate test programs for chapter M of the library

      YM11
      Generate a random sparse matrix
  • FORTRAN SYSTEM FACILITES

    • ZB: Array allocation

      HSL_ZB01
      Reallocate an array
    • ZD: Derived types

      HSL_ZD11
      Derived type for sparse matrix storage schemes

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

      HSL_MC64
      Permute and scale a sparse unsymmetric or rectangular matrix to put large entries on the diagonal
      HSL_MC73
      Sparse symmetric matrix: compute Fiedler vector and permute to reduce the profile and wavefront
      HSL_MC80
      Sparse symmetric matrix: matching-based ordering and scaling
    • ME: Solution of complex linear systems and other calculations for complex matrices

      ME57
      Sparse Hermitian or complex symmetric: multifrontal method
      See also
      HSL_MA86 (Parallel sparse symmetric indefinite/Hermitian)
      HSL_MA87 (Parallel Sparse Cholesky)
      HSL_MA97 (Bit-compatible parallel sparse symmetric/Hermitian)
    • MI: Iterative methods for sparse matrices

      HSL_MI20
      Unsymmetric system: algebraic multigrid preconditioner
      HSL_MI28
      Symmetric system: incomplete Cholesky factorization
      HSL_MI30
      Symmetric indefinite saddle-point system: signed incomplete Cholesky factorization
      HSL_MI35
      Sparse least squares: incomplete factorization preconditioner

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

      HSL_MI20
      Unsymmetric system: algebraic multigrid preconditioner
      HSL_MI28
      Symmetric system: incomplete Cholesky factorization

For convenience, packages for use with the optimization software IPOPT are bundled together in Coin-HSL and Coin-HSL Archive.

To obtain these, please visit our IPOPT page.