What are the differences between MA57 and HSL_MA57 solvers? I'm in an optimization class that will make use of symmetric indefinite factorizations, and I'm trying to learn about the distinction between these two. I know that MATLAB uses the MA57 solver but am unsure of the differences beyond this. Thanks!

  • 3
    $\begingroup$ Based on the documentation and change logs at the site you indicate, the principal difference is that one library (MA57) is written in traditional Fortran 77 style (while also being wrapped by MATLAB), while th other is a fork created to use the more modern Fortran 90 syntax. To get a proper answer you might do better to try and find the recent maintainer. $\endgroup$
    – origimbo
    Commented Jan 18, 2018 at 14:31

2 Answers 2


Nice summary of HSL_MA77 vs MA57 taken from here (p.45) but note that it's different from the original Q:

HSL MA77 [Reid and Scott 2008; 2009b] is also a multifrontal solver that is designed to solve positive definite and indefinite sparse symmetric systems. A different inner kernel is used in each case to achieve the best performance. The fundamental difference between MA57 and HSL MA77 is that the latter is an out-of-core solver capable of holding all the data out of core, enabling the solution of much larger problems. Further, care has been taken to allow the addressing of fronts with 64-bit integers. This is essential as some problems require the factorization of dense matrices containing this many elements.

It exploits the virtual memory system of Reid and Scott [2009a] to minimize overheads due to the out-of-core approach while remaining robust. The ability to work in core is also available, though some overhead from the out-of-core design remains. Despite this, on problems that MA57 is able to solve, the performance of HSL MA77 is favourable in the factorization phase, though the solve phase can be comparatively slow.

While full control over the factorization is still available, the large range of support routines that come with MA57 are not present. The user is expected to supply their own ordering and scaling. This reflects the limited availability of subroutines capable of performing these routines in an out-of-core fashion for large problems.


As correctly pointed out in the comments, HSL_MA57 is just an interface extended wrapper version of MA57.

It is a Fortran 95 encapsulation of its original (Fortran 77) and offers a more feature-rich interface than the original MA57 (in addition to the Fortran 95 syntax). This info can be found in the user documentation of HSL_MA57. Note also, that MA57 is listed under "Calls:" section in HSL_MA57.

At least when writing this answer the date of the most recent MA57 version (Version 3.11.0 - 21st May 2019) is preceded by the one of the most recent HSL_MA57 version (Version 5.2.0 - 2nd August 2013). I am not sure whether this actually indicates that MA57 is "newer".

To me, the most well known user of the HSL_MA57 variant is Ipopt (also used in the paper cited below) while MA57 is used in MATLAB.

Adding to your own answer - a nice comparison + description of many HSL routines and some more (like MUMPS and WSMP ...) can be found here.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.