HSL Software Index

For information on licencing HSL 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/"

HSL has moved to a rolling release schedule. New and upgraded packages are added continuously.
A list of recent changes is available.

  • 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 ALGERBA
    • 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_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
    • 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
  • 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 ALGERBA
    • 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

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

  • LINEAR ALGERBA
    • MA: Solution of linear systems
      HSL_MA48
      Sparse unsymmetric system: driver for conventional direct 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