HSL 2023
The year 2023 marks the 60th anniversary of the first release in 1963 of what was then the Harwell Subroutine Library. Although originally a general-purpose mathematical library, in recent times HSL has specialised in providing state-of-the-art routines for handling large-scale sparse matrix calculations efficiently and reliably. Jennifer Scott has produced a brief historical account of HSL@60.
Highlights of HSL 2023 include:
- HSL_MA85 - Solve large-scale diagonally-weighted linear least squares problems.
- HSL_MI35 - An incomplete factorization preconditioner for weighted sparse linear least squares problems.
- HSL_MC81 - Use randomized algorithms to compute a low-rank matrix approximation for SPD or general m x n matrices.
- New C interfaces are available for HSL_MA57 (solve sparse symmetric system via a multifrontal method) and HSL_MI28 (incomplete Cholesky factorization preconditioner).
- All MATLAB interfaces are now available on Windows and MacOS.
- JuliaHSL - an interface to HSL packages from Julia.
- CoinHSL - improved support for non-Linux users of the HSL solvers within IPOPT.
HSL 2023 is freely available to academic staff and students for personal use in teaching and research. Commercial licences are also available. You can download individual pacakages from the HSL Catalogue.
We hope you enjoy using HSL2023, and welcome any feedback or suggestions at hsl@stfc.ac.uk.
The HSL Team
Tyrone Rees, Jennifer Scott, Andrew Lister, Jaroslav Fowkes,
Hussam Al Daas, Niall Bootland, Iain Duff, Jessica Farmer,
John Reid, Nick Gould, Alexis Montoison.
Full release notes
New codes
- hsl_ma85 (Sparse diagonally-weighted linear least squares solver)
- hsl_mc81 (Randomized methods for low-rank matrix approximation)
- hsl_mi30 (Symmetric indefinite saddle-point system: signed incomplete Cholesky factorization)
- hsl_mi32 (Symmetric possibly-indefinite system: MINRES method)
- hsl_mi35 (Sparse least squares: incomplete factorization preconditioner)
- hsl_mp82 (Tall-skinny QR factorization)
Major updates
- ep25 (removed single precision support)
- ma49 (new version of the code)
- hsl_ma42_element (removed single precision support)
- hsl_ma57 (new C interface with all subroutines implemented and bug fixes)
- hsl_mc80 (MATLAB interface added)
- hsl_mi20 (support for use as solver, new interface for data types, improved MATLAB support)
- hsl_mi28 (updated code and new C and MATLAB interfaces)
- ns23 (removed single precision support)
- pa17 (removed single precision support)
Minor updates
- ea16 (spec test changes)
- hsl_ea19 (minor spec test changes)
- hsl_ea20 (bug fix)
- eb13 (spec test changes)
- eb22 (spec test changes)
- ma38 (bug fixes)
- ma46 (spec test changes)
- hsl_ma48 (bug fixes and "Matlab on Windows or MacOS")
- hsl_ma54 (bug fix)
- hsl_ma55 (bug fix)
- ma57 (bug fixes and "Matlab on Windows or MacOS")
- hsl_ma64 (minor doc error fix)
- ma75 ("Matlab on Windows or MacOS")
- hsl_ma77 (bug fixes)
- hsl_ma78 (very minor changes)
- hsl_ma86 (bug fixes and "Matlab on Windows or MacOS")
- hsl_ma87 (various bug fixes and "Matlab on Windows or MacOS")
- hsl_ma97 (bug fixes and "Matlab on Windows or MacOS")
- hsl_mc64 (mostly bug fixes and "Matlab on Windows or MacOS")
- hsl_mc66 (bug fixes)
- hsl_mc68 (bug fixes)
- hsl_mc69 (bug fixes)
- hsl_mc73 (bug fixes and "Matlab on Windows or MacOS")
- hsl_mc78 (mostly bug fixes)
- hsl_mc79 (minor doc typo fix)
- me38 (bug fixes)
- me42 (spec test changes)
- me48 (spec test changes)
- me50 (bug fix)
- me57 (spec test changes and "Matlab on Windows or MacOS")
- hsl_me57 (bug fixes)
- mi24 (bug fixes)
- hsl_mi27 (make specs portable)
- hsl_mi29 (bug fixes)
- hsl_mi31 (make specs portable)
- hsl_mp01 (fix printing in spec and test examples)
- hsl_mp43 (bug fix)
- hsl_mp48 (bug fixes)
- hsl_mp54 (bug fixes)
- hsl_mp62 (bug fix)
- hsl_of01 (bug fix)