From 486f1a91e5b430a068e8eceaa6b8578a7becbc21 Mon Sep 17 00:00:00 2001
From: Alexis Montoison <alexis.montoison@polymtl.ca>
Date: Tue, 24 Dec 2024 15:54:01 +0100
Subject: [PATCH] Add generic wrappers for hsl_subset

---
 .gitignore                       |    5 +-
 Project.toml                     |    2 +
 gen/analyzer.jl                  |  244 ++++---
 src/Fortran/fa01.jl              |   63 --
 src/Fortran/fa04.jl              |   63 --
 src/Fortran/fa14.jl              |   79 --
 src/Fortran/fd15.jl              |   15 -
 src/Fortran/hsl_subset/fa01.jl   |   95 +++
 src/Fortran/hsl_subset/fa04.jl   |   95 +++
 src/Fortran/hsl_subset/fa14.jl   |  119 +++
 src/Fortran/hsl_subset/fd15.jl   |   23 +
 src/Fortran/hsl_subset/kb07.jl   |   24 +
 src/Fortran/hsl_subset/kb21.jl   |  192 +++++
 src/Fortran/hsl_subset/la04.jl   |  430 +++++++++++
 src/Fortran/hsl_subset/la15.jl   |  202 ++++++
 src/Fortran/hsl_subset/lapack.jl |    1 +
 src/Fortran/hsl_subset/ma27.jl   |  716 +++++++++++++++++++
 src/Fortran/hsl_subset/ma28.jl   |  246 +++++++
 src/Fortran/hsl_subset/ma30.jl   |  197 +++++
 src/Fortran/hsl_subset/ma33.jl   |  248 +++++++
 src/Fortran/hsl_subset/ma57.jl   | 1153 ++++++++++++++++++++++++++++++
 src/Fortran/hsl_subset/ma61.jl   |  379 ++++++++++
 src/Fortran/hsl_subset/mc13.jl   |   80 +++
 src/Fortran/hsl_subset/mc19.jl   |   35 +
 src/Fortran/hsl_subset/mc20.jl   |   62 ++
 src/Fortran/hsl_subset/mc21.jl   |   83 +++
 src/Fortran/hsl_subset/mc22.jl   |   35 +
 src/Fortran/hsl_subset/mc23.jl   |   44 ++
 src/Fortran/hsl_subset/mc24.jl   |   32 +
 src/Fortran/hsl_subset/mc29.jl   |   38 +
 src/Fortran/hsl_subset/mc30.jl   |   35 +
 src/Fortran/hsl_subset/mc34.jl   |   29 +
 src/Fortran/hsl_subset/mc37.jl   |  103 +++
 src/Fortran/hsl_subset/mc47.jl   |  116 +++
 src/Fortran/hsl_subset/mc49.jl   |  125 ++++
 src/Fortran/hsl_subset/mc54.jl   |  164 +++++
 src/Fortran/hsl_subset/mc57.jl   |   85 +++
 src/Fortran/hsl_subset/mc59.jl   |  271 +++++++
 src/Fortran/hsl_subset/mc60.jl   |  552 ++++++++++++++
 src/Fortran/hsl_subset/mc61.jl   |   74 ++
 src/Fortran/hsl_subset/mc64.jl   |  428 +++++++++++
 src/Fortran/hsl_subset/mc71.jl   |   33 +
 src/Fortran/hsl_subset/mc77.jl   |  834 +++++++++++++++++++++
 src/Fortran/hsl_subset/mi21.jl   |   79 ++
 src/Fortran/hsl_subset/mi24.jl   |   85 +++
 src/Fortran/hsl_subset/mi26.jl   |   79 ++
 src/Fortran/hsl_subset/ym01.jl   |   77 ++
 src/Fortran/hsl_subset/ym11.jl   |  101 +++
 src/Fortran/kb07.jl              |   23 -
 src/Fortran/la04.jl              |  266 -------
 src/Fortran/la15.jl              |  120 ----
 src/Fortran/{ => libhsl}/btf.jl  |    0
 src/Fortran/{ => libhsl}/ea16.jl |    0
 src/Fortran/{ => libhsl}/ea22.jl |    0
 src/Fortran/{ => libhsl}/ea25.jl |    0
 src/Fortran/{ => libhsl}/eb13.jl |    0
 src/Fortran/{ => libhsl}/eb22.jl |    0
 src/Fortran/{ => libhsl}/ep25.jl |    0
 src/Fortran/libhsl/fa01.jl       |   31 +
 src/Fortran/libhsl/fa04.jl       |   31 +
 src/Fortran/libhsl/fa14.jl       |   39 +
 src/Fortran/{ => libhsl}/fd05.jl |    0
 src/Fortran/libhsl/fd15.jl       |    7 +
 src/Fortran/{ => libhsl}/id05.jl |    0
 src/Fortran/{ => libhsl}/kb05.jl |    0
 src/Fortran/{ => libhsl}/kb06.jl |    0
 src/Fortran/libhsl/kb07.jl       |   11 +
 src/Fortran/{ => libhsl}/kb08.jl |    0
 src/Fortran/libhsl/la04.jl       |  123 ++++
 src/Fortran/libhsl/la15.jl       |   57 ++
 src/Fortran/libhsl/ma27.jl       |  194 +++++
 src/Fortran/libhsl/ma28.jl       |   65 ++
 src/Fortran/libhsl/ma30.jl       |   55 ++
 src/Fortran/libhsl/ma33.jl       |   68 ++
 src/Fortran/{ => libhsl}/ma38.jl |    0
 src/Fortran/{ => libhsl}/ma41.jl |    0
 src/Fortran/{ => libhsl}/ma42.jl |    0
 src/Fortran/{ => libhsl}/ma43.jl |    0
 src/Fortran/{ => libhsl}/ma44.jl |    0
 src/Fortran/{ => libhsl}/ma46.jl |    0
 src/Fortran/{ => libhsl}/ma48.jl |    0
 src/Fortran/{ => libhsl}/ma49.jl |    0
 src/Fortran/{ => libhsl}/ma50.jl |    0
 src/Fortran/{ => libhsl}/ma51.jl |    0
 src/Fortran/{ => libhsl}/ma52.jl |    0
 src/Fortran/libhsl/ma57.jl       |  319 +++++++++
 src/Fortran/{ => libhsl}/ma60.jl |    0
 src/Fortran/libhsl/ma61.jl       |  109 +++
 src/Fortran/{ => libhsl}/ma62.jl |    0
 src/Fortran/{ => libhsl}/ma65.jl |    0
 src/Fortran/{ => libhsl}/ma67.jl |    0
 src/Fortran/{ => libhsl}/ma69.jl |    0
 src/Fortran/{ => libhsl}/ma72.jl |    0
 src/Fortran/{ => libhsl}/ma75.jl |    0
 src/Fortran/libhsl/mc13.jl       |   23 +
 src/Fortran/libhsl/mc19.jl       |    9 +
 src/Fortran/libhsl/mc20.jl       |   19 +
 src/Fortran/libhsl/mc21.jl       |   21 +
 src/Fortran/{ => libhsl}/mc22.jl |   12 -
 src/Fortran/libhsl/mc23.jl       |   11 +
 src/Fortran/libhsl/mc24.jl       |    9 +
 src/Fortran/{ => libhsl}/mc25.jl |    0
 src/Fortran/{ => libhsl}/mc26.jl |    0
 src/Fortran/libhsl/mc29.jl       |   11 +
 src/Fortran/libhsl/mc30.jl       |   10 +
 src/Fortran/{ => libhsl}/mc33.jl |    0
 src/Fortran/libhsl/mc34.jl       |    9 +
 src/Fortran/{ => libhsl}/mc36.jl |    0
 src/Fortran/libhsl/mc37.jl       |   26 +
 src/Fortran/{ => libhsl}/mc38.jl |    0
 src/Fortran/{ => libhsl}/mc44.jl |    0
 src/Fortran/{ => libhsl}/mc46.jl |    0
 src/Fortran/libhsl/mc47.jl       |   33 +
 src/Fortran/{ => libhsl}/mc49.jl |   42 --
 src/Fortran/{ => libhsl}/mc53.jl |    0
 src/Fortran/{ => libhsl}/mc54.jl |   54 --
 src/Fortran/{ => libhsl}/mc55.jl |    0
 src/Fortran/{ => libhsl}/mc56.jl |    0
 src/Fortran/libhsl/mc57.jl       |   23 +
 src/Fortran/{ => libhsl}/mc58.jl |    0
 src/Fortran/{ => libhsl}/mc59.jl |   85 ---
 src/Fortran/libhsl/mc60.jl       |  157 ++++
 src/Fortran/libhsl/mc61.jl       |   21 +
 src/Fortran/{ => libhsl}/mc62.jl |    0
 src/Fortran/{ => libhsl}/mc63.jl |    0
 src/Fortran/libhsl/mc64.jl       |  125 ++++
 src/Fortran/{ => libhsl}/mc67.jl |    0
 src/Fortran/libhsl/mc71.jl       |    9 +
 src/Fortran/{ => libhsl}/mc72.jl |    0
 src/Fortran/{ => libhsl}/mc75.jl |    0
 src/Fortran/{ => libhsl}/mc77.jl |  260 -------
 src/Fortran/{ => libhsl}/me20.jl |    0
 src/Fortran/{ => libhsl}/me22.jl |    0
 src/Fortran/{ => libhsl}/me38.jl |    0
 src/Fortran/{ => libhsl}/me42.jl |    0
 src/Fortran/{ => libhsl}/me43.jl |    0
 src/Fortran/{ => libhsl}/me48.jl |    0
 src/Fortran/{ => libhsl}/me50.jl |    0
 src/Fortran/{ => libhsl}/me57.jl |    0
 src/Fortran/{ => libhsl}/me62.jl |    0
 src/Fortran/{ => libhsl}/mf29.jl |    0
 src/Fortran/{ => libhsl}/mf30.jl |    0
 src/Fortran/{ => libhsl}/mf36.jl |    0
 src/Fortran/{ => libhsl}/mf64.jl |    0
 src/Fortran/{ => libhsl}/mf71.jl |    0
 src/Fortran/{ => libhsl}/mi11.jl |    0
 src/Fortran/{ => libhsl}/mi12.jl |    0
 src/Fortran/{ => libhsl}/mi15.jl |    0
 src/Fortran/libhsl/mi21.jl       |   23 +
 src/Fortran/{ => libhsl}/mi23.jl |    0
 src/Fortran/libhsl/mi24.jl       |   26 +
 src/Fortran/{ => libhsl}/mi25.jl |    0
 src/Fortran/libhsl/mi26.jl       |   23 +
 src/Fortran/{ => libhsl}/ns23.jl |    0
 src/Fortran/{ => libhsl}/pa16.jl |    0
 src/Fortran/{ => libhsl}/pa17.jl |    0
 src/Fortran/{ => libhsl}/td22.jl |    0
 src/Fortran/libhsl/ym01.jl       |   19 +
 src/Fortran/{ => libhsl}/ym11.jl |   32 -
 src/Fortran/ma27.jl              |  414 -----------
 src/Fortran/ma28.jl              |  145 ----
 src/Fortran/ma30.jl              |  119 ---
 src/Fortran/ma33.jl              |  148 ----
 src/Fortran/ma57.jl              |  677 ------------------
 src/Fortran/ma61.jl              |  230 ------
 src/Fortran/mc13.jl              |   49 --
 src/Fortran/mc19.jl              |   21 -
 src/Fortran/mc20.jl              |   41 --
 src/Fortran/mc21.jl              |   47 --
 src/Fortran/mc23.jl              |   25 -
 src/Fortran/mc24.jl              |   21 -
 src/Fortran/mc29.jl              |   25 -
 src/Fortran/mc30.jl              |   22 -
 src/Fortran/mc34.jl              |   19 -
 src/Fortran/mc37.jl              |   58 --
 src/Fortran/mc47.jl              |   73 --
 src/Fortran/mc57.jl              |   51 --
 src/Fortran/mc60.jl              |  335 ---------
 src/Fortran/mc61.jl              |   45 --
 src/Fortran/mc64.jl              |  265 -------
 src/Fortran/mc71.jl              |   21 -
 src/Fortran/mi21.jl              |   48 --
 src/Fortran/mi24.jl              |   56 --
 src/Fortran/mi26.jl              |   48 --
 src/Fortran/openmp.jl            |    2 +
 src/Fortran/ym01.jl              |   43 --
 src/HSL.jl                       |   10 +-
 src/wrappers.jl                  |  257 ++++---
 188 files changed, 9835 insertions(+), 4360 deletions(-)
 delete mode 100644 src/Fortran/fa01.jl
 delete mode 100644 src/Fortran/fa04.jl
 delete mode 100644 src/Fortran/fa14.jl
 delete mode 100644 src/Fortran/fd15.jl
 create mode 100644 src/Fortran/hsl_subset/fa01.jl
 create mode 100644 src/Fortran/hsl_subset/fa04.jl
 create mode 100644 src/Fortran/hsl_subset/fa14.jl
 create mode 100644 src/Fortran/hsl_subset/fd15.jl
 create mode 100644 src/Fortran/hsl_subset/kb07.jl
 create mode 100644 src/Fortran/hsl_subset/kb21.jl
 create mode 100644 src/Fortran/hsl_subset/la04.jl
 create mode 100644 src/Fortran/hsl_subset/la15.jl
 create mode 100644 src/Fortran/hsl_subset/lapack.jl
 create mode 100644 src/Fortran/hsl_subset/ma27.jl
 create mode 100644 src/Fortran/hsl_subset/ma28.jl
 create mode 100644 src/Fortran/hsl_subset/ma30.jl
 create mode 100644 src/Fortran/hsl_subset/ma33.jl
 create mode 100644 src/Fortran/hsl_subset/ma57.jl
 create mode 100644 src/Fortran/hsl_subset/ma61.jl
 create mode 100644 src/Fortran/hsl_subset/mc13.jl
 create mode 100644 src/Fortran/hsl_subset/mc19.jl
 create mode 100644 src/Fortran/hsl_subset/mc20.jl
 create mode 100644 src/Fortran/hsl_subset/mc21.jl
 create mode 100644 src/Fortran/hsl_subset/mc22.jl
 create mode 100644 src/Fortran/hsl_subset/mc23.jl
 create mode 100644 src/Fortran/hsl_subset/mc24.jl
 create mode 100644 src/Fortran/hsl_subset/mc29.jl
 create mode 100644 src/Fortran/hsl_subset/mc30.jl
 create mode 100644 src/Fortran/hsl_subset/mc34.jl
 create mode 100644 src/Fortran/hsl_subset/mc37.jl
 create mode 100644 src/Fortran/hsl_subset/mc47.jl
 create mode 100644 src/Fortran/hsl_subset/mc49.jl
 create mode 100644 src/Fortran/hsl_subset/mc54.jl
 create mode 100644 src/Fortran/hsl_subset/mc57.jl
 create mode 100644 src/Fortran/hsl_subset/mc59.jl
 create mode 100644 src/Fortran/hsl_subset/mc60.jl
 create mode 100644 src/Fortran/hsl_subset/mc61.jl
 create mode 100644 src/Fortran/hsl_subset/mc64.jl
 create mode 100644 src/Fortran/hsl_subset/mc71.jl
 create mode 100644 src/Fortran/hsl_subset/mc77.jl
 create mode 100644 src/Fortran/hsl_subset/mi21.jl
 create mode 100644 src/Fortran/hsl_subset/mi24.jl
 create mode 100644 src/Fortran/hsl_subset/mi26.jl
 create mode 100644 src/Fortran/hsl_subset/ym01.jl
 create mode 100644 src/Fortran/hsl_subset/ym11.jl
 delete mode 100644 src/Fortran/kb07.jl
 delete mode 100644 src/Fortran/la04.jl
 delete mode 100644 src/Fortran/la15.jl
 rename src/Fortran/{ => libhsl}/btf.jl (100%)
 rename src/Fortran/{ => libhsl}/ea16.jl (100%)
 rename src/Fortran/{ => libhsl}/ea22.jl (100%)
 rename src/Fortran/{ => libhsl}/ea25.jl (100%)
 rename src/Fortran/{ => libhsl}/eb13.jl (100%)
 rename src/Fortran/{ => libhsl}/eb22.jl (100%)
 rename src/Fortran/{ => libhsl}/ep25.jl (100%)
 create mode 100644 src/Fortran/libhsl/fa01.jl
 create mode 100644 src/Fortran/libhsl/fa04.jl
 create mode 100644 src/Fortran/libhsl/fa14.jl
 rename src/Fortran/{ => libhsl}/fd05.jl (100%)
 create mode 100644 src/Fortran/libhsl/fd15.jl
 rename src/Fortran/{ => libhsl}/id05.jl (100%)
 rename src/Fortran/{ => libhsl}/kb05.jl (100%)
 rename src/Fortran/{ => libhsl}/kb06.jl (100%)
 create mode 100644 src/Fortran/libhsl/kb07.jl
 rename src/Fortran/{ => libhsl}/kb08.jl (100%)
 create mode 100644 src/Fortran/libhsl/la04.jl
 create mode 100644 src/Fortran/libhsl/la15.jl
 create mode 100644 src/Fortran/libhsl/ma27.jl
 create mode 100644 src/Fortran/libhsl/ma28.jl
 create mode 100644 src/Fortran/libhsl/ma30.jl
 create mode 100644 src/Fortran/libhsl/ma33.jl
 rename src/Fortran/{ => libhsl}/ma38.jl (100%)
 rename src/Fortran/{ => libhsl}/ma41.jl (100%)
 rename src/Fortran/{ => libhsl}/ma42.jl (100%)
 rename src/Fortran/{ => libhsl}/ma43.jl (100%)
 rename src/Fortran/{ => libhsl}/ma44.jl (100%)
 rename src/Fortran/{ => libhsl}/ma46.jl (100%)
 rename src/Fortran/{ => libhsl}/ma48.jl (100%)
 rename src/Fortran/{ => libhsl}/ma49.jl (100%)
 rename src/Fortran/{ => libhsl}/ma50.jl (100%)
 rename src/Fortran/{ => libhsl}/ma51.jl (100%)
 rename src/Fortran/{ => libhsl}/ma52.jl (100%)
 create mode 100644 src/Fortran/libhsl/ma57.jl
 rename src/Fortran/{ => libhsl}/ma60.jl (100%)
 create mode 100644 src/Fortran/libhsl/ma61.jl
 rename src/Fortran/{ => libhsl}/ma62.jl (100%)
 rename src/Fortran/{ => libhsl}/ma65.jl (100%)
 rename src/Fortran/{ => libhsl}/ma67.jl (100%)
 rename src/Fortran/{ => libhsl}/ma69.jl (100%)
 rename src/Fortran/{ => libhsl}/ma72.jl (100%)
 rename src/Fortran/{ => libhsl}/ma75.jl (100%)
 create mode 100644 src/Fortran/libhsl/mc13.jl
 create mode 100644 src/Fortran/libhsl/mc19.jl
 create mode 100644 src/Fortran/libhsl/mc20.jl
 create mode 100644 src/Fortran/libhsl/mc21.jl
 rename src/Fortran/{ => libhsl}/mc22.jl (63%)
 create mode 100644 src/Fortran/libhsl/mc23.jl
 create mode 100644 src/Fortran/libhsl/mc24.jl
 rename src/Fortran/{ => libhsl}/mc25.jl (100%)
 rename src/Fortran/{ => libhsl}/mc26.jl (100%)
 create mode 100644 src/Fortran/libhsl/mc29.jl
 create mode 100644 src/Fortran/libhsl/mc30.jl
 rename src/Fortran/{ => libhsl}/mc33.jl (100%)
 create mode 100644 src/Fortran/libhsl/mc34.jl
 rename src/Fortran/{ => libhsl}/mc36.jl (100%)
 create mode 100644 src/Fortran/libhsl/mc37.jl
 rename src/Fortran/{ => libhsl}/mc38.jl (100%)
 rename src/Fortran/{ => libhsl}/mc44.jl (100%)
 rename src/Fortran/{ => libhsl}/mc46.jl (100%)
 create mode 100644 src/Fortran/libhsl/mc47.jl
 rename src/Fortran/{ => libhsl}/mc49.jl (54%)
 rename src/Fortran/{ => libhsl}/mc53.jl (100%)
 rename src/Fortran/{ => libhsl}/mc54.jl (67%)
 rename src/Fortran/{ => libhsl}/mc55.jl (100%)
 rename src/Fortran/{ => libhsl}/mc56.jl (100%)
 create mode 100644 src/Fortran/libhsl/mc57.jl
 rename src/Fortran/{ => libhsl}/mc58.jl (100%)
 rename src/Fortran/{ => libhsl}/mc59.jl (66%)
 create mode 100644 src/Fortran/libhsl/mc60.jl
 create mode 100644 src/Fortran/libhsl/mc61.jl
 rename src/Fortran/{ => libhsl}/mc62.jl (100%)
 rename src/Fortran/{ => libhsl}/mc63.jl (100%)
 create mode 100644 src/Fortran/libhsl/mc64.jl
 rename src/Fortran/{ => libhsl}/mc67.jl (100%)
 create mode 100644 src/Fortran/libhsl/mc71.jl
 rename src/Fortran/{ => libhsl}/mc72.jl (100%)
 rename src/Fortran/{ => libhsl}/mc75.jl (100%)
 rename src/Fortran/{ => libhsl}/mc77.jl (62%)
 rename src/Fortran/{ => libhsl}/me20.jl (100%)
 rename src/Fortran/{ => libhsl}/me22.jl (100%)
 rename src/Fortran/{ => libhsl}/me38.jl (100%)
 rename src/Fortran/{ => libhsl}/me42.jl (100%)
 rename src/Fortran/{ => libhsl}/me43.jl (100%)
 rename src/Fortran/{ => libhsl}/me48.jl (100%)
 rename src/Fortran/{ => libhsl}/me50.jl (100%)
 rename src/Fortran/{ => libhsl}/me57.jl (100%)
 rename src/Fortran/{ => libhsl}/me62.jl (100%)
 rename src/Fortran/{ => libhsl}/mf29.jl (100%)
 rename src/Fortran/{ => libhsl}/mf30.jl (100%)
 rename src/Fortran/{ => libhsl}/mf36.jl (100%)
 rename src/Fortran/{ => libhsl}/mf64.jl (100%)
 rename src/Fortran/{ => libhsl}/mf71.jl (100%)
 rename src/Fortran/{ => libhsl}/mi11.jl (100%)
 rename src/Fortran/{ => libhsl}/mi12.jl (100%)
 rename src/Fortran/{ => libhsl}/mi15.jl (100%)
 create mode 100644 src/Fortran/libhsl/mi21.jl
 rename src/Fortran/{ => libhsl}/mi23.jl (100%)
 create mode 100644 src/Fortran/libhsl/mi24.jl
 rename src/Fortran/{ => libhsl}/mi25.jl (100%)
 create mode 100644 src/Fortran/libhsl/mi26.jl
 rename src/Fortran/{ => libhsl}/ns23.jl (100%)
 rename src/Fortran/{ => libhsl}/pa16.jl (100%)
 rename src/Fortran/{ => libhsl}/pa17.jl (100%)
 rename src/Fortran/{ => libhsl}/td22.jl (100%)
 create mode 100644 src/Fortran/libhsl/ym01.jl
 rename src/Fortran/{ => libhsl}/ym11.jl (67%)
 delete mode 100644 src/Fortran/ma27.jl
 delete mode 100644 src/Fortran/ma28.jl
 delete mode 100644 src/Fortran/ma30.jl
 delete mode 100644 src/Fortran/ma33.jl
 delete mode 100644 src/Fortran/ma57.jl
 delete mode 100644 src/Fortran/ma61.jl
 delete mode 100644 src/Fortran/mc13.jl
 delete mode 100644 src/Fortran/mc19.jl
 delete mode 100644 src/Fortran/mc20.jl
 delete mode 100644 src/Fortran/mc21.jl
 delete mode 100644 src/Fortran/mc23.jl
 delete mode 100644 src/Fortran/mc24.jl
 delete mode 100644 src/Fortran/mc29.jl
 delete mode 100644 src/Fortran/mc30.jl
 delete mode 100644 src/Fortran/mc34.jl
 delete mode 100644 src/Fortran/mc37.jl
 delete mode 100644 src/Fortran/mc47.jl
 delete mode 100644 src/Fortran/mc57.jl
 delete mode 100644 src/Fortran/mc60.jl
 delete mode 100644 src/Fortran/mc61.jl
 delete mode 100644 src/Fortran/mc64.jl
 delete mode 100644 src/Fortran/mc71.jl
 delete mode 100644 src/Fortran/mi21.jl
 delete mode 100644 src/Fortran/mi24.jl
 delete mode 100644 src/Fortran/mi26.jl
 delete mode 100644 src/Fortran/ym01.jl

diff --git a/.gitignore b/.gitignore
index bebfe93..fd28397 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,5 +7,6 @@ deps/src
 deps/build.log
 Manifest.toml
 docs/Manifest.toml
-gen/symbols.txt
-gen/symbols_64.txt
+gen/symbols_libhsl.txt
+gen/symbols_libhsl_subset.txt
+gen/symbols_libhsl_subset_64.txt
diff --git a/Project.toml b/Project.toml
index 2b7cd9d..67413d0 100644
--- a/Project.toml
+++ b/Project.toml
@@ -7,10 +7,12 @@ HSL_jll = "017b0a0e-03f4-516a-9b91-836bbd1904dd"
 Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
 LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
 OpenBLAS32_jll = "656ef2d0-ae68-5445-9ca0-591084a874a2"
+Quadmath = "be4d8f0f-7fa4-5f49-b795-2f01399ab2dd"
 SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
 
 [compat]
 OpenBLAS32_jll = "0.3.9"
+Quadmath = "0.5.10"
 julia = "^1.6.0"
 
 [extras]
diff --git a/gen/analyzer.jl b/gen/analyzer.jl
index 0df71f7..d269b1c 100644
--- a/gen/analyzer.jl
+++ b/gen/analyzer.jl
@@ -2,16 +2,27 @@
 using HSL_jll
 using JuliaFormatter
 
+# libHSL
+name_hsl_package = "libhsl"
 release = "2024.11.28"
 libhsl = "/home/alexis/Bureau/git/hsl/libhsl/libHSL.v$release/"
 
+# HSL_SUBSET
+# name_hsl_package = "hsl_subset"
+# release = ""
+# libhsl = "/home/alexis/Bureau/git/hsl/hsl_subset/src/"
+
 # Symbols of the shared library libhsl
-symbols_path = "symbols.txt"
-run(pipeline(`nm -D $(HSL_jll.libhsl_path)`, stdout=symbols_path))
+symbols_libhsl_path = "symbols_libhsl.txt"
+run(pipeline(`nm -D $(HSL_jll.libhsl_path)`, stdout=symbols_libhsl_path))
+
+# Symbols of the shared library libhsl_subset
+symbols_libhsl_subset_path = "symbols_libhsl_subset.txt"
+run(pipeline(`nm -D $(HSL_jll.libhsl_subset_path)`, stdout=symbols_libhsl_subset_path))
 
 # Symbols of the shared library libhsl_subset_64
-symbols_64_path = "symbols_64.txt"
-run(pipeline(`nm -D $(HSL_jll.libhsl_subset_64_path)`, stdout=symbols_64_path))
+symbols_libhsl_subset_64_path = "symbols_libhsl_subset_64.txt"
+run(pipeline(`nm -D $(HSL_jll.libhsl_subset_64_path)`, stdout=symbols_libhsl_subset_64_path))
 
 # Relation between the hsl precision and the name of the symbols
 hsl_precision = Dict{Char, String}('i' => "integer",
@@ -40,8 +51,12 @@ function fortran_output(case::String, text::AbstractString)
     taille = length(text)
     if (taille ≥ 8) && mapreduce(pattern -> occursin(pattern, text[end-7:end-1]), |, ["integer", "INTEGER"])
       output_type = "Cint"
+    elseif (taille ≥ 13) && mapreduce(pattern -> occursin(pattern, text[end-12:end-1]), |, ["integer(ip_)", "INTEGER(ip_)"])
+      output_type = "INT"
     elseif (taille ≥ 17) && mapreduce(pattern -> occursin(pattern, text[end-16:end-1]), |, ["double precision", "DOUBLE PRECISION"])
       output_type = "Float64"
+    elseif (taille ≥ 10) && mapreduce(pattern -> occursin(pattern, text[end-9:end-1]), |, ["real(rp_)", "REAL(rp_)"])
+      output_type = "FLOAT"
     elseif (taille ≥ 5) && mapreduce(pattern -> occursin(pattern, text[end-4:end-1]), |, ["real", "REAL"])
       output_type = "Float32"
     elseif (taille ≥ 8) && mapreduce(pattern -> occursin(pattern, text[end-7:end-1]), |, ["complex", "COMPLEX"])
@@ -86,6 +101,10 @@ Mapping between Fortran and Julia types.
 """
 function type_mapping(type::String)
   julia_type = ""
+  (type == "INTEGER(ip_)") && (julia_type = "INT")
+  (type == "REAL(rp_)") && (julia_type = "FLOAT")
+  (type == "LOGICAL(lp_)") && (julia_type = "Cint")
+  (type == "REAL(r4_)") && (julia_type = "Float32")
   (type == "INTEGER") && (julia_type = "Cint")
   (type == "LOGICAL") && (julia_type = "Cint")
   (type == "REAL") && (julia_type = "Float32")
@@ -161,6 +180,10 @@ function fortran_types(code::AbstractString, arguments::Vector{String}; verbose:
     type_detector(types, arguments, line, "COMPLEX*16")
     type_detector(types, arguments, line, "CHARACTER")
     type_detector(types, arguments, line, "TYPE")
+    type_detector(types, arguments, line, "INTEGER(ip_)")
+    type_detector(types, arguments, line, "REAL(rp_)")
+    type_detector(types, arguments, line, "LOGICAL(lp_)")
+    type_detector(types, arguments, line, "REAL(r4_)")
 
     if startswith(line, "CHARACTER*") || startswith(line, "character*")
       # start=12 -> CHARACTER*N with N < 10
@@ -193,7 +216,7 @@ function fortran_types(code::AbstractString, arguments::Vector{String}; verbose:
   return types, strlen
 end
 
-function fortran_analyzer(str::String, basename::String, extension::String)
+function fortran_analyzer(name_hsl_package::String, str::String, basename::String, extension::String)
   functions = []
 
   # Remove the comments
@@ -235,39 +258,6 @@ function fortran_analyzer(str::String, basename::String, extension::String)
     end
   end
 
-  # Remove some patterns to more easily parse files in FORTRAN 90
-  if extension == "f90"
-    str = replace(str, ", " => ",")
-    str = replace(str, "::" => "")
-    for pattern in ("in", "out", "inout")
-      str = replace(str, " $pattern " => pattern)
-      str = replace(str, " $(uppercase(pattern)) " => uppercase(pattern))
-    end
-    for pattern in (",intent(in)", ",intent(out)", ",intent(inout)")
-      str = replace(str, pattern => "")
-      str = replace(str, uppercase(pattern) => "")
-    end
-    str = replace(str, ",allocatable" => "")
-    str = replace(str, ",OPTIONAL" => "")
-    # str = replace(str, "CHARACTER(len=*)" => "CHARACTER(N),")
-
-    lines = split(str, "\n", keepempty=false)
-    str = ""
-    for line in lines
-      if occursin("!", line)
-        find = false
-        for (k, value) in enumerate(line)
-          if value == '!' && !find
-            find = true
-            str = str * line[1:k-1] * "\n"
-          end
-        end
-      else
-        str = str * line * "\n"
-      end
-    end
-  end
-
   # Remove double spaces
   double_spaces = occursin("  ", str)
   while double_spaces
@@ -320,6 +310,49 @@ function fortran_analyzer(str::String, basename::String, extension::String)
     end
   end
 
+  # Remove some patterns to more easily parse files in FORTRAN 90
+  if extension == "f90" || name_hsl_package == "hsl_subset"
+    str = replace(str, ", " => ",")
+    str = replace(str, "::" => "")
+    for pattern in (",intent(in)", ",intent(out)", ",intent(inout)")
+      str = replace(str, pattern => "")
+      str = replace(str, uppercase(pattern) => "")
+    end
+    str = replace(str, ",allocatable" => "")
+    str = replace(str, ",OPTIONAL" => "")
+    # str = replace(str, "CHARACTER(len=*)" => "CHARACTER(N),")
+
+    lines = split(str, "\n", keepempty=false)
+    str = ""
+    for line in lines
+      if occursin("!", line)
+        find = false
+        for (k, value) in enumerate(line)
+          if value == '!' && !find
+            find = true
+            str = str * line[1:k-1] * "\n"
+          end
+        end
+      else
+        str = str * line * "\n"
+      end
+    end
+
+    lines = split(str, "\n", keepempty=false)
+    str = ""
+    for line in lines
+      if contains(line, "DIMENSION")
+        dim = split(split(line, "DIMENSION(")[2], ")")[1]
+        line2 = replace(line, ",DIMENSION($dim)" => "")
+        line2 = replace(line2, "," => "($dim),")
+        line2 = line2 * "($dim)"
+        str = str * line2 * "\n"
+      else
+        str = str * line * "\n"
+      end
+    end
+  end
+
   # --- DEBUG ---
   debug = false
   if debug
@@ -390,21 +423,32 @@ function fortran_analyzer(str::String, basename::String, extension::String)
   return functions
 end
 
-function main(name::String="all"; verbose::Bool=false)
+function main(name::String="all"; verbose::Bool=false, f90::Bool=false, print_include::Bool=false)
   # Create a vector with all symbols exported by the shared library libhsl
-  symbols = read(symbols_path, String)
+  symbols = read(symbols_libhsl_path, String)
   symbols = split(symbols, "\n", keepempty=false)
   symbols = [symbol[20:end] for symbol in symbols]
 
+  # Create a vector with all symbols exported by the shared library libhsl_subset
+  symbols2 = read(symbols_libhsl_subset_path, String)
+  symbols2 = split(symbols2, "\n", keepempty=false)
+  symbols2 = [symbol2[20:end] for symbol2 in symbols2]
+
   # Create a vector with all symbols exported by the shared library libhsl_subset_64
-  symbols_64 = read(symbols_64_path, String)
+  symbols_64 = read(symbols_libhsl_subset_64_path, String)
   symbols_64 = split(symbols_64, "\n", keepempty=false)
   symbols_64 = [symbol_64[20:end] for symbol_64 in symbols_64]
 
+  extensions = f90 ? ("f", "f90") : ("f",)
+
+  # We use it to update src/wrappers.jl
+  list_include = String[]
+
   for (root, dirs, files) in walkdir(libhsl)
 
     # We don't want to go inside "examples", metis" and "libhsl" folders
     mapreduce(excluded_folder -> occursin(excluded_folder, root), |, ["examples", "metis", "libhsl/libhsl"]) && continue
+    mapreduce(excluded_folder -> occursin(excluded_folder, root), |, ["blas", "lapack", "makedefs"]) && continue
 
     # Test that we are in one subfolder of libhsl
     if root != libhsl
@@ -414,10 +458,10 @@ function main(name::String="all"; verbose::Bool=false)
       all_flag = (name == "all") && ('/' ∉ package) && !occursin("hsl", package)
       if (name == package) || all_flag
 
-        # Uncomment to update src/wrappers.jl
-        # println("include(\"Fortran/$package.jl\")")
+        # Update list_include
+        push!(list_include, "include(\"Fortran/$(name_hsl_package)/$(package).jl\")")
 
-        path_wrapper = joinpath(@__DIR__, "..", "src", "Fortran", "$(package).jl")
+        path_wrapper = joinpath(@__DIR__, "..", "src", "Fortran", name_hsl_package, "$(package).jl") |> normpath
         file_wrapper = open(path_wrapper, "w")
         
         # Debug mode (also replace `package == name` by `'/' ∉ package`)
@@ -428,12 +472,12 @@ function main(name::String="all"; verbose::Bool=false)
         fnames_package = String[]
         for file in files
           basename, ext = file_extension(file)
-          if ext ∈ ("f", "f90")
+          if ext ∈ extensions
             path_fortran = joinpath(root, file)
             file_fortran = open(path_fortran, "r")
             str = read(file_fortran, String)
             close(file_fortran)
-            fnames = fortran_analyzer(str, basename, ext)
+            fnames = fortran_analyzer(name_hsl_package, str, basename, ext)
             fnames_package = vcat(fnames_package, fnames)
           end
         end
@@ -455,54 +499,20 @@ function main(name::String="all"; verbose::Bool=false)
             verbose && println()
             verbose && display(signature)
             verbose && display(types)
-            # display(output_type)
-            (fname ∉ symbols) && @warn "Unable to find the symbol $fname in the shared library libhsl"
-            write(file_wrapper, "function $signature\n")
-            write(file_wrapper, "  @ccall libhsl.$fname(")
-            for k = 1:narguments
-              if types[k] == ""
-                format = false
-                @warn "Unable to determine the type of $(arguments[k])"
-              end
-              write(file_wrapper, "$(arguments[k])::$(types[k])")
-              (k < narguments) && write(file_wrapper, ", ")
-            end
+            verbose && display(output_type)
 
-            # Hidden arguments
-            if "Ref{UInt8}" ∈ types || "Ptr{UInt8}" ∈ types || "Ptr{Ptr{UInt8}}" ∈ types
-              verbose && @info "Hidden argument in $fname."
-            end
-            for k = 1:narguments
-              (types[k] == "Ref{UInt8}") && write(file_wrapper, ", 1::Csize_t")
-              (types[k] == "Ptr{UInt8}") && write(file_wrapper, ", $(strlen[arguments[k]])::Csize_t")
-              (types[k] == "Ptr{Ptr{UInt8}}") && write(file_wrapper, ", $(strlen[arguments[k]])::Csize_t")
-            end
-
-            if output_type == ""
-              format = false
-              @warn "Unable to determine the output type"
-            end
-            write(file_wrapper, ")::$(output_type)\n")
-            write(file_wrapper, "end\n")
-
-            # Symbols with the suffix `64_`
-            if "$(fname)64_" in symbols_64
-              write(file_wrapper, "\n")
-              signature64 = replace(signature, fname[1:end-1] => "$(fname)64")
-              signature64 = replace(signature64, "Cint" => "Int64")
-              write(file_wrapper, "function $signature64\n")
-              write(file_wrapper, "  @ccall libhsl_subset_64.$(fname)64_(")
+            if name_hsl_package == "libhsl"
+              (fname ∉ symbols) && @warn "Unable to find the symbol $fname in the shared library libhsl."
+              write(file_wrapper, "function $signature\n")
+              write(file_wrapper, "  @ccall libhsl.$fname(")
               for k = 1:narguments
                 if types[k] == ""
                   format = false
                   @warn "Unable to determine the type of $(arguments[k])"
-                else
-                  type64 = replace(types[k], "Cint" => "Int64")
-                  write(file_wrapper, "$(arguments[k])::$(type64)")
                 end
+                write(file_wrapper, "$(arguments[k])::$(types[k])")
                 (k < narguments) && write(file_wrapper, ", ")
               end
-
               # Hidden arguments
               if "Ref{UInt8}" ∈ types || "Ptr{UInt8}" ∈ types || "Ptr{Ptr{UInt8}}" ∈ types
                 verbose && @info "Hidden argument in $fname."
@@ -512,15 +522,67 @@ function main(name::String="all"; verbose::Bool=false)
                 (types[k] == "Ptr{UInt8}") && write(file_wrapper, ", $(strlen[arguments[k]])::Csize_t")
                 (types[k] == "Ptr{Ptr{UInt8}}") && write(file_wrapper, ", $(strlen[arguments[k]])::Csize_t")
               end
-
               if output_type == ""
                 format = false
                 @warn "Unable to determine the output type"
               end
               write(file_wrapper, ")::$(output_type)\n")
               write(file_wrapper, "end\n")
-            end
 
+            elseif name_hsl_package == "hsl_subset"
+              if endswith(fname, "r_")
+                variant = 0
+                for (ip_, rp_, suffix, library) in (("Int32", "Float32" , "_"    , "libhsl_subset"   ),
+                                                    ("Int32", "Float64" , "d_"   , "libhsl_subset"   ),
+                                                    ("Int32", "Float128", "q_"   , "libhsl_subset"   ),
+                                                    ("Int64", "Float32" , "_64_" , "libhsl_subset_64"),
+                                                    ("Int64", "Float64" , "d_64_", "libhsl_subset_64"),
+                                                    ("Int64", "Float128", "q_64_", "libhsl_subset_64"))
+                  variant += 1
+                  pp_fname = fname[1:end-2] * suffix
+                  (pp_fname ∉ symbols2) && (pp_fname ∉ symbols_64) && @warn "Unable to find the symbol $(pp_fname) in the shared libraries libhsl_subset and libhsl_subset_64."
+                  (pp_fname ∉ symbols2) && (pp_fname ∉ symbols_64) && continue
+
+                  (index > 1 || variant > 1) && write(file_wrapper, "\n")
+                  jname = fname[1:end-1]
+                  signature2 = replace(signature, fname => jname)
+                  signature2 = replace(signature2, "$jname(" => "$jname(::Type{$rp_}, ::Type{$ip_}, ")
+                  write(file_wrapper, "function $signature2\n")
+                  write(file_wrapper, "  @ccall $library.$(pp_fname)(")
+                  for k = 1:narguments
+                    if types[k] == ""
+                      format = false
+                      @warn "Unable to determine the type of $(arguments[k])"
+                    end
+                    type = replace(types[k], "INT" => ip_)
+                    type = replace(type, "FLOAT" => rp_)
+                    write(file_wrapper, "$(arguments[k])::$type")
+                    (k < narguments) && write(file_wrapper, ", ")
+                  end
+
+                  # Hidden arguments
+                  if "Ref{UInt8}" ∈ types || "Ptr{UInt8}" ∈ types || "Ptr{Ptr{UInt8}}" ∈ types
+                    verbose && @info "Hidden argument in $fname."
+                  end
+                  for k = 1:narguments
+                    (types[k] == "Ref{UInt8}") && write(file_wrapper, ", 1::Csize_t")
+                    (types[k] == "Ptr{UInt8}") && write(file_wrapper, ", $(strlen[arguments[k]])::Csize_t")
+                    (types[k] == "Ptr{Ptr{UInt8}}") && write(file_wrapper, ", $(strlen[arguments[k]])::Csize_t")
+                  end
+
+                  if output_type == ""
+                    format = false
+                    @warn "Unable to determine the output type"
+                  end
+                  output_type2 = replace(output_type, "FLOAT" => rp_)
+                  output_type2 = replace(output_type2, "INT" => ip_)
+                  write(file_wrapper, ")::$(output_type2)\n")
+                  write(file_wrapper, "end\n")
+                end
+              end
+            else
+              error("The collection $(name_hsl_package) is not supported.")
+            end
             index < num_fnames && write(file_wrapper, "\n")
           end
         end
@@ -529,4 +591,10 @@ function main(name::String="all"; verbose::Bool=false)
       end
     end
   end
+
+  if print_include
+    for str in list_include
+      println(str)
+    end
+  end
 end
diff --git a/src/Fortran/fa01.jl b/src/Fortran/fa01.jl
deleted file mode 100644
index 82701df..0000000
--- a/src/Fortran/fa01.jl
+++ /dev/null
@@ -1,63 +0,0 @@
-function fa01bd(max, nrand)
-  @ccall libhsl.fa01bd_(max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
-end
-
-function fa01bd_64(max, nrand)
-  @ccall libhsl_subset_64.fa01bd_64_(max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
-end
-
-function fa01cd(il, ir)
-  @ccall libhsl.fa01cd_(il::Ref{Cint}, ir::Ref{Cint})::Cvoid
-end
-
-function fa01cd_64(il, ir)
-  @ccall libhsl_subset_64.fa01cd_64_(il::Ref{Int64}, ir::Ref{Int64})::Cvoid
-end
-
-function fa01dd(il, ir)
-  @ccall libhsl.fa01dd_(il::Ref{Cint}, ir::Ref{Cint})::Cvoid
-end
-
-function fa01dd_64(il, ir)
-  @ccall libhsl_subset_64.fa01dd_64_(il::Ref{Int64}, ir::Ref{Int64})::Cvoid
-end
-
-function fa01ad(i)
-  @ccall libhsl.fa01ad_(i::Ref{Cint})::Float64
-end
-
-function fa01ad_64(i)
-  @ccall libhsl_subset_64.fa01ad_64_(i::Ref{Int64})::Float64
-end
-
-function fa01b(max, nrand)
-  @ccall libhsl.fa01b_(max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
-end
-
-function fa01b_64(max, nrand)
-  @ccall libhsl_subset_64.fa01b_64_(max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
-end
-
-function fa01c(il, ir)
-  @ccall libhsl.fa01c_(il::Ref{Cint}, ir::Ref{Cint})::Cvoid
-end
-
-function fa01c_64(il, ir)
-  @ccall libhsl_subset_64.fa01c_64_(il::Ref{Int64}, ir::Ref{Int64})::Cvoid
-end
-
-function fa01d(il, ir)
-  @ccall libhsl.fa01d_(il::Ref{Cint}, ir::Ref{Cint})::Cvoid
-end
-
-function fa01d_64(il, ir)
-  @ccall libhsl_subset_64.fa01d_64_(il::Ref{Int64}, ir::Ref{Int64})::Cvoid
-end
-
-function fa01a(i)
-  @ccall libhsl.fa01a_(i::Ref{Cint})::Float32
-end
-
-function fa01a_64(i)
-  @ccall libhsl_subset_64.fa01a_64_(i::Ref{Int64})::Float32
-end
diff --git a/src/Fortran/fa04.jl b/src/Fortran/fa04.jl
deleted file mode 100644
index 416232e..0000000
--- a/src/Fortran/fa04.jl
+++ /dev/null
@@ -1,63 +0,0 @@
-function fa04bd(max, nrand)
-  @ccall libhsl.fa04bd_(max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
-end
-
-function fa04bd_64(max, nrand)
-  @ccall libhsl_subset_64.fa04bd_64_(max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
-end
-
-function fa04cd(igen)
-  @ccall libhsl.fa04cd_(igen::Ref{Cint})::Cvoid
-end
-
-function fa04cd_64(igen)
-  @ccall libhsl_subset_64.fa04cd_64_(igen::Ref{Int64})::Cvoid
-end
-
-function fa04dd(igen)
-  @ccall libhsl.fa04dd_(igen::Ref{Cint})::Cvoid
-end
-
-function fa04dd_64(igen)
-  @ccall libhsl_subset_64.fa04dd_64_(igen::Ref{Int64})::Cvoid
-end
-
-function fa04ad(i)
-  @ccall libhsl.fa04ad_(i::Ref{Cint})::Float64
-end
-
-function fa04ad_64(i)
-  @ccall libhsl_subset_64.fa04ad_64_(i::Ref{Int64})::Float64
-end
-
-function fa04b(max, nrand)
-  @ccall libhsl.fa04b_(max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
-end
-
-function fa04b_64(max, nrand)
-  @ccall libhsl_subset_64.fa04b_64_(max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
-end
-
-function fa04c(igen)
-  @ccall libhsl.fa04c_(igen::Ref{Cint})::Cvoid
-end
-
-function fa04c_64(igen)
-  @ccall libhsl_subset_64.fa04c_64_(igen::Ref{Int64})::Cvoid
-end
-
-function fa04d(igen)
-  @ccall libhsl.fa04d_(igen::Ref{Cint})::Cvoid
-end
-
-function fa04d_64(igen)
-  @ccall libhsl_subset_64.fa04d_64_(igen::Ref{Int64})::Cvoid
-end
-
-function fa04a(i)
-  @ccall libhsl.fa04a_(i::Ref{Cint})::Float32
-end
-
-function fa04a_64(i)
-  @ccall libhsl_subset_64.fa04a_64_(i::Ref{Int64})::Float32
-end
diff --git a/src/Fortran/fa14.jl b/src/Fortran/fa14.jl
deleted file mode 100644
index acbeb98..0000000
--- a/src/Fortran/fa14.jl
+++ /dev/null
@@ -1,79 +0,0 @@
-function fa14bd(ix, max, nrand)
-  @ccall libhsl.fa14bd_(ix::Ref{Cint}, max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
-end
-
-function fa14bd_64(ix, max, nrand)
-  @ccall libhsl_subset_64.fa14bd_64_(ix::Ref{Int64}, max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
-end
-
-function fa14cd(ix, igen)
-  @ccall libhsl.fa14cd_(ix::Ref{Cint}, igen::Ref{Cint})::Cvoid
-end
-
-function fa14cd_64(ix, igen)
-  @ccall libhsl_subset_64.fa14cd_64_(ix::Ref{Int64}, igen::Ref{Int64})::Cvoid
-end
-
-function fa14dd(ix, igen)
-  @ccall libhsl.fa14dd_(ix::Ref{Cint}, igen::Ref{Cint})::Cvoid
-end
-
-function fa14dd_64(ix, igen)
-  @ccall libhsl_subset_64.fa14dd_64_(ix::Ref{Int64}, igen::Ref{Int64})::Cvoid
-end
-
-function fa14id(ix)
-  @ccall libhsl.fa14id_(ix::Ref{Cint})::Cvoid
-end
-
-function fa14id_64(ix)
-  @ccall libhsl_subset_64.fa14id_64_(ix::Ref{Int64})::Cvoid
-end
-
-function fa14ad(ix, i)
-  @ccall libhsl.fa14ad_(ix::Ref{Cint}, i::Ref{Cint})::Float64
-end
-
-function fa14ad_64(ix, i)
-  @ccall libhsl_subset_64.fa14ad_64_(ix::Ref{Int64}, i::Ref{Int64})::Float64
-end
-
-function fa14b(ix, max, nrand)
-  @ccall libhsl.fa14b_(ix::Ref{Cint}, max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
-end
-
-function fa14b_64(ix, max, nrand)
-  @ccall libhsl_subset_64.fa14b_64_(ix::Ref{Int64}, max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
-end
-
-function fa14c(ix, igen)
-  @ccall libhsl.fa14c_(ix::Ref{Cint}, igen::Ref{Cint})::Cvoid
-end
-
-function fa14c_64(ix, igen)
-  @ccall libhsl_subset_64.fa14c_64_(ix::Ref{Int64}, igen::Ref{Int64})::Cvoid
-end
-
-function fa14d(ix, igen)
-  @ccall libhsl.fa14d_(ix::Ref{Cint}, igen::Ref{Cint})::Cvoid
-end
-
-function fa14d_64(ix, igen)
-  @ccall libhsl_subset_64.fa14d_64_(ix::Ref{Int64}, igen::Ref{Int64})::Cvoid
-end
-
-function fa14i(ix)
-  @ccall libhsl.fa14i_(ix::Ref{Cint})::Cvoid
-end
-
-function fa14i_64(ix)
-  @ccall libhsl_subset_64.fa14i_64_(ix::Ref{Int64})::Cvoid
-end
-
-function fa14a(ix, i)
-  @ccall libhsl.fa14a_(ix::Ref{Cint}, i::Ref{Cint})::Float32
-end
-
-function fa14a_64(ix, i)
-  @ccall libhsl_subset_64.fa14a_64_(ix::Ref{Int64}, i::Ref{Int64})::Float32
-end
diff --git a/src/Fortran/fd15.jl b/src/Fortran/fd15.jl
deleted file mode 100644
index ea528eb..0000000
--- a/src/Fortran/fd15.jl
+++ /dev/null
@@ -1,15 +0,0 @@
-function fd15ad(t)
-  @ccall libhsl.fd15ad_(t::Ref{UInt8}, 1::Csize_t)::Float64
-end
-
-function fd15ad_64(t)
-  @ccall libhsl_subset_64.fd15ad_64_(t::Ref{UInt8}, 1::Csize_t)::Float64
-end
-
-function fd15a(t)
-  @ccall libhsl.fd15a_(t::Ref{UInt8}, 1::Csize_t)::Float32
-end
-
-function fd15a_64(t)
-  @ccall libhsl_subset_64.fd15a_64_(t::Ref{UInt8}, 1::Csize_t)::Float32
-end
diff --git a/src/Fortran/hsl_subset/fa01.jl b/src/Fortran/hsl_subset/fa01.jl
new file mode 100644
index 0000000..981af79
--- /dev/null
+++ b/src/Fortran/hsl_subset/fa01.jl
@@ -0,0 +1,95 @@
+function fa01br(::Type{Float32}, ::Type{Int32}, max, nrand)
+  @ccall libhsl_subset.fa01b_(max::Ref{Int32}, nrand::Ref{Int32})::Cvoid
+end
+
+function fa01br(::Type{Float64}, ::Type{Int32}, max, nrand)
+  @ccall libhsl_subset.fa01bd_(max::Ref{Int32}, nrand::Ref{Int32})::Cvoid
+end
+
+function fa01br(::Type{Float128}, ::Type{Int32}, max, nrand)
+  @ccall libhsl_subset.fa01bq_(max::Ref{Int32}, nrand::Ref{Int32})::Cvoid
+end
+
+function fa01br(::Type{Float32}, ::Type{Int64}, max, nrand)
+  @ccall libhsl_subset_64.fa01b_64_(max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
+end
+
+function fa01br(::Type{Float64}, ::Type{Int64}, max, nrand)
+  @ccall libhsl_subset_64.fa01bd_64_(max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
+end
+
+function fa01br(::Type{Float128}, ::Type{Int64}, max, nrand)
+  @ccall libhsl_subset_64.fa01bq_64_(max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
+end
+
+function fa01cr(::Type{Float32}, ::Type{Int32}, il, ir)
+  @ccall libhsl_subset.fa01c_(il::Ref{Int32}, ir::Ref{Int32})::Cvoid
+end
+
+function fa01cr(::Type{Float64}, ::Type{Int32}, il, ir)
+  @ccall libhsl_subset.fa01cd_(il::Ref{Int32}, ir::Ref{Int32})::Cvoid
+end
+
+function fa01cr(::Type{Float128}, ::Type{Int32}, il, ir)
+  @ccall libhsl_subset.fa01cq_(il::Ref{Int32}, ir::Ref{Int32})::Cvoid
+end
+
+function fa01cr(::Type{Float32}, ::Type{Int64}, il, ir)
+  @ccall libhsl_subset_64.fa01c_64_(il::Ref{Int64}, ir::Ref{Int64})::Cvoid
+end
+
+function fa01cr(::Type{Float64}, ::Type{Int64}, il, ir)
+  @ccall libhsl_subset_64.fa01cd_64_(il::Ref{Int64}, ir::Ref{Int64})::Cvoid
+end
+
+function fa01cr(::Type{Float128}, ::Type{Int64}, il, ir)
+  @ccall libhsl_subset_64.fa01cq_64_(il::Ref{Int64}, ir::Ref{Int64})::Cvoid
+end
+
+function fa01dr(::Type{Float32}, ::Type{Int32}, il, ir)
+  @ccall libhsl_subset.fa01d_(il::Ref{Int32}, ir::Ref{Int32})::Cvoid
+end
+
+function fa01dr(::Type{Float64}, ::Type{Int32}, il, ir)
+  @ccall libhsl_subset.fa01dd_(il::Ref{Int32}, ir::Ref{Int32})::Cvoid
+end
+
+function fa01dr(::Type{Float128}, ::Type{Int32}, il, ir)
+  @ccall libhsl_subset.fa01dq_(il::Ref{Int32}, ir::Ref{Int32})::Cvoid
+end
+
+function fa01dr(::Type{Float32}, ::Type{Int64}, il, ir)
+  @ccall libhsl_subset_64.fa01d_64_(il::Ref{Int64}, ir::Ref{Int64})::Cvoid
+end
+
+function fa01dr(::Type{Float64}, ::Type{Int64}, il, ir)
+  @ccall libhsl_subset_64.fa01dd_64_(il::Ref{Int64}, ir::Ref{Int64})::Cvoid
+end
+
+function fa01dr(::Type{Float128}, ::Type{Int64}, il, ir)
+  @ccall libhsl_subset_64.fa01dq_64_(il::Ref{Int64}, ir::Ref{Int64})::Cvoid
+end
+
+function fa01ar(::Type{Float32}, ::Type{Int32}, i)
+  @ccall libhsl_subset.fa01a_(i::Ref{Int32})::Float32
+end
+
+function fa01ar(::Type{Float64}, ::Type{Int32}, i)
+  @ccall libhsl_subset.fa01ad_(i::Ref{Int32})::Float64
+end
+
+function fa01ar(::Type{Float128}, ::Type{Int32}, i)
+  @ccall libhsl_subset.fa01aq_(i::Ref{Int32})::Float128
+end
+
+function fa01ar(::Type{Float32}, ::Type{Int64}, i)
+  @ccall libhsl_subset_64.fa01a_64_(i::Ref{Int64})::Float32
+end
+
+function fa01ar(::Type{Float64}, ::Type{Int64}, i)
+  @ccall libhsl_subset_64.fa01ad_64_(i::Ref{Int64})::Float64
+end
+
+function fa01ar(::Type{Float128}, ::Type{Int64}, i)
+  @ccall libhsl_subset_64.fa01aq_64_(i::Ref{Int64})::Float128
+end
diff --git a/src/Fortran/hsl_subset/fa04.jl b/src/Fortran/hsl_subset/fa04.jl
new file mode 100644
index 0000000..1206ac7
--- /dev/null
+++ b/src/Fortran/hsl_subset/fa04.jl
@@ -0,0 +1,95 @@
+function fa04br(::Type{Float32}, ::Type{Int32}, max, nrand)
+  @ccall libhsl_subset.fa04b_(max::Ref{Int32}, nrand::Ref{Int32})::Cvoid
+end
+
+function fa04br(::Type{Float64}, ::Type{Int32}, max, nrand)
+  @ccall libhsl_subset.fa04bd_(max::Ref{Int32}, nrand::Ref{Int32})::Cvoid
+end
+
+function fa04br(::Type{Float128}, ::Type{Int32}, max, nrand)
+  @ccall libhsl_subset.fa04bq_(max::Ref{Int32}, nrand::Ref{Int32})::Cvoid
+end
+
+function fa04br(::Type{Float32}, ::Type{Int64}, max, nrand)
+  @ccall libhsl_subset_64.fa04b_64_(max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
+end
+
+function fa04br(::Type{Float64}, ::Type{Int64}, max, nrand)
+  @ccall libhsl_subset_64.fa04bd_64_(max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
+end
+
+function fa04br(::Type{Float128}, ::Type{Int64}, max, nrand)
+  @ccall libhsl_subset_64.fa04bq_64_(max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
+end
+
+function fa04cr(::Type{Float32}, ::Type{Int32}, igen)
+  @ccall libhsl_subset.fa04c_(igen::Ref{Int32})::Cvoid
+end
+
+function fa04cr(::Type{Float64}, ::Type{Int32}, igen)
+  @ccall libhsl_subset.fa04cd_(igen::Ref{Int32})::Cvoid
+end
+
+function fa04cr(::Type{Float128}, ::Type{Int32}, igen)
+  @ccall libhsl_subset.fa04cq_(igen::Ref{Int32})::Cvoid
+end
+
+function fa04cr(::Type{Float32}, ::Type{Int64}, igen)
+  @ccall libhsl_subset_64.fa04c_64_(igen::Ref{Int64})::Cvoid
+end
+
+function fa04cr(::Type{Float64}, ::Type{Int64}, igen)
+  @ccall libhsl_subset_64.fa04cd_64_(igen::Ref{Int64})::Cvoid
+end
+
+function fa04cr(::Type{Float128}, ::Type{Int64}, igen)
+  @ccall libhsl_subset_64.fa04cq_64_(igen::Ref{Int64})::Cvoid
+end
+
+function fa04dr(::Type{Float32}, ::Type{Int32}, igen)
+  @ccall libhsl_subset.fa04d_(igen::Ref{Int32})::Cvoid
+end
+
+function fa04dr(::Type{Float64}, ::Type{Int32}, igen)
+  @ccall libhsl_subset.fa04dd_(igen::Ref{Int32})::Cvoid
+end
+
+function fa04dr(::Type{Float128}, ::Type{Int32}, igen)
+  @ccall libhsl_subset.fa04dq_(igen::Ref{Int32})::Cvoid
+end
+
+function fa04dr(::Type{Float32}, ::Type{Int64}, igen)
+  @ccall libhsl_subset_64.fa04d_64_(igen::Ref{Int64})::Cvoid
+end
+
+function fa04dr(::Type{Float64}, ::Type{Int64}, igen)
+  @ccall libhsl_subset_64.fa04dd_64_(igen::Ref{Int64})::Cvoid
+end
+
+function fa04dr(::Type{Float128}, ::Type{Int64}, igen)
+  @ccall libhsl_subset_64.fa04dq_64_(igen::Ref{Int64})::Cvoid
+end
+
+function fa04ar(::Type{Float32}, ::Type{Int32}, i)
+  @ccall libhsl_subset.fa04a_(i::Ref{Int32})::Float32
+end
+
+function fa04ar(::Type{Float64}, ::Type{Int32}, i)
+  @ccall libhsl_subset.fa04ad_(i::Ref{Int32})::Float64
+end
+
+function fa04ar(::Type{Float128}, ::Type{Int32}, i)
+  @ccall libhsl_subset.fa04aq_(i::Ref{Int32})::Float128
+end
+
+function fa04ar(::Type{Float32}, ::Type{Int64}, i)
+  @ccall libhsl_subset_64.fa04a_64_(i::Ref{Int64})::Float32
+end
+
+function fa04ar(::Type{Float64}, ::Type{Int64}, i)
+  @ccall libhsl_subset_64.fa04ad_64_(i::Ref{Int64})::Float64
+end
+
+function fa04ar(::Type{Float128}, ::Type{Int64}, i)
+  @ccall libhsl_subset_64.fa04aq_64_(i::Ref{Int64})::Float128
+end
diff --git a/src/Fortran/hsl_subset/fa14.jl b/src/Fortran/hsl_subset/fa14.jl
new file mode 100644
index 0000000..1a37a16
--- /dev/null
+++ b/src/Fortran/hsl_subset/fa14.jl
@@ -0,0 +1,119 @@
+function fa14br(::Type{Float32}, ::Type{Int32}, ix, max, nrand)
+  @ccall libhsl_subset.fa14b_(ix::Ref{Int32}, max::Ref{Int32}, nrand::Ref{Int32})::Cvoid
+end
+
+function fa14br(::Type{Float64}, ::Type{Int32}, ix, max, nrand)
+  @ccall libhsl_subset.fa14bd_(ix::Ref{Int32}, max::Ref{Int32}, nrand::Ref{Int32})::Cvoid
+end
+
+function fa14br(::Type{Float128}, ::Type{Int32}, ix, max, nrand)
+  @ccall libhsl_subset.fa14bq_(ix::Ref{Int32}, max::Ref{Int32}, nrand::Ref{Int32})::Cvoid
+end
+
+function fa14br(::Type{Float32}, ::Type{Int64}, ix, max, nrand)
+  @ccall libhsl_subset_64.fa14b_64_(ix::Ref{Int64}, max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
+end
+
+function fa14br(::Type{Float64}, ::Type{Int64}, ix, max, nrand)
+  @ccall libhsl_subset_64.fa14bd_64_(ix::Ref{Int64}, max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
+end
+
+function fa14br(::Type{Float128}, ::Type{Int64}, ix, max, nrand)
+  @ccall libhsl_subset_64.fa14bq_64_(ix::Ref{Int64}, max::Ref{Int64}, nrand::Ref{Int64})::Cvoid
+end
+
+function fa14cr(::Type{Float32}, ::Type{Int32}, ix, igen)
+  @ccall libhsl_subset.fa14c_(ix::Ref{Int32}, igen::Ref{Int32})::Cvoid
+end
+
+function fa14cr(::Type{Float64}, ::Type{Int32}, ix, igen)
+  @ccall libhsl_subset.fa14cd_(ix::Ref{Int32}, igen::Ref{Int32})::Cvoid
+end
+
+function fa14cr(::Type{Float128}, ::Type{Int32}, ix, igen)
+  @ccall libhsl_subset.fa14cq_(ix::Ref{Int32}, igen::Ref{Int32})::Cvoid
+end
+
+function fa14cr(::Type{Float32}, ::Type{Int64}, ix, igen)
+  @ccall libhsl_subset_64.fa14c_64_(ix::Ref{Int64}, igen::Ref{Int64})::Cvoid
+end
+
+function fa14cr(::Type{Float64}, ::Type{Int64}, ix, igen)
+  @ccall libhsl_subset_64.fa14cd_64_(ix::Ref{Int64}, igen::Ref{Int64})::Cvoid
+end
+
+function fa14cr(::Type{Float128}, ::Type{Int64}, ix, igen)
+  @ccall libhsl_subset_64.fa14cq_64_(ix::Ref{Int64}, igen::Ref{Int64})::Cvoid
+end
+
+function fa14dr(::Type{Float32}, ::Type{Int32}, ix, igen)
+  @ccall libhsl_subset.fa14d_(ix::Ref{Int32}, igen::Ref{Int32})::Cvoid
+end
+
+function fa14dr(::Type{Float64}, ::Type{Int32}, ix, igen)
+  @ccall libhsl_subset.fa14dd_(ix::Ref{Int32}, igen::Ref{Int32})::Cvoid
+end
+
+function fa14dr(::Type{Float128}, ::Type{Int32}, ix, igen)
+  @ccall libhsl_subset.fa14dq_(ix::Ref{Int32}, igen::Ref{Int32})::Cvoid
+end
+
+function fa14dr(::Type{Float32}, ::Type{Int64}, ix, igen)
+  @ccall libhsl_subset_64.fa14d_64_(ix::Ref{Int64}, igen::Ref{Int64})::Cvoid
+end
+
+function fa14dr(::Type{Float64}, ::Type{Int64}, ix, igen)
+  @ccall libhsl_subset_64.fa14dd_64_(ix::Ref{Int64}, igen::Ref{Int64})::Cvoid
+end
+
+function fa14dr(::Type{Float128}, ::Type{Int64}, ix, igen)
+  @ccall libhsl_subset_64.fa14dq_64_(ix::Ref{Int64}, igen::Ref{Int64})::Cvoid
+end
+
+function fa14ir(::Type{Float32}, ::Type{Int32}, ix)
+  @ccall libhsl_subset.fa14i_(ix::Ref{Int32})::Cvoid
+end
+
+function fa14ir(::Type{Float64}, ::Type{Int32}, ix)
+  @ccall libhsl_subset.fa14id_(ix::Ref{Int32})::Cvoid
+end
+
+function fa14ir(::Type{Float128}, ::Type{Int32}, ix)
+  @ccall libhsl_subset.fa14iq_(ix::Ref{Int32})::Cvoid
+end
+
+function fa14ir(::Type{Float32}, ::Type{Int64}, ix)
+  @ccall libhsl_subset_64.fa14i_64_(ix::Ref{Int64})::Cvoid
+end
+
+function fa14ir(::Type{Float64}, ::Type{Int64}, ix)
+  @ccall libhsl_subset_64.fa14id_64_(ix::Ref{Int64})::Cvoid
+end
+
+function fa14ir(::Type{Float128}, ::Type{Int64}, ix)
+  @ccall libhsl_subset_64.fa14iq_64_(ix::Ref{Int64})::Cvoid
+end
+
+function fa14ar(::Type{Float32}, ::Type{Int32}, ix, i)
+  @ccall libhsl_subset.fa14a_(ix::Ref{Int32}, i::Ref{Int32})::Float32
+end
+
+function fa14ar(::Type{Float64}, ::Type{Int32}, ix, i)
+  @ccall libhsl_subset.fa14ad_(ix::Ref{Int32}, i::Ref{Int32})::Float64
+end
+
+function fa14ar(::Type{Float128}, ::Type{Int32}, ix, i)
+  @ccall libhsl_subset.fa14aq_(ix::Ref{Int32}, i::Ref{Int32})::Float128
+end
+
+function fa14ar(::Type{Float32}, ::Type{Int64}, ix, i)
+  @ccall libhsl_subset_64.fa14a_64_(ix::Ref{Int64}, i::Ref{Int64})::Float32
+end
+
+function fa14ar(::Type{Float64}, ::Type{Int64}, ix, i)
+  @ccall libhsl_subset_64.fa14ad_64_(ix::Ref{Int64}, i::Ref{Int64})::Float64
+end
+
+function fa14ar(::Type{Float128}, ::Type{Int64}, ix, i)
+  @ccall libhsl_subset_64.fa14aq_64_(ix::Ref{Int64}, i::Ref{Int64})::Float128
+end
diff --git a/src/Fortran/hsl_subset/fd15.jl b/src/Fortran/hsl_subset/fd15.jl
new file mode 100644
index 0000000..e316f27
--- /dev/null
+++ b/src/Fortran/hsl_subset/fd15.jl
@@ -0,0 +1,23 @@
+function fd15ar(::Type{Float32}, ::Type{Int32}, t)
+  @ccall libhsl_subset.fd15a_(t::Ref{UInt8}, 1::Csize_t)::Float32
+end
+
+function fd15ar(::Type{Float64}, ::Type{Int32}, t)
+  @ccall libhsl_subset.fd15ad_(t::Ref{UInt8}, 1::Csize_t)::Float64
+end
+
+function fd15ar(::Type{Float128}, ::Type{Int32}, t)
+  @ccall libhsl_subset.fd15aq_(t::Ref{UInt8}, 1::Csize_t)::Float128
+end
+
+function fd15ar(::Type{Float32}, ::Type{Int64}, t)
+  @ccall libhsl_subset_64.fd15a_64_(t::Ref{UInt8}, 1::Csize_t)::Float32
+end
+
+function fd15ar(::Type{Float64}, ::Type{Int64}, t)
+  @ccall libhsl_subset_64.fd15ad_64_(t::Ref{UInt8}, 1::Csize_t)::Float64
+end
+
+function fd15ar(::Type{Float128}, ::Type{Int64}, t)
+  @ccall libhsl_subset_64.fd15aq_64_(t::Ref{UInt8}, 1::Csize_t)::Float128
+end
diff --git a/src/Fortran/hsl_subset/kb07.jl b/src/Fortran/hsl_subset/kb07.jl
new file mode 100644
index 0000000..c3bb472
--- /dev/null
+++ b/src/Fortran/hsl_subset/kb07.jl
@@ -0,0 +1,24 @@
+
+function kb07ar(::Type{Float32}, ::Type{Int32}, count, n, index)
+  @ccall libhsl_subset.kb07a_(count::Ptr{Float32}, n::Ref{Int32}, index::Ptr{Int32})::Cvoid
+end
+
+function kb07ar(::Type{Float64}, ::Type{Int32}, count, n, index)
+  @ccall libhsl_subset.kb07ad_(count::Ptr{Float64}, n::Ref{Int32}, index::Ptr{Int32})::Cvoid
+end
+
+function kb07ar(::Type{Float128}, ::Type{Int32}, count, n, index)
+  @ccall libhsl_subset.kb07aq_(count::Ptr{Float128}, n::Ref{Int32}, index::Ptr{Int32})::Cvoid
+end
+
+function kb07ar(::Type{Float32}, ::Type{Int64}, count, n, index)
+  @ccall libhsl_subset_64.kb07a_64_(count::Ptr{Float32}, n::Ref{Int64}, index::Ptr{Int64})::Cvoid
+end
+
+function kb07ar(::Type{Float64}, ::Type{Int64}, count, n, index)
+  @ccall libhsl_subset_64.kb07ad_64_(count::Ptr{Float64}, n::Ref{Int64}, index::Ptr{Int64})::Cvoid
+end
+
+function kb07ar(::Type{Float128}, ::Type{Int64}, count, n, index)
+  @ccall libhsl_subset_64.kb07aq_64_(count::Ptr{Float128}, n::Ref{Int64}, index::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/kb21.jl b/src/Fortran/hsl_subset/kb21.jl
new file mode 100644
index 0000000..657af88
--- /dev/null
+++ b/src/Fortran/hsl_subset/kb21.jl
@@ -0,0 +1,192 @@
+
+function kb21ar(::Type{Float32}, ::Type{Int32}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset.kb21a_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float32}, ind::Ptr{Int32},
+                              w::Ptr{Float32}, iw::Ptr{Int32})::Cvoid
+end
+
+function kb21ar(::Type{Float64}, ::Type{Int32}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset.kb21ad_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float64}, ind::Ptr{Int32},
+                               w::Ptr{Float64}, iw::Ptr{Int32})::Cvoid
+end
+
+function kb21ar(::Type{Float128}, ::Type{Int32}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset.kb21aq_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float128}, ind::Ptr{Int32},
+                               w::Ptr{Float128}, iw::Ptr{Int32})::Cvoid
+end
+
+function kb21ar(::Type{Float32}, ::Type{Int64}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset_64.kb21a_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float32}, ind::Ptr{Int64},
+                                    w::Ptr{Float32}, iw::Ptr{Int64})::Cvoid
+end
+
+function kb21ar(::Type{Float64}, ::Type{Int64}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset_64.kb21ad_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float64}, ind::Ptr{Int64},
+                                     w::Ptr{Float64}, iw::Ptr{Int64})::Cvoid
+end
+
+function kb21ar(::Type{Float128}, ::Type{Int64}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset_64.kb21aq_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float128},
+                                     ind::Ptr{Int64}, w::Ptr{Float128}, iw::Ptr{Int64})::Cvoid
+end
+
+function kb21br(::Type{Float32}, ::Type{Int32}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset.kb21b_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float32}, ind::Ptr{Int32},
+                              w::Ptr{Float32}, iw::Ptr{Int32})::Cvoid
+end
+
+function kb21br(::Type{Float64}, ::Type{Int32}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset.kb21bd_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float64}, ind::Ptr{Int32},
+                               w::Ptr{Float64}, iw::Ptr{Int32})::Cvoid
+end
+
+function kb21br(::Type{Float128}, ::Type{Int32}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset.kb21bq_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float128}, ind::Ptr{Int32},
+                               w::Ptr{Float128}, iw::Ptr{Int32})::Cvoid
+end
+
+function kb21br(::Type{Float32}, ::Type{Int64}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset_64.kb21b_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float32}, ind::Ptr{Int64},
+                                    w::Ptr{Float32}, iw::Ptr{Int64})::Cvoid
+end
+
+function kb21br(::Type{Float64}, ::Type{Int64}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset_64.kb21bd_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float64}, ind::Ptr{Int64},
+                                     w::Ptr{Float64}, iw::Ptr{Int64})::Cvoid
+end
+
+function kb21br(::Type{Float128}, ::Type{Int64}, m, n, a, ind, w, iw)
+  @ccall libhsl_subset_64.kb21bq_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float128},
+                                     ind::Ptr{Int64}, w::Ptr{Float128}, iw::Ptr{Int64})::Cvoid
+end
+
+function kb21cr(::Type{Float32}, ::Type{Int32}, m, n, a, ind, w, iw, k, maxmin)
+  @ccall libhsl_subset.kb21c_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float32}, ind::Ptr{Int32},
+                              w::Ptr{Float32}, iw::Ptr{Int32}, k::Ref{Int32},
+                              maxmin::Ref{Int32})::Cvoid
+end
+
+function kb21cr(::Type{Float64}, ::Type{Int32}, m, n, a, ind, w, iw, k, maxmin)
+  @ccall libhsl_subset.kb21cd_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float64}, ind::Ptr{Int32},
+                               w::Ptr{Float64}, iw::Ptr{Int32}, k::Ref{Int32},
+                               maxmin::Ref{Int32})::Cvoid
+end
+
+function kb21cr(::Type{Float128}, ::Type{Int32}, m, n, a, ind, w, iw, k, maxmin)
+  @ccall libhsl_subset.kb21cq_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float128}, ind::Ptr{Int32},
+                               w::Ptr{Float128}, iw::Ptr{Int32}, k::Ref{Int32},
+                               maxmin::Ref{Int32})::Cvoid
+end
+
+function kb21cr(::Type{Float32}, ::Type{Int64}, m, n, a, ind, w, iw, k, maxmin)
+  @ccall libhsl_subset_64.kb21c_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float32}, ind::Ptr{Int64},
+                                    w::Ptr{Float32}, iw::Ptr{Int64}, k::Ref{Int64},
+                                    maxmin::Ref{Int64})::Cvoid
+end
+
+function kb21cr(::Type{Float64}, ::Type{Int64}, m, n, a, ind, w, iw, k, maxmin)
+  @ccall libhsl_subset_64.kb21cd_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float64}, ind::Ptr{Int64},
+                                     w::Ptr{Float64}, iw::Ptr{Int64}, k::Ref{Int64},
+                                     maxmin::Ref{Int64})::Cvoid
+end
+
+function kb21cr(::Type{Float128}, ::Type{Int64}, m, n, a, ind, w, iw, k, maxmin)
+  @ccall libhsl_subset_64.kb21cq_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float128},
+                                     ind::Ptr{Int64}, w::Ptr{Float128}, iw::Ptr{Int64},
+                                     k::Ref{Int64}, maxmin::Ref{Int64})::Cvoid
+end
+
+function kb21er(::Type{Float32}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21e_(n::Ref{Int32}, a::Ptr{Float32}, ia::Ref{Int32})::Int32
+end
+
+function kb21er(::Type{Float64}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21ed_(n::Ref{Int32}, a::Ptr{Float64}, ia::Ref{Int32})::Int32
+end
+
+function kb21er(::Type{Float128}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21eq_(n::Ref{Int32}, a::Ptr{Float128}, ia::Ref{Int32})::Int32
+end
+
+function kb21er(::Type{Float32}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21e_64_(n::Ref{Int64}, a::Ptr{Float32}, ia::Ref{Int64})::Int64
+end
+
+function kb21er(::Type{Float64}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21ed_64_(n::Ref{Int64}, a::Ptr{Float64}, ia::Ref{Int64})::Int64
+end
+
+function kb21er(::Type{Float128}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21eq_64_(n::Ref{Int64}, a::Ptr{Float128}, ia::Ref{Int64})::Int64
+end
+
+function kb21fr(::Type{Float32}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21f_(n::Ref{Int32}, a::Ptr{Float32}, ia::Ref{Int32})::Int32
+end
+
+function kb21fr(::Type{Float64}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21fd_(n::Ref{Int32}, a::Ptr{Float64}, ia::Ref{Int32})::Int32
+end
+
+function kb21fr(::Type{Float128}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21fq_(n::Ref{Int32}, a::Ptr{Float128}, ia::Ref{Int32})::Int32
+end
+
+function kb21fr(::Type{Float32}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21f_64_(n::Ref{Int64}, a::Ptr{Float32}, ia::Ref{Int64})::Int64
+end
+
+function kb21fr(::Type{Float64}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21fd_64_(n::Ref{Int64}, a::Ptr{Float64}, ia::Ref{Int64})::Int64
+end
+
+function kb21fr(::Type{Float128}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21fq_64_(n::Ref{Int64}, a::Ptr{Float128}, ia::Ref{Int64})::Int64
+end
+
+function kb21gr(::Type{Float32}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21g_(n::Ref{Int32}, a::Ptr{Float32}, ia::Ref{Int32})::Int32
+end
+
+function kb21gr(::Type{Float64}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21gd_(n::Ref{Int32}, a::Ptr{Float64}, ia::Ref{Int32})::Int32
+end
+
+function kb21gr(::Type{Float128}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21gq_(n::Ref{Int32}, a::Ptr{Float128}, ia::Ref{Int32})::Int32
+end
+
+function kb21gr(::Type{Float32}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21g_64_(n::Ref{Int64}, a::Ptr{Float32}, ia::Ref{Int64})::Int64
+end
+
+function kb21gr(::Type{Float64}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21gd_64_(n::Ref{Int64}, a::Ptr{Float64}, ia::Ref{Int64})::Int64
+end
+
+function kb21gr(::Type{Float128}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21gq_64_(n::Ref{Int64}, a::Ptr{Float128}, ia::Ref{Int64})::Int64
+end
+
+function kb21hr(::Type{Float32}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21h_(n::Ref{Int32}, a::Ptr{Float32}, ia::Ref{Int32})::Int32
+end
+
+function kb21hr(::Type{Float64}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21hd_(n::Ref{Int32}, a::Ptr{Float64}, ia::Ref{Int32})::Int32
+end
+
+function kb21hr(::Type{Float128}, ::Type{Int32}, n, a, ia)
+  @ccall libhsl_subset.kb21hq_(n::Ref{Int32}, a::Ptr{Float128}, ia::Ref{Int32})::Int32
+end
+
+function kb21hr(::Type{Float32}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21h_64_(n::Ref{Int64}, a::Ptr{Float32}, ia::Ref{Int64})::Int64
+end
+
+function kb21hr(::Type{Float64}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21hd_64_(n::Ref{Int64}, a::Ptr{Float64}, ia::Ref{Int64})::Int64
+end
+
+function kb21hr(::Type{Float128}, ::Type{Int64}, n, a, ia)
+  @ccall libhsl_subset_64.kb21hq_64_(n::Ref{Int64}, a::Ptr{Float128}, ia::Ref{Int64})::Int64
+end
diff --git a/src/Fortran/hsl_subset/la04.jl b/src/Fortran/hsl_subset/la04.jl
new file mode 100644
index 0000000..0a7891c
--- /dev/null
+++ b/src/Fortran/hsl_subset/la04.jl
@@ -0,0 +1,430 @@
+function la04ar(::Type{Float32}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, x, z, g, rinfo, ws, lws, iws, liws)
+  @ccall libhsl_subset.la04a_(a::Ptr{Float32}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                              m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float32}, c::Ptr{Float32},
+                              bnd::Ptr{Float32}, kb::Ref{Int32}, lb::Ref{Int32}, job::Ref{Int32},
+                              cntl::Ptr{Float32}, ix::Ptr{Int32}, jx::Ptr{Int32}, x::Ptr{Float32},
+                              z::Ptr{Float32}, g::Ptr{Float32}, rinfo::Ptr{Float32},
+                              ws::Ptr{Float32}, lws::Ref{Int32}, iws::Ptr{Int32},
+                              liws::Ref{Int32})::Cvoid
+end
+
+function la04ar(::Type{Float64}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, x, z, g, rinfo, ws, lws, iws, liws)
+  @ccall libhsl_subset.la04ad_(a::Ptr{Float64}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float64}, c::Ptr{Float64},
+                               bnd::Ptr{Float64}, kb::Ref{Int32}, lb::Ref{Int32}, job::Ref{Int32},
+                               cntl::Ptr{Float64}, ix::Ptr{Int32}, jx::Ptr{Int32}, x::Ptr{Float64},
+                               z::Ptr{Float64}, g::Ptr{Float64}, rinfo::Ptr{Float64},
+                               ws::Ptr{Float64}, lws::Ref{Int32}, iws::Ptr{Int32},
+                               liws::Ref{Int32})::Cvoid
+end
+
+function la04ar(::Type{Float128}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, x, z, g, rinfo, ws, lws, iws, liws)
+  @ccall libhsl_subset.la04aq_(a::Ptr{Float128}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float128}, c::Ptr{Float128},
+                               bnd::Ptr{Float128}, kb::Ref{Int32}, lb::Ref{Int32}, job::Ref{Int32},
+                               cntl::Ptr{Float128}, ix::Ptr{Int32}, jx::Ptr{Int32},
+                               x::Ptr{Float128}, z::Ptr{Float128}, g::Ptr{Float128},
+                               rinfo::Ptr{Float128}, ws::Ptr{Float128}, lws::Ref{Int32},
+                               iws::Ptr{Int32}, liws::Ref{Int32})::Cvoid
+end
+
+function la04ar(::Type{Float32}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, x, z, g, rinfo, ws, lws, iws, liws)
+  @ccall libhsl_subset_64.la04a_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
+                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
+                                    c::Ptr{Float32}, bnd::Ptr{Float32}, kb::Ref{Int64},
+                                    lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float32},
+                                    ix::Ptr{Int64}, jx::Ptr{Int64}, x::Ptr{Float32},
+                                    z::Ptr{Float32}, g::Ptr{Float32}, rinfo::Ptr{Float32},
+                                    ws::Ptr{Float32}, lws::Ref{Int64}, iws::Ptr{Int64},
+                                    liws::Ref{Int64})::Cvoid
+end
+
+function la04ar(::Type{Float64}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, x, z, g, rinfo, ws, lws, iws, liws)
+  @ccall libhsl_subset_64.la04ad_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
+                                     c::Ptr{Float64}, bnd::Ptr{Float64}, kb::Ref{Int64},
+                                     lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float64},
+                                     ix::Ptr{Int64}, jx::Ptr{Int64}, x::Ptr{Float64},
+                                     z::Ptr{Float64}, g::Ptr{Float64}, rinfo::Ptr{Float64},
+                                     ws::Ptr{Float64}, lws::Ref{Int64}, iws::Ptr{Int64},
+                                     liws::Ref{Int64})::Cvoid
+end
+
+function la04ar(::Type{Float128}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, x, z, g, rinfo, ws, lws, iws, liws)
+  @ccall libhsl_subset_64.la04aq_64_(a::Ptr{Float128}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float128},
+                                     c::Ptr{Float128}, bnd::Ptr{Float128}, kb::Ref{Int64},
+                                     lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float128},
+                                     ix::Ptr{Int64}, jx::Ptr{Int64}, x::Ptr{Float128},
+                                     z::Ptr{Float128}, g::Ptr{Float128}, rinfo::Ptr{Float128},
+                                     ws::Ptr{Float128}, lws::Ref{Int64}, iws::Ptr{Int64},
+                                     liws::Ref{Int64})::Cvoid
+end
+
+function la04ir(::Type{Float32}, ::Type{Int32}, cntl)
+  @ccall libhsl_subset.la04i_(cntl::Ptr{Float32})::Cvoid
+end
+
+function la04ir(::Type{Float64}, ::Type{Int32}, cntl)
+  @ccall libhsl_subset.la04id_(cntl::Ptr{Float64})::Cvoid
+end
+
+function la04ir(::Type{Float128}, ::Type{Int32}, cntl)
+  @ccall libhsl_subset.la04iq_(cntl::Ptr{Float128})::Cvoid
+end
+
+function la04ir(::Type{Float32}, ::Type{Int64}, cntl)
+  @ccall libhsl_subset_64.la04i_64_(cntl::Ptr{Float32})::Cvoid
+end
+
+function la04ir(::Type{Float64}, ::Type{Int64}, cntl)
+  @ccall libhsl_subset_64.la04id_64_(cntl::Ptr{Float64})::Cvoid
+end
+
+function la04ir(::Type{Float128}, ::Type{Int64}, cntl)
+  @ccall libhsl_subset_64.la04iq_64_(cntl::Ptr{Float128})::Cvoid
+end
+
+function la04br(::Type{Float32}, ::Type{Int32}, a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo,
+                iw, irow, pv, y)
+  @ccall libhsl_subset.la04b_(a::Ptr{Float32}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                              m::Ref{Int32}, n::Ref{Int32}, bnd::Ptr{Float32}, kb::Ref{Int32},
+                              cntl::Ptr{Float32}, ix::Ptr{Int32}, g::Ptr{Float32},
+                              rinfo::Ptr{Float32}, iw::Ptr{Int32}, irow::Ptr{Int32},
+                              pv::Ptr{Float32}, y::Ptr{Float32})::Cvoid
+end
+
+function la04br(::Type{Float64}, ::Type{Int32}, a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo,
+                iw, irow, pv, y)
+  @ccall libhsl_subset.la04bd_(a::Ptr{Float64}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, bnd::Ptr{Float64}, kb::Ref{Int32},
+                               cntl::Ptr{Float64}, ix::Ptr{Int32}, g::Ptr{Float64},
+                               rinfo::Ptr{Float64}, iw::Ptr{Int32}, irow::Ptr{Int32},
+                               pv::Ptr{Float64}, y::Ptr{Float64})::Cvoid
+end
+
+function la04br(::Type{Float128}, ::Type{Int32}, a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo,
+                iw, irow, pv, y)
+  @ccall libhsl_subset.la04bq_(a::Ptr{Float128}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, bnd::Ptr{Float128}, kb::Ref{Int32},
+                               cntl::Ptr{Float128}, ix::Ptr{Int32}, g::Ptr{Float128},
+                               rinfo::Ptr{Float128}, iw::Ptr{Int32}, irow::Ptr{Int32},
+                               pv::Ptr{Float128}, y::Ptr{Float128})::Cvoid
+end
+
+function la04br(::Type{Float32}, ::Type{Int64}, a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo,
+                iw, irow, pv, y)
+  @ccall libhsl_subset_64.la04b_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
+                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, bnd::Ptr{Float32},
+                                    kb::Ref{Int64}, cntl::Ptr{Float32}, ix::Ptr{Int64},
+                                    g::Ptr{Float32}, rinfo::Ptr{Float32}, iw::Ptr{Int64},
+                                    irow::Ptr{Int64}, pv::Ptr{Float32}, y::Ptr{Float32})::Cvoid
+end
+
+function la04br(::Type{Float64}, ::Type{Int64}, a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo,
+                iw, irow, pv, y)
+  @ccall libhsl_subset_64.la04bd_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64},
+                                     bnd::Ptr{Float64}, kb::Ref{Int64}, cntl::Ptr{Float64},
+                                     ix::Ptr{Int64}, g::Ptr{Float64}, rinfo::Ptr{Float64},
+                                     iw::Ptr{Int64}, irow::Ptr{Int64}, pv::Ptr{Float64},
+                                     y::Ptr{Float64})::Cvoid
+end
+
+function la04br(::Type{Float128}, ::Type{Int64}, a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo,
+                iw, irow, pv, y)
+  @ccall libhsl_subset_64.la04bq_64_(a::Ptr{Float128}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64},
+                                     bnd::Ptr{Float128}, kb::Ref{Int64}, cntl::Ptr{Float128},
+                                     ix::Ptr{Int64}, g::Ptr{Float128}, rinfo::Ptr{Float128},
+                                     iw::Ptr{Int64}, irow::Ptr{Int64}, pv::Ptr{Float128},
+                                     y::Ptr{Float128})::Cvoid
+end
+
+function la04cr(::Type{Float32}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, g, rinfo, x, z, ba, ib, indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
+  @ccall libhsl_subset.la04c_(a::Ptr{Float32}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                              m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float32}, c::Ptr{Float32},
+                              bnd::Ptr{Float32}, kb::Ref{Int32}, lb::Ref{Int32}, job::Ref{Int32},
+                              cntl::Ptr{Float32}, ix::Ptr{Int32}, jx::Ptr{Int32}, g::Ptr{Float32},
+                              rinfo::Ptr{Float32}, x::Ptr{Float32}, z::Ptr{Float32},
+                              ba::Ptr{Float32}, ib::Ref{Int32}, indb::Ptr{Int32}, ipb::Ptr{Int32},
+                              iwb::Ptr{Int32}, v::Ptr{Float32}, w::Ptr{Float32}, y::Ptr{Float32},
+                              yy::Ptr{Float32}, i15::Ptr{Int32}, c15::Ptr{Float32},
+                              iseed::Ref{Int32})::Cvoid
+end
+
+function la04cr(::Type{Float64}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, g, rinfo, x, z, ba, ib, indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
+  @ccall libhsl_subset.la04cd_(a::Ptr{Float64}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float64}, c::Ptr{Float64},
+                               bnd::Ptr{Float64}, kb::Ref{Int32}, lb::Ref{Int32}, job::Ref{Int32},
+                               cntl::Ptr{Float64}, ix::Ptr{Int32}, jx::Ptr{Int32}, g::Ptr{Float64},
+                               rinfo::Ptr{Float64}, x::Ptr{Float64}, z::Ptr{Float64},
+                               ba::Ptr{Float64}, ib::Ref{Int32}, indb::Ptr{Int32}, ipb::Ptr{Int32},
+                               iwb::Ptr{Int32}, v::Ptr{Float64}, w::Ptr{Float64}, y::Ptr{Float64},
+                               yy::Ptr{Float64}, i15::Ptr{Int32}, c15::Ptr{Float64},
+                               iseed::Ref{Int32})::Cvoid
+end
+
+function la04cr(::Type{Float128}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, g, rinfo, x, z, ba, ib, indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
+  @ccall libhsl_subset.la04cq_(a::Ptr{Float128}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float128}, c::Ptr{Float128},
+                               bnd::Ptr{Float128}, kb::Ref{Int32}, lb::Ref{Int32}, job::Ref{Int32},
+                               cntl::Ptr{Float128}, ix::Ptr{Int32}, jx::Ptr{Int32},
+                               g::Ptr{Float128}, rinfo::Ptr{Float128}, x::Ptr{Float128},
+                               z::Ptr{Float128}, ba::Ptr{Float128}, ib::Ref{Int32},
+                               indb::Ptr{Int32}, ipb::Ptr{Int32}, iwb::Ptr{Int32}, v::Ptr{Float128},
+                               w::Ptr{Float128}, y::Ptr{Float128}, yy::Ptr{Float128},
+                               i15::Ptr{Int32}, c15::Ptr{Float128}, iseed::Ref{Int32})::Cvoid
+end
+
+function la04cr(::Type{Float32}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, g, rinfo, x, z, ba, ib, indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
+  @ccall libhsl_subset_64.la04c_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
+                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
+                                    c::Ptr{Float32}, bnd::Ptr{Float32}, kb::Ref{Int64},
+                                    lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float32},
+                                    ix::Ptr{Int64}, jx::Ptr{Int64}, g::Ptr{Float32},
+                                    rinfo::Ptr{Float32}, x::Ptr{Float32}, z::Ptr{Float32},
+                                    ba::Ptr{Float32}, ib::Ref{Int64}, indb::Ptr{Int64},
+                                    ipb::Ptr{Int64}, iwb::Ptr{Int64}, v::Ptr{Float32},
+                                    w::Ptr{Float32}, y::Ptr{Float32}, yy::Ptr{Float32},
+                                    i15::Ptr{Int64}, c15::Ptr{Float32}, iseed::Ref{Int64})::Cvoid
+end
+
+function la04cr(::Type{Float64}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, g, rinfo, x, z, ba, ib, indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
+  @ccall libhsl_subset_64.la04cd_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
+                                     c::Ptr{Float64}, bnd::Ptr{Float64}, kb::Ref{Int64},
+                                     lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float64},
+                                     ix::Ptr{Int64}, jx::Ptr{Int64}, g::Ptr{Float64},
+                                     rinfo::Ptr{Float64}, x::Ptr{Float64}, z::Ptr{Float64},
+                                     ba::Ptr{Float64}, ib::Ref{Int64}, indb::Ptr{Int64},
+                                     ipb::Ptr{Int64}, iwb::Ptr{Int64}, v::Ptr{Float64},
+                                     w::Ptr{Float64}, y::Ptr{Float64}, yy::Ptr{Float64},
+                                     i15::Ptr{Int64}, c15::Ptr{Float64}, iseed::Ref{Int64})::Cvoid
+end
+
+function la04cr(::Type{Float128}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                ix, jx, g, rinfo, x, z, ba, ib, indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
+  @ccall libhsl_subset_64.la04cq_64_(a::Ptr{Float128}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float128},
+                                     c::Ptr{Float128}, bnd::Ptr{Float128}, kb::Ref{Int64},
+                                     lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float128},
+                                     ix::Ptr{Int64}, jx::Ptr{Int64}, g::Ptr{Float128},
+                                     rinfo::Ptr{Float128}, x::Ptr{Float128}, z::Ptr{Float128},
+                                     ba::Ptr{Float128}, ib::Ref{Int64}, indb::Ptr{Int64},
+                                     ipb::Ptr{Int64}, iwb::Ptr{Int64}, v::Ptr{Float128},
+                                     w::Ptr{Float128}, y::Ptr{Float128}, yy::Ptr{Float128},
+                                     i15::Ptr{Int64}, c15::Ptr{Float128}, iseed::Ref{Int64})::Cvoid
+end
+
+function la04dr(::Type{Float32}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                x, ix, jx, z, g, rinfo, ba, indb, ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
+  @ccall libhsl_subset.la04d_(a::Ptr{Float32}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                              m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float32}, c::Ptr{Float32},
+                              bnd::Ptr{Float32}, kb::Ref{Int32}, lb::Ref{Int32}, job::Ref{Int32},
+                              cntl::Ptr{Float32}, x::Ptr{Float32}, ix::Ptr{Int32}, jx::Ptr{Int32},
+                              z::Ptr{Float32}, g::Ptr{Float32}, rinfo::Ptr{Float32},
+                              ba::Ptr{Float32}, indb::Ptr{Int32}, ipb::Ptr{Int32}, iwb::Ptr{Int32},
+                              w::Ptr{Float32}, v::Ptr{Float32}, ir::Ptr{Int32}, y::Ptr{Float32},
+                              yy::Ptr{Float32}, ib::Ref{Int32}, i15::Ptr{Int32},
+                              c15::Ptr{Float32})::Cvoid
+end
+
+function la04dr(::Type{Float64}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                x, ix, jx, z, g, rinfo, ba, indb, ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
+  @ccall libhsl_subset.la04dd_(a::Ptr{Float64}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float64}, c::Ptr{Float64},
+                               bnd::Ptr{Float64}, kb::Ref{Int32}, lb::Ref{Int32}, job::Ref{Int32},
+                               cntl::Ptr{Float64}, x::Ptr{Float64}, ix::Ptr{Int32}, jx::Ptr{Int32},
+                               z::Ptr{Float64}, g::Ptr{Float64}, rinfo::Ptr{Float64},
+                               ba::Ptr{Float64}, indb::Ptr{Int32}, ipb::Ptr{Int32}, iwb::Ptr{Int32},
+                               w::Ptr{Float64}, v::Ptr{Float64}, ir::Ptr{Int32}, y::Ptr{Float64},
+                               yy::Ptr{Float64}, ib::Ref{Int32}, i15::Ptr{Int32},
+                               c15::Ptr{Float64})::Cvoid
+end
+
+function la04dr(::Type{Float128}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                x, ix, jx, z, g, rinfo, ba, indb, ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
+  @ccall libhsl_subset.la04dq_(a::Ptr{Float128}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float128}, c::Ptr{Float128},
+                               bnd::Ptr{Float128}, kb::Ref{Int32}, lb::Ref{Int32}, job::Ref{Int32},
+                               cntl::Ptr{Float128}, x::Ptr{Float128}, ix::Ptr{Int32},
+                               jx::Ptr{Int32}, z::Ptr{Float128}, g::Ptr{Float128},
+                               rinfo::Ptr{Float128}, ba::Ptr{Float128}, indb::Ptr{Int32},
+                               ipb::Ptr{Int32}, iwb::Ptr{Int32}, w::Ptr{Float128}, v::Ptr{Float128},
+                               ir::Ptr{Int32}, y::Ptr{Float128}, yy::Ptr{Float128}, ib::Ref{Int32},
+                               i15::Ptr{Int32}, c15::Ptr{Float128})::Cvoid
+end
+
+function la04dr(::Type{Float32}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                x, ix, jx, z, g, rinfo, ba, indb, ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
+  @ccall libhsl_subset_64.la04d_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
+                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
+                                    c::Ptr{Float32}, bnd::Ptr{Float32}, kb::Ref{Int64},
+                                    lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float32},
+                                    x::Ptr{Float32}, ix::Ptr{Int64}, jx::Ptr{Int64},
+                                    z::Ptr{Float32}, g::Ptr{Float32}, rinfo::Ptr{Float32},
+                                    ba::Ptr{Float32}, indb::Ptr{Int64}, ipb::Ptr{Int64},
+                                    iwb::Ptr{Int64}, w::Ptr{Float32}, v::Ptr{Float32},
+                                    ir::Ptr{Int64}, y::Ptr{Float32}, yy::Ptr{Float32},
+                                    ib::Ref{Int64}, i15::Ptr{Int64}, c15::Ptr{Float32})::Cvoid
+end
+
+function la04dr(::Type{Float64}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                x, ix, jx, z, g, rinfo, ba, indb, ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
+  @ccall libhsl_subset_64.la04dd_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
+                                     c::Ptr{Float64}, bnd::Ptr{Float64}, kb::Ref{Int64},
+                                     lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float64},
+                                     x::Ptr{Float64}, ix::Ptr{Int64}, jx::Ptr{Int64},
+                                     z::Ptr{Float64}, g::Ptr{Float64}, rinfo::Ptr{Float64},
+                                     ba::Ptr{Float64}, indb::Ptr{Int64}, ipb::Ptr{Int64},
+                                     iwb::Ptr{Int64}, w::Ptr{Float64}, v::Ptr{Float64},
+                                     ir::Ptr{Int64}, y::Ptr{Float64}, yy::Ptr{Float64},
+                                     ib::Ref{Int64}, i15::Ptr{Int64}, c15::Ptr{Float64})::Cvoid
+end
+
+function la04dr(::Type{Float128}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl,
+                x, ix, jx, z, g, rinfo, ba, indb, ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
+  @ccall libhsl_subset_64.la04dq_64_(a::Ptr{Float128}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float128},
+                                     c::Ptr{Float128}, bnd::Ptr{Float128}, kb::Ref{Int64},
+                                     lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float128},
+                                     x::Ptr{Float128}, ix::Ptr{Int64}, jx::Ptr{Int64},
+                                     z::Ptr{Float128}, g::Ptr{Float128}, rinfo::Ptr{Float128},
+                                     ba::Ptr{Float128}, indb::Ptr{Int64}, ipb::Ptr{Int64},
+                                     iwb::Ptr{Int64}, w::Ptr{Float128}, v::Ptr{Float128},
+                                     ir::Ptr{Int64}, y::Ptr{Float128}, yy::Ptr{Float128},
+                                     ib::Ref{Int64}, i15::Ptr{Int64}, c15::Ptr{Float128})::Cvoid
+end
+
+function la04er(::Type{Float32}, ::Type{Int32}, a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba,
+                indb, ipb, iwb, w, y, ib, trans, i15, c15)
+  @ccall libhsl_subset.la04e_(a::Ptr{Float32}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                              m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float32}, x::Ptr{Float32},
+                              dx::Ref{Float32}, ix::Ptr{Int32}, jin::Ref{Int32},
+                              rinfo::Ptr{Float32}, ba::Ptr{Float32}, indb::Ptr{Int32},
+                              ipb::Ptr{Int32}, iwb::Ptr{Int32}, w::Ptr{Float32}, y::Ptr{Float32},
+                              ib::Ref{Int32}, trans::Ref{Cint}, i15::Ptr{Int32},
+                              c15::Ptr{Float32})::Cvoid
+end
+
+function la04er(::Type{Float64}, ::Type{Int32}, a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba,
+                indb, ipb, iwb, w, y, ib, trans, i15, c15)
+  @ccall libhsl_subset.la04ed_(a::Ptr{Float64}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float64}, x::Ptr{Float64},
+                               dx::Ref{Float64}, ix::Ptr{Int32}, jin::Ref{Int32},
+                               rinfo::Ptr{Float64}, ba::Ptr{Float64}, indb::Ptr{Int32},
+                               ipb::Ptr{Int32}, iwb::Ptr{Int32}, w::Ptr{Float64}, y::Ptr{Float64},
+                               ib::Ref{Int32}, trans::Ref{Cint}, i15::Ptr{Int32},
+                               c15::Ptr{Float64})::Cvoid
+end
+
+function la04er(::Type{Float128}, ::Type{Int32}, a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba,
+                indb, ipb, iwb, w, y, ib, trans, i15, c15)
+  @ccall libhsl_subset.la04eq_(a::Ptr{Float128}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float128}, x::Ptr{Float128},
+                               dx::Ref{Float128}, ix::Ptr{Int32}, jin::Ref{Int32},
+                               rinfo::Ptr{Float128}, ba::Ptr{Float128}, indb::Ptr{Int32},
+                               ipb::Ptr{Int32}, iwb::Ptr{Int32}, w::Ptr{Float128}, y::Ptr{Float128},
+                               ib::Ref{Int32}, trans::Ref{Cint}, i15::Ptr{Int32},
+                               c15::Ptr{Float128})::Cvoid
+end
+
+function la04er(::Type{Float32}, ::Type{Int64}, a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba,
+                indb, ipb, iwb, w, y, ib, trans, i15, c15)
+  @ccall libhsl_subset_64.la04e_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
+                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
+                                    x::Ptr{Float32}, dx::Ref{Float32}, ix::Ptr{Int64},
+                                    jin::Ref{Int64}, rinfo::Ptr{Float32}, ba::Ptr{Float32},
+                                    indb::Ptr{Int64}, ipb::Ptr{Int64}, iwb::Ptr{Int64},
+                                    w::Ptr{Float32}, y::Ptr{Float32}, ib::Ref{Int64},
+                                    trans::Ref{Cint}, i15::Ptr{Int64}, c15::Ptr{Float32})::Cvoid
+end
+
+function la04er(::Type{Float64}, ::Type{Int64}, a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba,
+                indb, ipb, iwb, w, y, ib, trans, i15, c15)
+  @ccall libhsl_subset_64.la04ed_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
+                                     x::Ptr{Float64}, dx::Ref{Float64}, ix::Ptr{Int64},
+                                     jin::Ref{Int64}, rinfo::Ptr{Float64}, ba::Ptr{Float64},
+                                     indb::Ptr{Int64}, ipb::Ptr{Int64}, iwb::Ptr{Int64},
+                                     w::Ptr{Float64}, y::Ptr{Float64}, ib::Ref{Int64},
+                                     trans::Ref{Cint}, i15::Ptr{Int64}, c15::Ptr{Float64})::Cvoid
+end
+
+function la04er(::Type{Float128}, ::Type{Int64}, a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba,
+                indb, ipb, iwb, w, y, ib, trans, i15, c15)
+  @ccall libhsl_subset_64.la04eq_64_(a::Ptr{Float128}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float128},
+                                     x::Ptr{Float128}, dx::Ref{Float128}, ix::Ptr{Int64},
+                                     jin::Ref{Int64}, rinfo::Ptr{Float128}, ba::Ptr{Float128},
+                                     indb::Ptr{Int64}, ipb::Ptr{Int64}, iwb::Ptr{Int64},
+                                     w::Ptr{Float128}, y::Ptr{Float128}, ib::Ref{Int64},
+                                     trans::Ref{Cint}, i15::Ptr{Int64}, c15::Ptr{Float128})::Cvoid
+end
+
+function la04sr(::Type{Float32}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs,
+                ws, jcn)
+  @ccall libhsl_subset.la04s_(a::Ptr{Float32}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                              m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float32}, c::Ptr{Float32},
+                              bnd::Ptr{Float32}, kb::Ref{Int32}, sigma::Ref{Float32},
+                              rs::Ptr{Float32}, cs::Ptr{Float32}, ws::Ptr{Float32},
+                              jcn::Ptr{Int32})::Cvoid
+end
+
+function la04sr(::Type{Float64}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs,
+                ws, jcn)
+  @ccall libhsl_subset.la04sd_(a::Ptr{Float64}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float64}, c::Ptr{Float64},
+                               bnd::Ptr{Float64}, kb::Ref{Int32}, sigma::Ref{Float64},
+                               rs::Ptr{Float64}, cs::Ptr{Float64}, ws::Ptr{Float64},
+                               jcn::Ptr{Int32})::Cvoid
+end
+
+function la04sr(::Type{Float128}, ::Type{Int32}, a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs,
+                ws, jcn)
+  @ccall libhsl_subset.la04sq_(a::Ptr{Float128}, la::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               m::Ref{Int32}, n::Ref{Int32}, b::Ptr{Float128}, c::Ptr{Float128},
+                               bnd::Ptr{Float128}, kb::Ref{Int32}, sigma::Ref{Float128},
+                               rs::Ptr{Float128}, cs::Ptr{Float128}, ws::Ptr{Float128},
+                               jcn::Ptr{Int32})::Cvoid
+end
+
+function la04sr(::Type{Float32}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs,
+                ws, jcn)
+  @ccall libhsl_subset_64.la04s_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
+                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
+                                    c::Ptr{Float32}, bnd::Ptr{Float32}, kb::Ref{Int64},
+                                    sigma::Ref{Float32}, rs::Ptr{Float32}, cs::Ptr{Float32},
+                                    ws::Ptr{Float32}, jcn::Ptr{Int64})::Cvoid
+end
+
+function la04sr(::Type{Float64}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs,
+                ws, jcn)
+  @ccall libhsl_subset_64.la04sd_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
+                                     c::Ptr{Float64}, bnd::Ptr{Float64}, kb::Ref{Int64},
+                                     sigma::Ref{Float64}, rs::Ptr{Float64}, cs::Ptr{Float64},
+                                     ws::Ptr{Float64}, jcn::Ptr{Int64})::Cvoid
+end
+
+function la04sr(::Type{Float128}, ::Type{Int64}, a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs,
+                ws, jcn)
+  @ccall libhsl_subset_64.la04sq_64_(a::Ptr{Float128}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float128},
+                                     c::Ptr{Float128}, bnd::Ptr{Float128}, kb::Ref{Int64},
+                                     sigma::Ref{Float128}, rs::Ptr{Float128}, cs::Ptr{Float128},
+                                     ws::Ptr{Float128}, jcn::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/la15.jl b/src/Fortran/hsl_subset/la15.jl
new file mode 100644
index 0000000..ad6b1bb
--- /dev/null
+++ b/src/Fortran/hsl_subset/la15.jl
@@ -0,0 +1,202 @@
+function la15ir(::Type{Float32}, ::Type{Int32}, icntl, cntl, keep)
+  @ccall libhsl_subset.la15i_(icntl::Ptr{Int32}, cntl::Ptr{Float32}, keep::Ptr{Int32})::Cvoid
+end
+
+function la15ir(::Type{Float64}, ::Type{Int32}, icntl, cntl, keep)
+  @ccall libhsl_subset.la15id_(icntl::Ptr{Int32}, cntl::Ptr{Float64}, keep::Ptr{Int32})::Cvoid
+end
+
+function la15ir(::Type{Float128}, ::Type{Int32}, icntl, cntl, keep)
+  @ccall libhsl_subset.la15iq_(icntl::Ptr{Int32}, cntl::Ptr{Float128}, keep::Ptr{Int32})::Cvoid
+end
+
+function la15ir(::Type{Float32}, ::Type{Int64}, icntl, cntl, keep)
+  @ccall libhsl_subset_64.la15i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32}, keep::Ptr{Int64})::Cvoid
+end
+
+function la15ir(::Type{Float64}, ::Type{Int64}, icntl, cntl, keep)
+  @ccall libhsl_subset_64.la15id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64}, keep::Ptr{Int64})::Cvoid
+end
+
+function la15ir(::Type{Float128}, ::Type{Int64}, icntl, cntl, keep)
+  @ccall libhsl_subset_64.la15iq_64_(icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     keep::Ptr{Int64})::Cvoid
+end
+
+function la15ar(::Type{Float32}, ::Type{Int32}, a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl,
+                keep)
+  @ccall libhsl_subset.la15a_(a::Ptr{Float32}, ind::Ptr{Int32}, nzero::Ref{Int32}, ia::Ref{Int32},
+                              n::Ref{Int32}, ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float32},
+                              g::Ref{Float32}, u::Ref{Float32}, icntl::Ptr{Int32},
+                              cntl::Ptr{Float32}, keep::Ptr{Int32})::Cvoid
+end
+
+function la15ar(::Type{Float64}, ::Type{Int32}, a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl,
+                keep)
+  @ccall libhsl_subset.la15ad_(a::Ptr{Float64}, ind::Ptr{Int32}, nzero::Ref{Int32}, ia::Ref{Int32},
+                               n::Ref{Int32}, ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float64},
+                               g::Ref{Float64}, u::Ref{Float64}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float64}, keep::Ptr{Int32})::Cvoid
+end
+
+function la15ar(::Type{Float128}, ::Type{Int32}, a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl,
+                keep)
+  @ccall libhsl_subset.la15aq_(a::Ptr{Float128}, ind::Ptr{Int32}, nzero::Ref{Int32}, ia::Ref{Int32},
+                               n::Ref{Int32}, ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float128},
+                               g::Ref{Float128}, u::Ref{Float128}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float128}, keep::Ptr{Int32})::Cvoid
+end
+
+function la15ar(::Type{Float32}, ::Type{Int64}, a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl,
+                keep)
+  @ccall libhsl_subset_64.la15a_64_(a::Ptr{Float32}, ind::Ptr{Int64}, nzero::Ref{Int64},
+                                    ia::Ref{Int64}, n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64},
+                                    w::Ptr{Float32}, g::Ref{Float32}, u::Ref{Float32},
+                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, keep::Ptr{Int64})::Cvoid
+end
+
+function la15ar(::Type{Float64}, ::Type{Int64}, a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl,
+                keep)
+  @ccall libhsl_subset_64.la15ad_64_(a::Ptr{Float64}, ind::Ptr{Int64}, nzero::Ref{Int64},
+                                     ia::Ref{Int64}, n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64},
+                                     w::Ptr{Float64}, g::Ref{Float64}, u::Ref{Float64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, keep::Ptr{Int64})::Cvoid
+end
+
+function la15ar(::Type{Float128}, ::Type{Int64}, a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl,
+                keep)
+  @ccall libhsl_subset_64.la15aq_64_(a::Ptr{Float128}, ind::Ptr{Int64}, nzero::Ref{Int64},
+                                     ia::Ref{Int64}, n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64},
+                                     w::Ptr{Float128}, g::Ref{Float128}, u::Ref{Float128},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     keep::Ptr{Int64})::Cvoid
+end
+
+function la15br(::Type{Float32}, ::Type{Int32}, a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
+  @ccall libhsl_subset.la15b_(a::Ptr{Float32}, ind::Ptr{Int32}, ia::Ref{Int32}, n::Ref{Int32},
+                              ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float32}, g::Ref{Float32},
+                              b::Ptr{Float32}, trans::Ref{Cint}, icntl::Ptr{Int32},
+                              keep::Ptr{Int32})::Cvoid
+end
+
+function la15br(::Type{Float64}, ::Type{Int32}, a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
+  @ccall libhsl_subset.la15bd_(a::Ptr{Float64}, ind::Ptr{Int32}, ia::Ref{Int32}, n::Ref{Int32},
+                               ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float64}, g::Ref{Float64},
+                               b::Ptr{Float64}, trans::Ref{Cint}, icntl::Ptr{Int32},
+                               keep::Ptr{Int32})::Cvoid
+end
+
+function la15br(::Type{Float128}, ::Type{Int32}, a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
+  @ccall libhsl_subset.la15bq_(a::Ptr{Float128}, ind::Ptr{Int32}, ia::Ref{Int32}, n::Ref{Int32},
+                               ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float128}, g::Ref{Float128},
+                               b::Ptr{Float128}, trans::Ref{Cint}, icntl::Ptr{Int32},
+                               keep::Ptr{Int32})::Cvoid
+end
+
+function la15br(::Type{Float32}, ::Type{Int64}, a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
+  @ccall libhsl_subset_64.la15b_64_(a::Ptr{Float32}, ind::Ptr{Int64}, ia::Ref{Int64}, n::Ref{Int64},
+                                    ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float32},
+                                    g::Ref{Float32}, b::Ptr{Float32}, trans::Ref{Cint},
+                                    icntl::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
+end
+
+function la15br(::Type{Float64}, ::Type{Int64}, a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
+  @ccall libhsl_subset_64.la15bd_64_(a::Ptr{Float64}, ind::Ptr{Int64}, ia::Ref{Int64},
+                                     n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float64},
+                                     g::Ref{Float64}, b::Ptr{Float64}, trans::Ref{Cint},
+                                     icntl::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
+end
+
+function la15br(::Type{Float128}, ::Type{Int64}, a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
+  @ccall libhsl_subset_64.la15bq_64_(a::Ptr{Float128}, ind::Ptr{Int64}, ia::Ref{Int64},
+                                     n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64},
+                                     w::Ptr{Float128}, g::Ref{Float128}, b::Ptr{Float128},
+                                     trans::Ref{Cint}, icntl::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
+end
+
+function la15cr(::Type{Float32}, ::Type{Int32}, a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl,
+                keep)
+  @ccall libhsl_subset.la15c_(a::Ptr{Float32}, ind::Ptr{Int32}, ia::Ref{Int32}, n::Ref{Int32},
+                              ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float32}, g::Ref{Float32},
+                              u::Ref{Float32}, mm::Ref{Int32}, icntl::Ptr{Int32},
+                              cntl::Ptr{Float32}, keep::Ptr{Int32})::Cvoid
+end
+
+function la15cr(::Type{Float64}, ::Type{Int32}, a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl,
+                keep)
+  @ccall libhsl_subset.la15cd_(a::Ptr{Float64}, ind::Ptr{Int32}, ia::Ref{Int32}, n::Ref{Int32},
+                               ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float64}, g::Ref{Float64},
+                               u::Ref{Float64}, mm::Ref{Int32}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float64}, keep::Ptr{Int32})::Cvoid
+end
+
+function la15cr(::Type{Float128}, ::Type{Int32}, a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl,
+                keep)
+  @ccall libhsl_subset.la15cq_(a::Ptr{Float128}, ind::Ptr{Int32}, ia::Ref{Int32}, n::Ref{Int32},
+                               ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float128}, g::Ref{Float128},
+                               u::Ref{Float128}, mm::Ref{Int32}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float128}, keep::Ptr{Int32})::Cvoid
+end
+
+function la15cr(::Type{Float32}, ::Type{Int64}, a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl,
+                keep)
+  @ccall libhsl_subset_64.la15c_64_(a::Ptr{Float32}, ind::Ptr{Int64}, ia::Ref{Int64}, n::Ref{Int64},
+                                    ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float32},
+                                    g::Ref{Float32}, u::Ref{Float32}, mm::Ref{Int64},
+                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, keep::Ptr{Int64})::Cvoid
+end
+
+function la15cr(::Type{Float64}, ::Type{Int64}, a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl,
+                keep)
+  @ccall libhsl_subset_64.la15cd_64_(a::Ptr{Float64}, ind::Ptr{Int64}, ia::Ref{Int64},
+                                     n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float64},
+                                     g::Ref{Float64}, u::Ref{Float64}, mm::Ref{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, keep::Ptr{Int64})::Cvoid
+end
+
+function la15cr(::Type{Float128}, ::Type{Int64}, a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl,
+                keep)
+  @ccall libhsl_subset_64.la15cq_64_(a::Ptr{Float128}, ind::Ptr{Int64}, ia::Ref{Int64},
+                                     n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64},
+                                     w::Ptr{Float128}, g::Ref{Float128}, u::Ref{Float128},
+                                     mm::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     keep::Ptr{Int64})::Cvoid
+end
+
+function la15er(::Type{Float32}, ::Type{Int32}, a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
+  @ccall libhsl_subset.la15e_(a::Ptr{Float32}, irn::Ptr{Int32}, ip::Ptr{Int32}, n::Ref{Int32},
+                              iw::Ptr{Int32}, ia::Ref{Int32}, reals::Ref{Cint}, ncp::Ref{Int32},
+                              lrow::Ref{Int32}, lcol::Ref{Int32})::Cvoid
+end
+
+function la15er(::Type{Float64}, ::Type{Int32}, a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
+  @ccall libhsl_subset.la15ed_(a::Ptr{Float64}, irn::Ptr{Int32}, ip::Ptr{Int32}, n::Ref{Int32},
+                               iw::Ptr{Int32}, ia::Ref{Int32}, reals::Ref{Cint}, ncp::Ref{Int32},
+                               lrow::Ref{Int32}, lcol::Ref{Int32})::Cvoid
+end
+
+function la15er(::Type{Float128}, ::Type{Int32}, a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
+  @ccall libhsl_subset.la15eq_(a::Ptr{Float128}, irn::Ptr{Int32}, ip::Ptr{Int32}, n::Ref{Int32},
+                               iw::Ptr{Int32}, ia::Ref{Int32}, reals::Ref{Cint}, ncp::Ref{Int32},
+                               lrow::Ref{Int32}, lcol::Ref{Int32})::Cvoid
+end
+
+function la15er(::Type{Float32}, ::Type{Int64}, a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
+  @ccall libhsl_subset_64.la15e_64_(a::Ptr{Float32}, irn::Ptr{Int64}, ip::Ptr{Int64}, n::Ref{Int64},
+                                    iw::Ptr{Int64}, ia::Ref{Int64}, reals::Ref{Cint},
+                                    ncp::Ref{Int64}, lrow::Ref{Int64}, lcol::Ref{Int64})::Cvoid
+end
+
+function la15er(::Type{Float64}, ::Type{Int64}, a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
+  @ccall libhsl_subset_64.la15ed_64_(a::Ptr{Float64}, irn::Ptr{Int64}, ip::Ptr{Int64},
+                                     n::Ref{Int64}, iw::Ptr{Int64}, ia::Ref{Int64},
+                                     reals::Ref{Cint}, ncp::Ref{Int64}, lrow::Ref{Int64},
+                                     lcol::Ref{Int64})::Cvoid
+end
+
+function la15er(::Type{Float128}, ::Type{Int64}, a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
+  @ccall libhsl_subset_64.la15eq_64_(a::Ptr{Float128}, irn::Ptr{Int64}, ip::Ptr{Int64},
+                                     n::Ref{Int64}, iw::Ptr{Int64}, ia::Ref{Int64},
+                                     reals::Ref{Cint}, ncp::Ref{Int64}, lrow::Ref{Int64},
+                                     lcol::Ref{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/lapack.jl b/src/Fortran/hsl_subset/lapack.jl
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/src/Fortran/hsl_subset/lapack.jl
@@ -0,0 +1 @@
+
diff --git a/src/Fortran/hsl_subset/ma27.jl b/src/Fortran/hsl_subset/ma27.jl
new file mode 100644
index 0000000..a3f3483
--- /dev/null
+++ b/src/Fortran/hsl_subset/ma27.jl
@@ -0,0 +1,716 @@
+function ma27ir(::Type{Float32}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.ma27i_(icntl::Ptr{Int32}, cntl::Ptr{Float32})::Cvoid
+end
+
+function ma27ir(::Type{Float64}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.ma27id_(icntl::Ptr{Int32}, cntl::Ptr{Float64})::Cvoid
+end
+
+function ma27ir(::Type{Float128}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.ma27iq_(icntl::Ptr{Int32}, cntl::Ptr{Float128})::Cvoid
+end
+
+function ma27ir(::Type{Float32}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.ma27i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32})::Cvoid
+end
+
+function ma27ir(::Type{Float64}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.ma27id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64})::Cvoid
+end
+
+function ma27ir(::Type{Float128}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.ma27iq_64_(icntl::Ptr{Int64}, cntl::Ptr{Float128})::Cvoid
+end
+
+function ma27ar(::Type{Float32}, ::Type{Int32}, n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps, iflag,
+                icntl, cntl, info, ops)
+  @ccall libhsl_subset.ma27a_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                              iw::Ptr{Int32}, liw::Ref{Int32}, ikeep::Ptr{Int32}, iw1::Ptr{Int32},
+                              nsteps::Ref{Int32}, iflag::Ref{Int32}, icntl::Ptr{Int32},
+                              cntl::Ptr{Float32}, info::Ptr{Int32}, ops::Ref{Float32})::Cvoid
+end
+
+function ma27ar(::Type{Float64}, ::Type{Int32}, n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps, iflag,
+                icntl, cntl, info, ops)
+  @ccall libhsl_subset.ma27ad_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               iw::Ptr{Int32}, liw::Ref{Int32}, ikeep::Ptr{Int32}, iw1::Ptr{Int32},
+                               nsteps::Ref{Int32}, iflag::Ref{Int32}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float64}, info::Ptr{Int32}, ops::Ref{Float64})::Cvoid
+end
+
+function ma27ar(::Type{Float128}, ::Type{Int32}, n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps,
+                iflag, icntl, cntl, info, ops)
+  @ccall libhsl_subset.ma27aq_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               iw::Ptr{Int32}, liw::Ref{Int32}, ikeep::Ptr{Int32}, iw1::Ptr{Int32},
+                               nsteps::Ref{Int32}, iflag::Ref{Int32}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float128}, info::Ptr{Int32}, ops::Ref{Float128})::Cvoid
+end
+
+function ma27ar(::Type{Float32}, ::Type{Int64}, n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps, iflag,
+                icntl, cntl, info, ops)
+  @ccall libhsl_subset_64.ma27a_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
+                                    iw::Ptr{Int64}, liw::Ref{Int64}, ikeep::Ptr{Int64},
+                                    iw1::Ptr{Int64}, nsteps::Ref{Int64}, iflag::Ref{Int64},
+                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, info::Ptr{Int64},
+                                    ops::Ref{Float32})::Cvoid
+end
+
+function ma27ar(::Type{Float64}, ::Type{Int64}, n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps, iflag,
+                icntl, cntl, info, ops)
+  @ccall libhsl_subset_64.ma27ad_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
+                                     ikeep::Ptr{Int64}, iw1::Ptr{Int64}, nsteps::Ref{Int64},
+                                     iflag::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
+                                     info::Ptr{Int64}, ops::Ref{Float64})::Cvoid
+end
+
+function ma27ar(::Type{Float128}, ::Type{Int64}, n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps,
+                iflag, icntl, cntl, info, ops)
+  @ccall libhsl_subset_64.ma27aq_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
+                                     ikeep::Ptr{Int64}, iw1::Ptr{Int64}, nsteps::Ref{Int64},
+                                     iflag::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     info::Ptr{Int64}, ops::Ref{Float128})::Cvoid
+end
+
+function ma27br(::Type{Float32}, ::Type{Int32}, n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps,
+                maxfrt, iw1, icntl, cntl, info)
+  @ccall libhsl_subset.ma27b_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                              a::Ptr{Float32}, la::Ref{Int32}, iw::Ptr{Int32}, liw::Ref{Int32},
+                              ikeep::Ptr{Int32}, nsteps::Ref{Int32}, maxfrt::Ref{Int32},
+                              iw1::Ptr{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float32},
+                              info::Ptr{Int32})::Cvoid
+end
+
+function ma27br(::Type{Float64}, ::Type{Int32}, n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps,
+                maxfrt, iw1, icntl, cntl, info)
+  @ccall libhsl_subset.ma27bd_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               a::Ptr{Float64}, la::Ref{Int32}, iw::Ptr{Int32}, liw::Ref{Int32},
+                               ikeep::Ptr{Int32}, nsteps::Ref{Int32}, maxfrt::Ref{Int32},
+                               iw1::Ptr{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float64},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma27br(::Type{Float128}, ::Type{Int32}, n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps,
+                maxfrt, iw1, icntl, cntl, info)
+  @ccall libhsl_subset.ma27bq_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               a::Ptr{Float128}, la::Ref{Int32}, iw::Ptr{Int32}, liw::Ref{Int32},
+                               ikeep::Ptr{Int32}, nsteps::Ref{Int32}, maxfrt::Ref{Int32},
+                               iw1::Ptr{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float128},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma27br(::Type{Float32}, ::Type{Int64}, n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps,
+                maxfrt, iw1, icntl, cntl, info)
+  @ccall libhsl_subset_64.ma27b_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
+                                    a::Ptr{Float32}, la::Ref{Int64}, iw::Ptr{Int64},
+                                    liw::Ref{Int64}, ikeep::Ptr{Int64}, nsteps::Ref{Int64},
+                                    maxfrt::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64},
+                                    cntl::Ptr{Float32}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27br(::Type{Float64}, ::Type{Int64}, n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps,
+                maxfrt, iw1, icntl, cntl, info)
+  @ccall libhsl_subset_64.ma27bd_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, a::Ptr{Float64}, la::Ref{Int64},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, ikeep::Ptr{Int64},
+                                     nsteps::Ref{Int64}, maxfrt::Ref{Int64}, iw1::Ptr{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27br(::Type{Float128}, ::Type{Int64}, n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps,
+                maxfrt, iw1, icntl, cntl, info)
+  @ccall libhsl_subset_64.ma27bq_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, a::Ptr{Float128}, la::Ref{Int64},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, ikeep::Ptr{Int64},
+                                     nsteps::Ref{Int64}, maxfrt::Ref{Int64}, iw1::Ptr{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function ma27cr(::Type{Float32}, ::Type{Int32}, n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps,
+                icntl, info)
+  @ccall libhsl_subset.ma27c_(n::Ref{Int32}, a::Ptr{Float32}, la::Ref{Int32}, iw::Ptr{Int32},
+                              liw::Ref{Int32}, w::Ptr{Float32}, maxfrt::Ref{Int32},
+                              rhs::Ptr{Float32}, iw1::Ptr{Int32}, nsteps::Ref{Int32},
+                              icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma27cr(::Type{Float64}, ::Type{Int32}, n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps,
+                icntl, info)
+  @ccall libhsl_subset.ma27cd_(n::Ref{Int32}, a::Ptr{Float64}, la::Ref{Int32}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, w::Ptr{Float64}, maxfrt::Ref{Int32},
+                               rhs::Ptr{Float64}, iw1::Ptr{Int32}, nsteps::Ref{Int32},
+                               icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma27cr(::Type{Float128}, ::Type{Int32}, n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps,
+                icntl, info)
+  @ccall libhsl_subset.ma27cq_(n::Ref{Int32}, a::Ptr{Float128}, la::Ref{Int32}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, w::Ptr{Float128}, maxfrt::Ref{Int32},
+                               rhs::Ptr{Float128}, iw1::Ptr{Int32}, nsteps::Ref{Int32},
+                               icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma27cr(::Type{Float32}, ::Type{Int64}, n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps,
+                icntl, info)
+  @ccall libhsl_subset_64.ma27c_64_(n::Ref{Int64}, a::Ptr{Float32}, la::Ref{Int64}, iw::Ptr{Int64},
+                                    liw::Ref{Int64}, w::Ptr{Float32}, maxfrt::Ref{Int64},
+                                    rhs::Ptr{Float32}, iw1::Ptr{Int64}, nsteps::Ref{Int64},
+                                    icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27cr(::Type{Float64}, ::Type{Int64}, n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps,
+                icntl, info)
+  @ccall libhsl_subset_64.ma27cd_64_(n::Ref{Int64}, a::Ptr{Float64}, la::Ref{Int64}, iw::Ptr{Int64},
+                                     liw::Ref{Int64}, w::Ptr{Float64}, maxfrt::Ref{Int64},
+                                     rhs::Ptr{Float64}, iw1::Ptr{Int64}, nsteps::Ref{Int64},
+                                     icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27cr(::Type{Float128}, ::Type{Int64}, n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps,
+                icntl, info)
+  @ccall libhsl_subset_64.ma27cq_64_(n::Ref{Int64}, a::Ptr{Float128}, la::Ref{Int64},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, w::Ptr{Float128},
+                                     maxfrt::Ref{Int64}, rhs::Ptr{Float128}, iw1::Ptr{Int64},
+                                     nsteps::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27gr(::Type{Float32}, ::Type{Int32}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset.ma27g_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                              iw::Ptr{Int32}, lw::Ref{Int32}, ipe::Ptr{Int32}, iq::Ptr{Int32},
+                              flag::Ptr{Int32}, iwfr::Ref{Int32}, icntl::Ptr{Int32},
+                              info::Ptr{Int32})::Cvoid
+end
+
+function ma27gr(::Type{Float64}, ::Type{Int32}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset.ma27gd_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               iw::Ptr{Int32}, lw::Ref{Int32}, ipe::Ptr{Int32}, iq::Ptr{Int32},
+                               flag::Ptr{Int32}, iwfr::Ref{Int32}, icntl::Ptr{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma27gr(::Type{Float128}, ::Type{Int32}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset.ma27gq_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               iw::Ptr{Int32}, lw::Ref{Int32}, ipe::Ptr{Int32}, iq::Ptr{Int32},
+                               flag::Ptr{Int32}, iwfr::Ref{Int32}, icntl::Ptr{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma27gr(::Type{Float32}, ::Type{Int64}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset_64.ma27g_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
+                                    iw::Ptr{Int64}, lw::Ref{Int64}, ipe::Ptr{Int64}, iq::Ptr{Int64},
+                                    flag::Ptr{Int64}, iwfr::Ref{Int64}, icntl::Ptr{Int64},
+                                    info::Ptr{Int64})::Cvoid
+end
+
+function ma27gr(::Type{Float64}, ::Type{Int64}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset_64.ma27gd_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     ipe::Ptr{Int64}, iq::Ptr{Int64}, flag::Ptr{Int64},
+                                     iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27gr(::Type{Float128}, ::Type{Int64}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset_64.ma27gq_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     ipe::Ptr{Int64}, iq::Ptr{Int64}, flag::Ptr{Int64},
+                                     iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27hr(::Type{Float32}, ::Type{Int32}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset.ma27h_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                              iwfr::Ref{Int32}, nv::Ptr{Int32}, nxt::Ptr{Int32}, lst::Ptr{Int32},
+                              ipd::Ptr{Int32}, flag::Ptr{Int32}, iovflo::Ref{Int32},
+                              ncmpa::Ref{Int32}, fratio::Ref{Float32})::Cvoid
+end
+
+function ma27hr(::Type{Float64}, ::Type{Int32}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset.ma27hd_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, nv::Ptr{Int32}, nxt::Ptr{Int32}, lst::Ptr{Int32},
+                               ipd::Ptr{Int32}, flag::Ptr{Int32}, iovflo::Ref{Int32},
+                               ncmpa::Ref{Int32}, fratio::Ref{Float64})::Cvoid
+end
+
+function ma27hr(::Type{Float128}, ::Type{Int32}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset.ma27hq_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, nv::Ptr{Int32}, nxt::Ptr{Int32}, lst::Ptr{Int32},
+                               ipd::Ptr{Int32}, flag::Ptr{Int32}, iovflo::Ref{Int32},
+                               ncmpa::Ref{Int32}, fratio::Ref{Float128})::Cvoid
+end
+
+function ma27hr(::Type{Float32}, ::Type{Int64}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset_64.ma27h_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                    iwfr::Ref{Int64}, nv::Ptr{Int64}, nxt::Ptr{Int64},
+                                    lst::Ptr{Int64}, ipd::Ptr{Int64}, flag::Ptr{Int64},
+                                    iovflo::Ref{Int64}, ncmpa::Ref{Int64},
+                                    fratio::Ref{Float32})::Cvoid
+end
+
+function ma27hr(::Type{Float64}, ::Type{Int64}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset_64.ma27hd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, nv::Ptr{Int64}, nxt::Ptr{Int64},
+                                     lst::Ptr{Int64}, ipd::Ptr{Int64}, flag::Ptr{Int64},
+                                     iovflo::Ref{Int64}, ncmpa::Ref{Int64},
+                                     fratio::Ref{Float64})::Cvoid
+end
+
+function ma27hr(::Type{Float128}, ::Type{Int64}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset_64.ma27hq_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, nv::Ptr{Int64}, nxt::Ptr{Int64},
+                                     lst::Ptr{Int64}, ipd::Ptr{Int64}, flag::Ptr{Int64},
+                                     iovflo::Ref{Int64}, ncmpa::Ref{Int64},
+                                     fratio::Ref{Float128})::Cvoid
+end
+
+function ma27ur(::Type{Float32}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset.ma27u_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                              iwfr::Ref{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma27ur(::Type{Float64}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset.ma27ud_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma27ur(::Type{Float128}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset.ma27uq_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma27ur(::Type{Float32}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset_64.ma27u_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                    iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma27ur(::Type{Float64}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset_64.ma27ud_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma27ur(::Type{Float128}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset_64.ma27uq_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma27jr(::Type{Float32}, ::Type{Int32}, n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset.ma27j_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                              perm::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32}, ipe::Ptr{Int32},
+                              iq::Ptr{Int32}, flag::Ptr{Int32}, iwfr::Ref{Int32}, icntl::Ptr{Int32},
+                              info::Ptr{Int32})::Cvoid
+end
+
+function ma27jr(::Type{Float64}, ::Type{Int32}, n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset.ma27jd_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               perm::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32}, ipe::Ptr{Int32},
+                               iq::Ptr{Int32}, flag::Ptr{Int32}, iwfr::Ref{Int32},
+                               icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma27jr(::Type{Float128}, ::Type{Int32}, n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset.ma27jq_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               perm::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32}, ipe::Ptr{Int32},
+                               iq::Ptr{Int32}, flag::Ptr{Int32}, iwfr::Ref{Int32},
+                               icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma27jr(::Type{Float32}, ::Type{Int64}, n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset_64.ma27j_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
+                                    perm::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                    ipe::Ptr{Int64}, iq::Ptr{Int64}, flag::Ptr{Int64},
+                                    iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27jr(::Type{Float64}, ::Type{Int64}, n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset_64.ma27jd_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, perm::Ptr{Int64}, iw::Ptr{Int64},
+                                     lw::Ref{Int64}, ipe::Ptr{Int64}, iq::Ptr{Int64},
+                                     flag::Ptr{Int64}, iwfr::Ref{Int64}, icntl::Ptr{Int64},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function ma27jr(::Type{Float128}, ::Type{Int64}, n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset_64.ma27jq_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, perm::Ptr{Int64}, iw::Ptr{Int64},
+                                     lw::Ref{Int64}, ipe::Ptr{Int64}, iq::Ptr{Int64},
+                                     flag::Ptr{Int64}, iwfr::Ref{Int64}, icntl::Ptr{Int64},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function ma27kr(::Type{Float32}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
+  @ccall libhsl_subset.ma27k_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                              iwfr::Ref{Int32}, ips::Ptr{Int32}, ipv::Ptr{Int32}, nv::Ptr{Int32},
+                              flag::Ptr{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma27kr(::Type{Float64}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
+  @ccall libhsl_subset.ma27kd_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, ips::Ptr{Int32}, ipv::Ptr{Int32}, nv::Ptr{Int32},
+                               flag::Ptr{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma27kr(::Type{Float128}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
+  @ccall libhsl_subset.ma27kq_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, ips::Ptr{Int32}, ipv::Ptr{Int32}, nv::Ptr{Int32},
+                               flag::Ptr{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma27kr(::Type{Float32}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
+  @ccall libhsl_subset_64.ma27k_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                    iwfr::Ref{Int64}, ips::Ptr{Int64}, ipv::Ptr{Int64},
+                                    nv::Ptr{Int64}, flag::Ptr{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma27kr(::Type{Float64}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
+  @ccall libhsl_subset_64.ma27kd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, ips::Ptr{Int64}, ipv::Ptr{Int64},
+                                     nv::Ptr{Int64}, flag::Ptr{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma27kr(::Type{Float128}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
+  @ccall libhsl_subset_64.ma27kq_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, ips::Ptr{Int64}, ipv::Ptr{Int64},
+                                     nv::Ptr{Int64}, flag::Ptr{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma27lr(::Type{Float32}, ::Type{Int32}, n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
+  @ccall libhsl_subset.ma27l_(n::Ref{Int32}, ipe::Ptr{Int32}, nv::Ptr{Int32}, ips::Ptr{Int32},
+                              ne::Ptr{Int32}, na::Ptr{Int32}, nd::Ptr{Int32}, nsteps::Ref{Int32},
+                              nemin::Ref{Int32})::Cvoid
+end
+
+function ma27lr(::Type{Float64}, ::Type{Int32}, n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
+  @ccall libhsl_subset.ma27ld_(n::Ref{Int32}, ipe::Ptr{Int32}, nv::Ptr{Int32}, ips::Ptr{Int32},
+                               ne::Ptr{Int32}, na::Ptr{Int32}, nd::Ptr{Int32}, nsteps::Ref{Int32},
+                               nemin::Ref{Int32})::Cvoid
+end
+
+function ma27lr(::Type{Float128}, ::Type{Int32}, n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
+  @ccall libhsl_subset.ma27lq_(n::Ref{Int32}, ipe::Ptr{Int32}, nv::Ptr{Int32}, ips::Ptr{Int32},
+                               ne::Ptr{Int32}, na::Ptr{Int32}, nd::Ptr{Int32}, nsteps::Ref{Int32},
+                               nemin::Ref{Int32})::Cvoid
+end
+
+function ma27lr(::Type{Float32}, ::Type{Int64}, n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
+  @ccall libhsl_subset_64.ma27l_64_(n::Ref{Int64}, ipe::Ptr{Int64}, nv::Ptr{Int64}, ips::Ptr{Int64},
+                                    ne::Ptr{Int64}, na::Ptr{Int64}, nd::Ptr{Int64},
+                                    nsteps::Ref{Int64}, nemin::Ref{Int64})::Cvoid
+end
+
+function ma27lr(::Type{Float64}, ::Type{Int64}, n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
+  @ccall libhsl_subset_64.ma27ld_64_(n::Ref{Int64}, ipe::Ptr{Int64}, nv::Ptr{Int64},
+                                     ips::Ptr{Int64}, ne::Ptr{Int64}, na::Ptr{Int64},
+                                     nd::Ptr{Int64}, nsteps::Ref{Int64}, nemin::Ref{Int64})::Cvoid
+end
+
+function ma27lr(::Type{Float128}, ::Type{Int64}, n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
+  @ccall libhsl_subset_64.ma27lq_64_(n::Ref{Int64}, ipe::Ptr{Int64}, nv::Ptr{Int64},
+                                     ips::Ptr{Int64}, ne::Ptr{Int64}, na::Ptr{Int64},
+                                     nd::Ptr{Int64}, nsteps::Ref{Int64}, nemin::Ref{Int64})::Cvoid
+end
+
+function ma27mr(::Type{Float32}, ::Type{Int32}, n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki,
+                lstkr, iw, info, ops)
+  @ccall libhsl_subset.ma27m_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                              perm::Ptr{Int32}, na::Ptr{Int32}, ne::Ptr{Int32}, nd::Ptr{Int32},
+                              nsteps::Ref{Int32}, lstki::Ptr{Int32}, lstkr::Ptr{Int32},
+                              iw::Ptr{Int32}, info::Ptr{Int32}, ops::Ref{Float32})::Cvoid
+end
+
+function ma27mr(::Type{Float64}, ::Type{Int32}, n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki,
+                lstkr, iw, info, ops)
+  @ccall libhsl_subset.ma27md_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               perm::Ptr{Int32}, na::Ptr{Int32}, ne::Ptr{Int32}, nd::Ptr{Int32},
+                               nsteps::Ref{Int32}, lstki::Ptr{Int32}, lstkr::Ptr{Int32},
+                               iw::Ptr{Int32}, info::Ptr{Int32}, ops::Ref{Float64})::Cvoid
+end
+
+function ma27mr(::Type{Float128}, ::Type{Int32}, n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki,
+                lstkr, iw, info, ops)
+  @ccall libhsl_subset.ma27mq_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               perm::Ptr{Int32}, na::Ptr{Int32}, ne::Ptr{Int32}, nd::Ptr{Int32},
+                               nsteps::Ref{Int32}, lstki::Ptr{Int32}, lstkr::Ptr{Int32},
+                               iw::Ptr{Int32}, info::Ptr{Int32}, ops::Ref{Float128})::Cvoid
+end
+
+function ma27mr(::Type{Float32}, ::Type{Int64}, n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki,
+                lstkr, iw, info, ops)
+  @ccall libhsl_subset_64.ma27m_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
+                                    perm::Ptr{Int64}, na::Ptr{Int64}, ne::Ptr{Int64},
+                                    nd::Ptr{Int64}, nsteps::Ref{Int64}, lstki::Ptr{Int64},
+                                    lstkr::Ptr{Int64}, iw::Ptr{Int64}, info::Ptr{Int64},
+                                    ops::Ref{Float32})::Cvoid
+end
+
+function ma27mr(::Type{Float64}, ::Type{Int64}, n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki,
+                lstkr, iw, info, ops)
+  @ccall libhsl_subset_64.ma27md_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, perm::Ptr{Int64}, na::Ptr{Int64},
+                                     ne::Ptr{Int64}, nd::Ptr{Int64}, nsteps::Ref{Int64},
+                                     lstki::Ptr{Int64}, lstkr::Ptr{Int64}, iw::Ptr{Int64},
+                                     info::Ptr{Int64}, ops::Ref{Float64})::Cvoid
+end
+
+function ma27mr(::Type{Float128}, ::Type{Int64}, n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki,
+                lstkr, iw, info, ops)
+  @ccall libhsl_subset_64.ma27mq_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, perm::Ptr{Int64}, na::Ptr{Int64},
+                                     ne::Ptr{Int64}, nd::Ptr{Int64}, nsteps::Ref{Int64},
+                                     lstki::Ptr{Int64}, lstkr::Ptr{Int64}, iw::Ptr{Int64},
+                                     info::Ptr{Int64}, ops::Ref{Float128})::Cvoid
+end
+
+function ma27nr(::Type{Float32}, ::Type{Int32}, n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2,
+                icntl, info)
+  @ccall libhsl_subset.ma27n_(n::Ref{Int32}, nz::Ref{Int32}, nz1::Ref{Int32}, a::Ptr{Float32},
+                              la::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32}, iw::Ptr{Int32},
+                              liw::Ref{Int32}, perm::Ptr{Int32}, iw2::Ptr{Int32}, icntl::Ptr{Int32},
+                              info::Ptr{Int32})::Cvoid
+end
+
+function ma27nr(::Type{Float64}, ::Type{Int32}, n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2,
+                icntl, info)
+  @ccall libhsl_subset.ma27nd_(n::Ref{Int32}, nz::Ref{Int32}, nz1::Ref{Int32}, a::Ptr{Float64},
+                               la::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, perm::Ptr{Int32}, iw2::Ptr{Int32},
+                               icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma27nr(::Type{Float128}, ::Type{Int32}, n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2,
+                icntl, info)
+  @ccall libhsl_subset.ma27nq_(n::Ref{Int32}, nz::Ref{Int32}, nz1::Ref{Int32}, a::Ptr{Float128},
+                               la::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, perm::Ptr{Int32}, iw2::Ptr{Int32},
+                               icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma27nr(::Type{Float32}, ::Type{Int64}, n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2,
+                icntl, info)
+  @ccall libhsl_subset_64.ma27n_64_(n::Ref{Int64}, nz::Ref{Int64}, nz1::Ref{Int64}, a::Ptr{Float32},
+                                    la::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
+                                    iw::Ptr{Int64}, liw::Ref{Int64}, perm::Ptr{Int64},
+                                    iw2::Ptr{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27nr(::Type{Float64}, ::Type{Int64}, n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2,
+                icntl, info)
+  @ccall libhsl_subset_64.ma27nd_64_(n::Ref{Int64}, nz::Ref{Int64}, nz1::Ref{Int64},
+                                     a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
+                                     perm::Ptr{Int64}, iw2::Ptr{Int64}, icntl::Ptr{Int64},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function ma27nr(::Type{Float128}, ::Type{Int64}, n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2,
+                icntl, info)
+  @ccall libhsl_subset_64.ma27nq_64_(n::Ref{Int64}, nz::Ref{Int64}, nz1::Ref{Int64},
+                                     a::Ptr{Float128}, la::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
+                                     perm::Ptr{Int64}, iw2::Ptr{Int64}, icntl::Ptr{Int64},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function ma27or(::Type{Float32}, ::Type{Int32}, n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt,
+                nelim, iw2, icntl, cntl, info)
+  @ccall libhsl_subset.ma27o_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float32}, la::Ref{Int32},
+                              iw::Ptr{Int32}, liw::Ref{Int32}, perm::Ptr{Int32}, nstk::Ptr{Int32},
+                              nsteps::Ref{Int32}, maxfrt::Ref{Int32}, nelim::Ptr{Int32},
+                              iw2::Ptr{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float32},
+                              info::Ptr{Int32})::Cvoid
+end
+
+function ma27or(::Type{Float64}, ::Type{Int32}, n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt,
+                nelim, iw2, icntl, cntl, info)
+  @ccall libhsl_subset.ma27od_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float64}, la::Ref{Int32},
+                               iw::Ptr{Int32}, liw::Ref{Int32}, perm::Ptr{Int32}, nstk::Ptr{Int32},
+                               nsteps::Ref{Int32}, maxfrt::Ref{Int32}, nelim::Ptr{Int32},
+                               iw2::Ptr{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float64},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma27or(::Type{Float128}, ::Type{Int32}, n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt,
+                nelim, iw2, icntl, cntl, info)
+  @ccall libhsl_subset.ma27oq_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float128}, la::Ref{Int32},
+                               iw::Ptr{Int32}, liw::Ref{Int32}, perm::Ptr{Int32}, nstk::Ptr{Int32},
+                               nsteps::Ref{Int32}, maxfrt::Ref{Int32}, nelim::Ptr{Int32},
+                               iw2::Ptr{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float128},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma27or(::Type{Float32}, ::Type{Int64}, n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt,
+                nelim, iw2, icntl, cntl, info)
+  @ccall libhsl_subset_64.ma27o_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32}, la::Ref{Int64},
+                                    iw::Ptr{Int64}, liw::Ref{Int64}, perm::Ptr{Int64},
+                                    nstk::Ptr{Int64}, nsteps::Ref{Int64}, maxfrt::Ref{Int64},
+                                    nelim::Ptr{Int64}, iw2::Ptr{Int64}, icntl::Ptr{Int64},
+                                    cntl::Ptr{Float32}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27or(::Type{Float64}, ::Type{Int64}, n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt,
+                nelim, iw2, icntl, cntl, info)
+  @ccall libhsl_subset_64.ma27od_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64}, la::Ref{Int64},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, perm::Ptr{Int64},
+                                     nstk::Ptr{Int64}, nsteps::Ref{Int64}, maxfrt::Ref{Int64},
+                                     nelim::Ptr{Int64}, iw2::Ptr{Int64}, icntl::Ptr{Int64},
+                                     cntl::Ptr{Float64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma27or(::Type{Float128}, ::Type{Int64}, n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt,
+                nelim, iw2, icntl, cntl, info)
+  @ccall libhsl_subset_64.ma27oq_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float128},
+                                     la::Ref{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
+                                     perm::Ptr{Int64}, nstk::Ptr{Int64}, nsteps::Ref{Int64},
+                                     maxfrt::Ref{Int64}, nelim::Ptr{Int64}, iw2::Ptr{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function ma27pr(::Type{Float32}, ::Type{Int32}, a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
+  @ccall libhsl_subset.ma27p_(a::Ptr{Float32}, iw::Ptr{Int32}, j1::Ref{Int32}, j2::Ref{Int32},
+                              itop::Ref{Int32}, ireal::Ref{Int32}, ncmpbr::Ref{Int32},
+                              ncmpbi::Ref{Int32})::Cvoid
+end
+
+function ma27pr(::Type{Float64}, ::Type{Int32}, a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
+  @ccall libhsl_subset.ma27pd_(a::Ptr{Float64}, iw::Ptr{Int32}, j1::Ref{Int32}, j2::Ref{Int32},
+                               itop::Ref{Int32}, ireal::Ref{Int32}, ncmpbr::Ref{Int32},
+                               ncmpbi::Ref{Int32})::Cvoid
+end
+
+function ma27pr(::Type{Float128}, ::Type{Int32}, a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
+  @ccall libhsl_subset.ma27pq_(a::Ptr{Float128}, iw::Ptr{Int32}, j1::Ref{Int32}, j2::Ref{Int32},
+                               itop::Ref{Int32}, ireal::Ref{Int32}, ncmpbr::Ref{Int32},
+                               ncmpbi::Ref{Int32})::Cvoid
+end
+
+function ma27pr(::Type{Float32}, ::Type{Int64}, a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
+  @ccall libhsl_subset_64.ma27p_64_(a::Ptr{Float32}, iw::Ptr{Int64}, j1::Ref{Int64}, j2::Ref{Int64},
+                                    itop::Ref{Int64}, ireal::Ref{Int64}, ncmpbr::Ref{Int64},
+                                    ncmpbi::Ref{Int64})::Cvoid
+end
+
+function ma27pr(::Type{Float64}, ::Type{Int64}, a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
+  @ccall libhsl_subset_64.ma27pd_64_(a::Ptr{Float64}, iw::Ptr{Int64}, j1::Ref{Int64},
+                                     j2::Ref{Int64}, itop::Ref{Int64}, ireal::Ref{Int64},
+                                     ncmpbr::Ref{Int64}, ncmpbi::Ref{Int64})::Cvoid
+end
+
+function ma27pr(::Type{Float128}, ::Type{Int64}, a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
+  @ccall libhsl_subset_64.ma27pq_64_(a::Ptr{Float128}, iw::Ptr{Int64}, j1::Ref{Int64},
+                                     j2::Ref{Int64}, itop::Ref{Int64}, ireal::Ref{Int64},
+                                     ncmpbr::Ref{Int64}, ncmpbi::Ref{Int64})::Cvoid
+end
+
+function ma27qr(::Type{Float32}, ::Type{Int32}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop,
+                icntl)
+  @ccall libhsl_subset.ma27q_(n::Ref{Int32}, a::Ptr{Float32}, la::Ref{Int32}, iw::Ptr{Int32},
+                              liw::Ref{Int32}, w::Ptr{Float32}, maxfnt::Ref{Int32},
+                              rhs::Ptr{Float32}, iw2::Ptr{Int32}, nblk::Ref{Int32},
+                              latop::Ref{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma27qr(::Type{Float64}, ::Type{Int32}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop,
+                icntl)
+  @ccall libhsl_subset.ma27qd_(n::Ref{Int32}, a::Ptr{Float64}, la::Ref{Int32}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, w::Ptr{Float64}, maxfnt::Ref{Int32},
+                               rhs::Ptr{Float64}, iw2::Ptr{Int32}, nblk::Ref{Int32},
+                               latop::Ref{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma27qr(::Type{Float128}, ::Type{Int32}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk,
+                latop, icntl)
+  @ccall libhsl_subset.ma27qq_(n::Ref{Int32}, a::Ptr{Float128}, la::Ref{Int32}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, w::Ptr{Float128}, maxfnt::Ref{Int32},
+                               rhs::Ptr{Float128}, iw2::Ptr{Int32}, nblk::Ref{Int32},
+                               latop::Ref{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma27qr(::Type{Float32}, ::Type{Int64}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop,
+                icntl)
+  @ccall libhsl_subset_64.ma27q_64_(n::Ref{Int64}, a::Ptr{Float32}, la::Ref{Int64}, iw::Ptr{Int64},
+                                    liw::Ref{Int64}, w::Ptr{Float32}, maxfnt::Ref{Int64},
+                                    rhs::Ptr{Float32}, iw2::Ptr{Int64}, nblk::Ref{Int64},
+                                    latop::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma27qr(::Type{Float64}, ::Type{Int64}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop,
+                icntl)
+  @ccall libhsl_subset_64.ma27qd_64_(n::Ref{Int64}, a::Ptr{Float64}, la::Ref{Int64}, iw::Ptr{Int64},
+                                     liw::Ref{Int64}, w::Ptr{Float64}, maxfnt::Ref{Int64},
+                                     rhs::Ptr{Float64}, iw2::Ptr{Int64}, nblk::Ref{Int64},
+                                     latop::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma27qr(::Type{Float128}, ::Type{Int64}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk,
+                latop, icntl)
+  @ccall libhsl_subset_64.ma27qq_64_(n::Ref{Int64}, a::Ptr{Float128}, la::Ref{Int64},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, w::Ptr{Float128},
+                                     maxfnt::Ref{Int64}, rhs::Ptr{Float128}, iw2::Ptr{Int64},
+                                     nblk::Ref{Int64}, latop::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma27rr(::Type{Float32}, ::Type{Int32}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop,
+                icntl)
+  @ccall libhsl_subset.ma27r_(n::Ref{Int32}, a::Ptr{Float32}, la::Ref{Int32}, iw::Ptr{Int32},
+                              liw::Ref{Int32}, w::Ptr{Float32}, maxfnt::Ref{Int32},
+                              rhs::Ptr{Float32}, iw2::Ptr{Int32}, nblk::Ref{Int32},
+                              latop::Ref{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma27rr(::Type{Float64}, ::Type{Int32}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop,
+                icntl)
+  @ccall libhsl_subset.ma27rd_(n::Ref{Int32}, a::Ptr{Float64}, la::Ref{Int32}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, w::Ptr{Float64}, maxfnt::Ref{Int32},
+                               rhs::Ptr{Float64}, iw2::Ptr{Int32}, nblk::Ref{Int32},
+                               latop::Ref{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma27rr(::Type{Float128}, ::Type{Int32}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk,
+                latop, icntl)
+  @ccall libhsl_subset.ma27rq_(n::Ref{Int32}, a::Ptr{Float128}, la::Ref{Int32}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, w::Ptr{Float128}, maxfnt::Ref{Int32},
+                               rhs::Ptr{Float128}, iw2::Ptr{Int32}, nblk::Ref{Int32},
+                               latop::Ref{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma27rr(::Type{Float32}, ::Type{Int64}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop,
+                icntl)
+  @ccall libhsl_subset_64.ma27r_64_(n::Ref{Int64}, a::Ptr{Float32}, la::Ref{Int64}, iw::Ptr{Int64},
+                                    liw::Ref{Int64}, w::Ptr{Float32}, maxfnt::Ref{Int64},
+                                    rhs::Ptr{Float32}, iw2::Ptr{Int64}, nblk::Ref{Int64},
+                                    latop::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma27rr(::Type{Float64}, ::Type{Int64}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop,
+                icntl)
+  @ccall libhsl_subset_64.ma27rd_64_(n::Ref{Int64}, a::Ptr{Float64}, la::Ref{Int64}, iw::Ptr{Int64},
+                                     liw::Ref{Int64}, w::Ptr{Float64}, maxfnt::Ref{Int64},
+                                     rhs::Ptr{Float64}, iw2::Ptr{Int64}, nblk::Ref{Int64},
+                                     latop::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma27rr(::Type{Float128}, ::Type{Int64}, n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk,
+                latop, icntl)
+  @ccall libhsl_subset_64.ma27rq_64_(n::Ref{Int64}, a::Ptr{Float128}, la::Ref{Int64},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, w::Ptr{Float128},
+                                     maxfnt::Ref{Int64}, rhs::Ptr{Float128}, iw2::Ptr{Int64},
+                                     nblk::Ref{Int64}, latop::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/ma28.jl b/src/Fortran/hsl_subset/ma28.jl
new file mode 100644
index 0000000..3d359af
--- /dev/null
+++ b/src/Fortran/hsl_subset/ma28.jl
@@ -0,0 +1,246 @@
+function ma28ar(::Type{Float32}, ::Type{Int32}, n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset.ma28a_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float32}, licn::Ref{Int32},
+                              irn::Ptr{Int32}, lirn::Ref{Int32}, icn::Ptr{Int32}, u::Ref{Float32},
+                              ikeep::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float32},
+                              iflag::Ref{Int32})::Cvoid
+end
+
+function ma28ar(::Type{Float64}, ::Type{Int32}, n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset.ma28ad_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float64}, licn::Ref{Int32},
+                               irn::Ptr{Int32}, lirn::Ref{Int32}, icn::Ptr{Int32}, u::Ref{Float64},
+                               ikeep::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float64},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma28ar(::Type{Float128}, ::Type{Int32}, n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset.ma28aq_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float128}, licn::Ref{Int32},
+                               irn::Ptr{Int32}, lirn::Ref{Int32}, icn::Ptr{Int32}, u::Ref{Float128},
+                               ikeep::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float128},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma28ar(::Type{Float32}, ::Type{Int64}, n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset_64.ma28a_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32},
+                                    licn::Ref{Int64}, irn::Ptr{Int64}, lirn::Ref{Int64},
+                                    icn::Ptr{Int64}, u::Ref{Float32}, ikeep::Ptr{Int64},
+                                    iw::Ptr{Int64}, w::Ptr{Float32}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma28ar(::Type{Float64}, ::Type{Int64}, n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset_64.ma28ad_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64},
+                                     licn::Ref{Int64}, irn::Ptr{Int64}, lirn::Ref{Int64},
+                                     icn::Ptr{Int64}, u::Ref{Float64}, ikeep::Ptr{Int64},
+                                     iw::Ptr{Int64}, w::Ptr{Float64}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma28ar(::Type{Float128}, ::Type{Int64}, n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset_64.ma28aq_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float128},
+                                     licn::Ref{Int64}, irn::Ptr{Int64}, lirn::Ref{Int64},
+                                     icn::Ptr{Int64}, u::Ref{Float128}, ikeep::Ptr{Int64},
+                                     iw::Ptr{Int64}, w::Ptr{Float128}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma28br(::Type{Float32}, ::Type{Int32}, n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset.ma28b_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float32}, licn::Ref{Int32},
+                              ivect::Ptr{Int32}, jvect::Ptr{Int32}, icn::Ptr{Int32},
+                              ikeep::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float32},
+                              iflag::Ref{Int32})::Cvoid
+end
+
+function ma28br(::Type{Float64}, ::Type{Int32}, n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset.ma28bd_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float64}, licn::Ref{Int32},
+                               ivect::Ptr{Int32}, jvect::Ptr{Int32}, icn::Ptr{Int32},
+                               ikeep::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float64},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma28br(::Type{Float128}, ::Type{Int32}, n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset.ma28bq_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float128}, licn::Ref{Int32},
+                               ivect::Ptr{Int32}, jvect::Ptr{Int32}, icn::Ptr{Int32},
+                               ikeep::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float128},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma28br(::Type{Float32}, ::Type{Int64}, n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset_64.ma28b_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32},
+                                    licn::Ref{Int64}, ivect::Ptr{Int64}, jvect::Ptr{Int64},
+                                    icn::Ptr{Int64}, ikeep::Ptr{Int64}, iw::Ptr{Int64},
+                                    w::Ptr{Float32}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma28br(::Type{Float64}, ::Type{Int64}, n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset_64.ma28bd_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64},
+                                     licn::Ref{Int64}, ivect::Ptr{Int64}, jvect::Ptr{Int64},
+                                     icn::Ptr{Int64}, ikeep::Ptr{Int64}, iw::Ptr{Int64},
+                                     w::Ptr{Float64}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma28br(::Type{Float128}, ::Type{Int64}, n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w,
+                iflag)
+  @ccall libhsl_subset_64.ma28bq_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float128},
+                                     licn::Ref{Int64}, ivect::Ptr{Int64}, jvect::Ptr{Int64},
+                                     icn::Ptr{Int64}, ikeep::Ptr{Int64}, iw::Ptr{Int64},
+                                     w::Ptr{Float128}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma28cr(::Type{Float32}, ::Type{Int32}, n, a, licn, icn, ikeep, rhs, w, mtype)
+  @ccall libhsl_subset.ma28c_(n::Ref{Int32}, a::Ptr{Float32}, licn::Ref{Int32}, icn::Ptr{Int32},
+                              ikeep::Ptr{Int32}, rhs::Ptr{Float32}, w::Ptr{Float32},
+                              mtype::Ref{Int32})::Cvoid
+end
+
+function ma28cr(::Type{Float64}, ::Type{Int32}, n, a, licn, icn, ikeep, rhs, w, mtype)
+  @ccall libhsl_subset.ma28cd_(n::Ref{Int32}, a::Ptr{Float64}, licn::Ref{Int32}, icn::Ptr{Int32},
+                               ikeep::Ptr{Int32}, rhs::Ptr{Float64}, w::Ptr{Float64},
+                               mtype::Ref{Int32})::Cvoid
+end
+
+function ma28cr(::Type{Float128}, ::Type{Int32}, n, a, licn, icn, ikeep, rhs, w, mtype)
+  @ccall libhsl_subset.ma28cq_(n::Ref{Int32}, a::Ptr{Float128}, licn::Ref{Int32}, icn::Ptr{Int32},
+                               ikeep::Ptr{Int32}, rhs::Ptr{Float128}, w::Ptr{Float128},
+                               mtype::Ref{Int32})::Cvoid
+end
+
+function ma28cr(::Type{Float32}, ::Type{Int64}, n, a, licn, icn, ikeep, rhs, w, mtype)
+  @ccall libhsl_subset_64.ma28c_64_(n::Ref{Int64}, a::Ptr{Float32}, licn::Ref{Int64},
+                                    icn::Ptr{Int64}, ikeep::Ptr{Int64}, rhs::Ptr{Float32},
+                                    w::Ptr{Float32}, mtype::Ref{Int64})::Cvoid
+end
+
+function ma28cr(::Type{Float64}, ::Type{Int64}, n, a, licn, icn, ikeep, rhs, w, mtype)
+  @ccall libhsl_subset_64.ma28cd_64_(n::Ref{Int64}, a::Ptr{Float64}, licn::Ref{Int64},
+                                     icn::Ptr{Int64}, ikeep::Ptr{Int64}, rhs::Ptr{Float64},
+                                     w::Ptr{Float64}, mtype::Ref{Int64})::Cvoid
+end
+
+function ma28cr(::Type{Float128}, ::Type{Int64}, n, a, licn, icn, ikeep, rhs, w, mtype)
+  @ccall libhsl_subset_64.ma28cq_64_(n::Ref{Int64}, a::Ptr{Float128}, licn::Ref{Int64},
+                                     icn::Ptr{Int64}, ikeep::Ptr{Int64}, rhs::Ptr{Float128},
+                                     w::Ptr{Float128}, mtype::Ref{Int64})::Cvoid
+end
+
+function ma28dr(::Type{Float32}, ::Type{Int32}, n, a, licn, ivect, jvect, nz, icn, lenr, lenrl,
+                lenoff, ip, iq, iw1, iw, w1, iflag)
+  @ccall libhsl_subset.ma28d_(n::Ref{Int32}, a::Ptr{Float32}, licn::Ref{Int32}, ivect::Ptr{Int32},
+                              jvect::Ptr{Int32}, nz::Ref{Int32}, icn::Ptr{Int32}, lenr::Ptr{Int32},
+                              lenrl::Ptr{Int32}, lenoff::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32},
+                              iw1::Ptr{Int32}, iw::Ptr{Int32}, w1::Ref{Float32},
+                              iflag::Ref{Int32})::Cvoid
+end
+
+function ma28dr(::Type{Float64}, ::Type{Int32}, n, a, licn, ivect, jvect, nz, icn, lenr, lenrl,
+                lenoff, ip, iq, iw1, iw, w1, iflag)
+  @ccall libhsl_subset.ma28dd_(n::Ref{Int32}, a::Ptr{Float64}, licn::Ref{Int32}, ivect::Ptr{Int32},
+                               jvect::Ptr{Int32}, nz::Ref{Int32}, icn::Ptr{Int32}, lenr::Ptr{Int32},
+                               lenrl::Ptr{Int32}, lenoff::Ptr{Int32}, ip::Ptr{Int32},
+                               iq::Ptr{Int32}, iw1::Ptr{Int32}, iw::Ptr{Int32}, w1::Ref{Float64},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma28dr(::Type{Float128}, ::Type{Int32}, n, a, licn, ivect, jvect, nz, icn, lenr, lenrl,
+                lenoff, ip, iq, iw1, iw, w1, iflag)
+  @ccall libhsl_subset.ma28dq_(n::Ref{Int32}, a::Ptr{Float128}, licn::Ref{Int32}, ivect::Ptr{Int32},
+                               jvect::Ptr{Int32}, nz::Ref{Int32}, icn::Ptr{Int32}, lenr::Ptr{Int32},
+                               lenrl::Ptr{Int32}, lenoff::Ptr{Int32}, ip::Ptr{Int32},
+                               iq::Ptr{Int32}, iw1::Ptr{Int32}, iw::Ptr{Int32}, w1::Ref{Float128},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma28dr(::Type{Float32}, ::Type{Int64}, n, a, licn, ivect, jvect, nz, icn, lenr, lenrl,
+                lenoff, ip, iq, iw1, iw, w1, iflag)
+  @ccall libhsl_subset_64.ma28d_64_(n::Ref{Int64}, a::Ptr{Float32}, licn::Ref{Int64},
+                                    ivect::Ptr{Int64}, jvect::Ptr{Int64}, nz::Ref{Int64},
+                                    icn::Ptr{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                    lenoff::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                    iw1::Ptr{Int64}, iw::Ptr{Int64}, w1::Ref{Float32},
+                                    iflag::Ref{Int64})::Cvoid
+end
+
+function ma28dr(::Type{Float64}, ::Type{Int64}, n, a, licn, ivect, jvect, nz, icn, lenr, lenrl,
+                lenoff, ip, iq, iw1, iw, w1, iflag)
+  @ccall libhsl_subset_64.ma28dd_64_(n::Ref{Int64}, a::Ptr{Float64}, licn::Ref{Int64},
+                                     ivect::Ptr{Int64}, jvect::Ptr{Int64}, nz::Ref{Int64},
+                                     icn::Ptr{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     lenoff::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                     iw1::Ptr{Int64}, iw::Ptr{Int64}, w1::Ref{Float64},
+                                     iflag::Ref{Int64})::Cvoid
+end
+
+function ma28dr(::Type{Float128}, ::Type{Int64}, n, a, licn, ivect, jvect, nz, icn, lenr, lenrl,
+                lenoff, ip, iq, iw1, iw, w1, iflag)
+  @ccall libhsl_subset_64.ma28dq_64_(n::Ref{Int64}, a::Ptr{Float128}, licn::Ref{Int64},
+                                     ivect::Ptr{Int64}, jvect::Ptr{Int64}, nz::Ref{Int64},
+                                     icn::Ptr{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     lenoff::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                     iw1::Ptr{Int64}, iw::Ptr{Int64}, w1::Ref{Float128},
+                                     iflag::Ref{Int64})::Cvoid
+end
+
+function ma28ir(::Type{Float32}, ::Type{Int32}, n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep,
+                rhs, x, r, w, mtype, prec, iflag)
+  @ccall libhsl_subset.ma28i_(n::Ref{Int32}, nz::Ref{Int32}, aorg::Ptr{Float32}, irnorg::Ptr{Int32},
+                              icnorg::Ptr{Int32}, licn::Ref{Int32}, a::Ptr{Float32},
+                              icn::Ptr{Int32}, ikeep::Ptr{Int32}, rhs::Ptr{Float32},
+                              x::Ptr{Float32}, r::Ptr{Float32}, w::Ptr{Float32}, mtype::Ref{Int32},
+                              prec::Ref{Float32}, iflag::Ref{Int32})::Cvoid
+end
+
+function ma28ir(::Type{Float64}, ::Type{Int32}, n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep,
+                rhs, x, r, w, mtype, prec, iflag)
+  @ccall libhsl_subset.ma28id_(n::Ref{Int32}, nz::Ref{Int32}, aorg::Ptr{Float64},
+                               irnorg::Ptr{Int32}, icnorg::Ptr{Int32}, licn::Ref{Int32},
+                               a::Ptr{Float64}, icn::Ptr{Int32}, ikeep::Ptr{Int32},
+                               rhs::Ptr{Float64}, x::Ptr{Float64}, r::Ptr{Float64}, w::Ptr{Float64},
+                               mtype::Ref{Int32}, prec::Ref{Float64}, iflag::Ref{Int32})::Cvoid
+end
+
+function ma28ir(::Type{Float128}, ::Type{Int32}, n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep,
+                rhs, x, r, w, mtype, prec, iflag)
+  @ccall libhsl_subset.ma28iq_(n::Ref{Int32}, nz::Ref{Int32}, aorg::Ptr{Float128},
+                               irnorg::Ptr{Int32}, icnorg::Ptr{Int32}, licn::Ref{Int32},
+                               a::Ptr{Float128}, icn::Ptr{Int32}, ikeep::Ptr{Int32},
+                               rhs::Ptr{Float128}, x::Ptr{Float128}, r::Ptr{Float128},
+                               w::Ptr{Float128}, mtype::Ref{Int32}, prec::Ref{Float128},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma28ir(::Type{Float32}, ::Type{Int64}, n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep,
+                rhs, x, r, w, mtype, prec, iflag)
+  @ccall libhsl_subset_64.ma28i_64_(n::Ref{Int64}, nz::Ref{Int64}, aorg::Ptr{Float32},
+                                    irnorg::Ptr{Int64}, icnorg::Ptr{Int64}, licn::Ref{Int64},
+                                    a::Ptr{Float32}, icn::Ptr{Int64}, ikeep::Ptr{Int64},
+                                    rhs::Ptr{Float32}, x::Ptr{Float32}, r::Ptr{Float32},
+                                    w::Ptr{Float32}, mtype::Ref{Int64}, prec::Ref{Float32},
+                                    iflag::Ref{Int64})::Cvoid
+end
+
+function ma28ir(::Type{Float64}, ::Type{Int64}, n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep,
+                rhs, x, r, w, mtype, prec, iflag)
+  @ccall libhsl_subset_64.ma28id_64_(n::Ref{Int64}, nz::Ref{Int64}, aorg::Ptr{Float64},
+                                     irnorg::Ptr{Int64}, icnorg::Ptr{Int64}, licn::Ref{Int64},
+                                     a::Ptr{Float64}, icn::Ptr{Int64}, ikeep::Ptr{Int64},
+                                     rhs::Ptr{Float64}, x::Ptr{Float64}, r::Ptr{Float64},
+                                     w::Ptr{Float64}, mtype::Ref{Int64}, prec::Ref{Float64},
+                                     iflag::Ref{Int64})::Cvoid
+end
+
+function ma28ir(::Type{Float128}, ::Type{Int64}, n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep,
+                rhs, x, r, w, mtype, prec, iflag)
+  @ccall libhsl_subset_64.ma28iq_64_(n::Ref{Int64}, nz::Ref{Int64}, aorg::Ptr{Float128},
+                                     irnorg::Ptr{Int64}, icnorg::Ptr{Int64}, licn::Ref{Int64},
+                                     a::Ptr{Float128}, icn::Ptr{Int64}, ikeep::Ptr{Int64},
+                                     rhs::Ptr{Float128}, x::Ptr{Float128}, r::Ptr{Float128},
+                                     w::Ptr{Float128}, mtype::Ref{Int64}, prec::Ref{Float128},
+                                     iflag::Ref{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/ma30.jl b/src/Fortran/hsl_subset/ma30.jl
new file mode 100644
index 0000000..7a22d08
--- /dev/null
+++ b/src/Fortran/hsl_subset/ma30.jl
@@ -0,0 +1,197 @@
+function ma30ar(::Type{Float32}, ::Type{Int32}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag)
+  @ccall libhsl_subset.ma30a_(nn::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float32}, licn::Ref{Int32},
+                              lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                              ip::Ptr{Int32}, iq::Ptr{Int32}, irn::Ptr{Int32}, lirn::Ref{Int32},
+                              lenc::Ptr{Int32}, ifirst::Ptr{Int32}, lastr::Ptr{Int32},
+                              nextr::Ptr{Int32}, lastc::Ptr{Int32}, nextc::Ptr{Int32},
+                              iptr::Ptr{Int32}, ipc::Ptr{Int32}, u::Ref{Float32},
+                              iflag::Ref{Int32})::Cvoid
+end
+
+function ma30ar(::Type{Float64}, ::Type{Int32}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag)
+  @ccall libhsl_subset.ma30ad_(nn::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float64}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                               ip::Ptr{Int32}, iq::Ptr{Int32}, irn::Ptr{Int32}, lirn::Ref{Int32},
+                               lenc::Ptr{Int32}, ifirst::Ptr{Int32}, lastr::Ptr{Int32},
+                               nextr::Ptr{Int32}, lastc::Ptr{Int32}, nextc::Ptr{Int32},
+                               iptr::Ptr{Int32}, ipc::Ptr{Int32}, u::Ref{Float64},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma30ar(::Type{Float128}, ::Type{Int32}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag)
+  @ccall libhsl_subset.ma30aq_(nn::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float128}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                               ip::Ptr{Int32}, iq::Ptr{Int32}, irn::Ptr{Int32}, lirn::Ref{Int32},
+                               lenc::Ptr{Int32}, ifirst::Ptr{Int32}, lastr::Ptr{Int32},
+                               nextr::Ptr{Int32}, lastc::Ptr{Int32}, nextc::Ptr{Int32},
+                               iptr::Ptr{Int32}, ipc::Ptr{Int32}, u::Ref{Float128},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma30ar(::Type{Float32}, ::Type{Int64}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag)
+  @ccall libhsl_subset_64.ma30a_64_(nn::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
+                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                    idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                    irn::Ptr{Int64}, lirn::Ref{Int64}, lenc::Ptr{Int64},
+                                    ifirst::Ptr{Int64}, lastr::Ptr{Int64}, nextr::Ptr{Int64},
+                                    lastc::Ptr{Int64}, nextc::Ptr{Int64}, iptr::Ptr{Int64},
+                                    ipc::Ptr{Int64}, u::Ref{Float32}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma30ar(::Type{Float64}, ::Type{Int64}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag)
+  @ccall libhsl_subset_64.ma30ad_64_(nn::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                     irn::Ptr{Int64}, lirn::Ref{Int64}, lenc::Ptr{Int64},
+                                     ifirst::Ptr{Int64}, lastr::Ptr{Int64}, nextr::Ptr{Int64},
+                                     lastc::Ptr{Int64}, nextc::Ptr{Int64}, iptr::Ptr{Int64},
+                                     ipc::Ptr{Int64}, u::Ref{Float64}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma30ar(::Type{Float128}, ::Type{Int64}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag)
+  @ccall libhsl_subset_64.ma30aq_64_(nn::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float128},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                     irn::Ptr{Int64}, lirn::Ref{Int64}, lenc::Ptr{Int64},
+                                     ifirst::Ptr{Int64}, lastr::Ptr{Int64}, nextr::Ptr{Int64},
+                                     lastc::Ptr{Int64}, nextc::Ptr{Int64}, iptr::Ptr{Int64},
+                                     ipc::Ptr{Int64}, u::Ref{Float128}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma30br(::Type{Float32}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag)
+  @ccall libhsl_subset.ma30b_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float32}, licn::Ref{Int32},
+                              lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                              ip::Ptr{Int32}, iq::Ptr{Int32}, w::Ptr{Float32}, iw::Ptr{Int32},
+                              iflag::Ref{Int32})::Cvoid
+end
+
+function ma30br(::Type{Float64}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag)
+  @ccall libhsl_subset.ma30bd_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float64}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                               ip::Ptr{Int32}, iq::Ptr{Int32}, w::Ptr{Float64}, iw::Ptr{Int32},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma30br(::Type{Float128}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag)
+  @ccall libhsl_subset.ma30bq_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float128}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                               ip::Ptr{Int32}, iq::Ptr{Int32}, w::Ptr{Float128}, iw::Ptr{Int32},
+                               iflag::Ref{Int32})::Cvoid
+end
+
+function ma30br(::Type{Float32}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag)
+  @ccall libhsl_subset_64.ma30b_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
+                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                    idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                    w::Ptr{Float32}, iw::Ptr{Int64}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma30br(::Type{Float64}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag)
+  @ccall libhsl_subset_64.ma30bd_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                     w::Ptr{Float64}, iw::Ptr{Int64}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma30br(::Type{Float128}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag)
+  @ccall libhsl_subset_64.ma30bq_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float128},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                     w::Ptr{Float128}, iw::Ptr{Int64}, iflag::Ref{Int64})::Cvoid
+end
+
+function ma30cr(::Type{Float32}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq,
+                x, w, mtype)
+  @ccall libhsl_subset.ma30c_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float32}, licn::Ref{Int32},
+                              lenr::Ptr{Int32}, lenrl::Ptr{Int32}, lenoff::Ptr{Int32},
+                              idisp::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32}, x::Ptr{Float32},
+                              w::Ptr{Float32}, mtype::Ref{Int32})::Cvoid
+end
+
+function ma30cr(::Type{Float64}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq,
+                x, w, mtype)
+  @ccall libhsl_subset.ma30cd_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float64}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, lenoff::Ptr{Int32},
+                               idisp::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32}, x::Ptr{Float64},
+                               w::Ptr{Float64}, mtype::Ref{Int32})::Cvoid
+end
+
+function ma30cr(::Type{Float128}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip,
+                iq, x, w, mtype)
+  @ccall libhsl_subset.ma30cq_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float128}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, lenoff::Ptr{Int32},
+                               idisp::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32}, x::Ptr{Float128},
+                               w::Ptr{Float128}, mtype::Ref{Int32})::Cvoid
+end
+
+function ma30cr(::Type{Float32}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq,
+                x, w, mtype)
+  @ccall libhsl_subset_64.ma30c_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
+                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                    lenoff::Ptr{Int64}, idisp::Ptr{Int64}, ip::Ptr{Int64},
+                                    iq::Ptr{Int64}, x::Ptr{Float32}, w::Ptr{Float32},
+                                    mtype::Ref{Int64})::Cvoid
+end
+
+function ma30cr(::Type{Float64}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq,
+                x, w, mtype)
+  @ccall libhsl_subset_64.ma30cd_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     lenoff::Ptr{Int64}, idisp::Ptr{Int64}, ip::Ptr{Int64},
+                                     iq::Ptr{Int64}, x::Ptr{Float64}, w::Ptr{Float64},
+                                     mtype::Ref{Int64})::Cvoid
+end
+
+function ma30cr(::Type{Float128}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip,
+                iq, x, w, mtype)
+  @ccall libhsl_subset_64.ma30cq_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float128},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     lenoff::Ptr{Int64}, idisp::Ptr{Int64}, ip::Ptr{Int64},
+                                     iq::Ptr{Int64}, x::Ptr{Float128}, w::Ptr{Float128},
+                                     mtype::Ref{Int64})::Cvoid
+end
+
+function ma30dr(::Type{Float32}, ::Type{Int32}, a, icn, iptr, n, iactiv, itop, reals)
+  @ccall libhsl_subset.ma30d_(a::Ptr{Float32}, icn::Ptr{Int32}, iptr::Ptr{Int32}, n::Ref{Int32},
+                              iactiv::Ref{Int32}, itop::Ref{Int32}, reals::Ref{Cint})::Cvoid
+end
+
+function ma30dr(::Type{Float64}, ::Type{Int32}, a, icn, iptr, n, iactiv, itop, reals)
+  @ccall libhsl_subset.ma30dd_(a::Ptr{Float64}, icn::Ptr{Int32}, iptr::Ptr{Int32}, n::Ref{Int32},
+                               iactiv::Ref{Int32}, itop::Ref{Int32}, reals::Ref{Cint})::Cvoid
+end
+
+function ma30dr(::Type{Float128}, ::Type{Int32}, a, icn, iptr, n, iactiv, itop, reals)
+  @ccall libhsl_subset.ma30dq_(a::Ptr{Float128}, icn::Ptr{Int32}, iptr::Ptr{Int32}, n::Ref{Int32},
+                               iactiv::Ref{Int32}, itop::Ref{Int32}, reals::Ref{Cint})::Cvoid
+end
+
+function ma30dr(::Type{Float32}, ::Type{Int64}, a, icn, iptr, n, iactiv, itop, reals)
+  @ccall libhsl_subset_64.ma30d_64_(a::Ptr{Float32}, icn::Ptr{Int64}, iptr::Ptr{Int64},
+                                    n::Ref{Int64}, iactiv::Ref{Int64}, itop::Ref{Int64},
+                                    reals::Ref{Cint})::Cvoid
+end
+
+function ma30dr(::Type{Float64}, ::Type{Int64}, a, icn, iptr, n, iactiv, itop, reals)
+  @ccall libhsl_subset_64.ma30dd_64_(a::Ptr{Float64}, icn::Ptr{Int64}, iptr::Ptr{Int64},
+                                     n::Ref{Int64}, iactiv::Ref{Int64}, itop::Ref{Int64},
+                                     reals::Ref{Cint})::Cvoid
+end
+
+function ma30dr(::Type{Float128}, ::Type{Int64}, a, icn, iptr, n, iactiv, itop, reals)
+  @ccall libhsl_subset_64.ma30dq_64_(a::Ptr{Float128}, icn::Ptr{Int64}, iptr::Ptr{Int64},
+                                     n::Ref{Int64}, iactiv::Ref{Int64}, itop::Ref{Int64},
+                                     reals::Ref{Cint})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/ma33.jl b/src/Fortran/hsl_subset/ma33.jl
new file mode 100644
index 0000000..2278309
--- /dev/null
+++ b/src/Fortran/hsl_subset/ma33.jl
@@ -0,0 +1,248 @@
+function ma33ir(::Type{Float32}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.ma33i_(icntl::Ptr{Int32}, cntl::Ptr{Float32})::Cvoid
+end
+
+function ma33ir(::Type{Float64}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.ma33id_(icntl::Ptr{Int32}, cntl::Ptr{Float64})::Cvoid
+end
+
+function ma33ir(::Type{Float128}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.ma33iq_(icntl::Ptr{Int32}, cntl::Ptr{Float128})::Cvoid
+end
+
+function ma33ir(::Type{Float32}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.ma33i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32})::Cvoid
+end
+
+function ma33ir(::Type{Float64}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.ma33id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64})::Cvoid
+end
+
+function ma33ir(::Type{Float128}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.ma33iq_64_(icntl::Ptr{Int64}, cntl::Ptr{Float128})::Cvoid
+end
+
+function ma33ar(::Type{Float32}, ::Type{Int32}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset.ma33a_(nn::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float32}, licn::Ref{Int32},
+                              lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                              ip::Ptr{Int32}, iq::Ptr{Int32}, irn::Ptr{Int32}, lirn::Ref{Int32},
+                              lenc::Ptr{Int32}, ifirst::Ptr{Int32}, lastr::Ptr{Int32},
+                              nextr::Ptr{Int32}, lastc::Ptr{Int32}, nextc::Ptr{Int32},
+                              iptr::Ptr{Int32}, ipc::Ptr{Int32}, u::Ref{Float32}, iflag::Ref{Int32},
+                              icntl::Ptr{Int32}, cntl::Ptr{Float32}, info::Ptr{Int32},
+                              rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma33ar(::Type{Float64}, ::Type{Int32}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset.ma33ad_(nn::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float64}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                               ip::Ptr{Int32}, iq::Ptr{Int32}, irn::Ptr{Int32}, lirn::Ref{Int32},
+                               lenc::Ptr{Int32}, ifirst::Ptr{Int32}, lastr::Ptr{Int32},
+                               nextr::Ptr{Int32}, lastc::Ptr{Int32}, nextc::Ptr{Int32},
+                               iptr::Ptr{Int32}, ipc::Ptr{Int32}, u::Ref{Float64},
+                               iflag::Ref{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float64},
+                               info::Ptr{Int32}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma33ar(::Type{Float128}, ::Type{Int32}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset.ma33aq_(nn::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float128}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                               ip::Ptr{Int32}, iq::Ptr{Int32}, irn::Ptr{Int32}, lirn::Ref{Int32},
+                               lenc::Ptr{Int32}, ifirst::Ptr{Int32}, lastr::Ptr{Int32},
+                               nextr::Ptr{Int32}, lastc::Ptr{Int32}, nextc::Ptr{Int32},
+                               iptr::Ptr{Int32}, ipc::Ptr{Int32}, u::Ref{Float128},
+                               iflag::Ref{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float128},
+                               info::Ptr{Int32}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma33ar(::Type{Float32}, ::Type{Int64}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset_64.ma33a_64_(nn::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
+                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                    idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                    irn::Ptr{Int64}, lirn::Ref{Int64}, lenc::Ptr{Int64},
+                                    ifirst::Ptr{Int64}, lastr::Ptr{Int64}, nextr::Ptr{Int64},
+                                    lastc::Ptr{Int64}, nextc::Ptr{Int64}, iptr::Ptr{Int64},
+                                    ipc::Ptr{Int64}, u::Ref{Float32}, iflag::Ref{Int64},
+                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, info::Ptr{Int64},
+                                    rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma33ar(::Type{Float64}, ::Type{Int64}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset_64.ma33ad_64_(nn::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                     irn::Ptr{Int64}, lirn::Ref{Int64}, lenc::Ptr{Int64},
+                                     ifirst::Ptr{Int64}, lastr::Ptr{Int64}, nextr::Ptr{Int64},
+                                     lastc::Ptr{Int64}, nextc::Ptr{Int64}, iptr::Ptr{Int64},
+                                     ipc::Ptr{Int64}, u::Ref{Float64}, iflag::Ref{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma33ar(::Type{Float128}, ::Type{Int64}, nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn,
+                lirn, lenc, ifirst, lastr, nextr, lastc, nextc, iptr, ipc, u, iflag, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset_64.ma33aq_64_(nn::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float128},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                     irn::Ptr{Int64}, lirn::Ref{Int64}, lenc::Ptr{Int64},
+                                     ifirst::Ptr{Int64}, lastr::Ptr{Int64}, nextr::Ptr{Int64},
+                                     lastc::Ptr{Int64}, nextc::Ptr{Int64}, iptr::Ptr{Int64},
+                                     ipc::Ptr{Int64}, u::Ref{Float128}, iflag::Ref{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float128}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma33br(::Type{Float32}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag, icntl, cntl, rinfo)
+  @ccall libhsl_subset.ma33b_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float32}, licn::Ref{Int32},
+                              lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                              ip::Ptr{Int32}, iq::Ptr{Int32}, w::Ptr{Float32}, iw::Ptr{Int32},
+                              iflag::Ref{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float32},
+                              rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma33br(::Type{Float64}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag, icntl, cntl, rinfo)
+  @ccall libhsl_subset.ma33bd_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float64}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                               ip::Ptr{Int32}, iq::Ptr{Int32}, w::Ptr{Float64}, iw::Ptr{Int32},
+                               iflag::Ref{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float64},
+                               rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma33br(::Type{Float128}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag, icntl, cntl, rinfo)
+  @ccall libhsl_subset.ma33bq_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float128}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, idisp::Ptr{Int32},
+                               ip::Ptr{Int32}, iq::Ptr{Int32}, w::Ptr{Float128}, iw::Ptr{Int32},
+                               iflag::Ref{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float128},
+                               rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma33br(::Type{Float32}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag, icntl, cntl, rinfo)
+  @ccall libhsl_subset_64.ma33b_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
+                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                    idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                    w::Ptr{Float32}, iw::Ptr{Int64}, iflag::Ref{Int64},
+                                    icntl::Ptr{Int64}, cntl::Ptr{Float32},
+                                    rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma33br(::Type{Float64}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag, icntl, cntl, rinfo)
+  @ccall libhsl_subset_64.ma33bd_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                     w::Ptr{Float64}, iw::Ptr{Int64}, iflag::Ref{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float64},
+                                     rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma33br(::Type{Float128}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw,
+                iflag, icntl, cntl, rinfo)
+  @ccall libhsl_subset_64.ma33bq_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float128},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                     w::Ptr{Float128}, iw::Ptr{Int64}, iflag::Ref{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma33cr(::Type{Float32}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq,
+                x, w, mtype, rinfo)
+  @ccall libhsl_subset.ma33c_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float32}, licn::Ref{Int32},
+                              lenr::Ptr{Int32}, lenrl::Ptr{Int32}, lenoff::Ptr{Int32},
+                              idisp::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32}, x::Ptr{Float32},
+                              w::Ptr{Float32}, mtype::Ref{Int32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma33cr(::Type{Float64}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq,
+                x, w, mtype, rinfo)
+  @ccall libhsl_subset.ma33cd_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float64}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, lenoff::Ptr{Int32},
+                               idisp::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32}, x::Ptr{Float64},
+                               w::Ptr{Float64}, mtype::Ref{Int32}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma33cr(::Type{Float128}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip,
+                iq, x, w, mtype, rinfo)
+  @ccall libhsl_subset.ma33cq_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float128}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, lenoff::Ptr{Int32},
+                               idisp::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32}, x::Ptr{Float128},
+                               w::Ptr{Float128}, mtype::Ref{Int32}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma33cr(::Type{Float32}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq,
+                x, w, mtype, rinfo)
+  @ccall libhsl_subset_64.ma33c_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
+                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                    lenoff::Ptr{Int64}, idisp::Ptr{Int64}, ip::Ptr{Int64},
+                                    iq::Ptr{Int64}, x::Ptr{Float32}, w::Ptr{Float32},
+                                    mtype::Ref{Int64}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma33cr(::Type{Float64}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq,
+                x, w, mtype, rinfo)
+  @ccall libhsl_subset_64.ma33cd_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     lenoff::Ptr{Int64}, idisp::Ptr{Int64}, ip::Ptr{Int64},
+                                     iq::Ptr{Int64}, x::Ptr{Float64}, w::Ptr{Float64},
+                                     mtype::Ref{Int64}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma33cr(::Type{Float128}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip,
+                iq, x, w, mtype, rinfo)
+  @ccall libhsl_subset_64.ma33cq_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float128},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     lenoff::Ptr{Int64}, idisp::Ptr{Int64}, ip::Ptr{Int64},
+                                     iq::Ptr{Int64}, x::Ptr{Float128}, w::Ptr{Float128},
+                                     mtype::Ref{Int64}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma33dr(::Type{Float32}, ::Type{Int32}, a, icn, iptr, n, iactiv, itop, reals, info)
+  @ccall libhsl_subset.ma33d_(a::Ptr{Float32}, icn::Ptr{Int32}, iptr::Ptr{Int32}, n::Ref{Int32},
+                              iactiv::Ref{Int32}, itop::Ref{Int32}, reals::Ref{Cint},
+                              info::Ptr{Int32})::Cvoid
+end
+
+function ma33dr(::Type{Float64}, ::Type{Int32}, a, icn, iptr, n, iactiv, itop, reals, info)
+  @ccall libhsl_subset.ma33dd_(a::Ptr{Float64}, icn::Ptr{Int32}, iptr::Ptr{Int32}, n::Ref{Int32},
+                               iactiv::Ref{Int32}, itop::Ref{Int32}, reals::Ref{Cint},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma33dr(::Type{Float128}, ::Type{Int32}, a, icn, iptr, n, iactiv, itop, reals, info)
+  @ccall libhsl_subset.ma33dq_(a::Ptr{Float128}, icn::Ptr{Int32}, iptr::Ptr{Int32}, n::Ref{Int32},
+                               iactiv::Ref{Int32}, itop::Ref{Int32}, reals::Ref{Cint},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma33dr(::Type{Float32}, ::Type{Int64}, a, icn, iptr, n, iactiv, itop, reals, info)
+  @ccall libhsl_subset_64.ma33d_64_(a::Ptr{Float32}, icn::Ptr{Int64}, iptr::Ptr{Int64},
+                                    n::Ref{Int64}, iactiv::Ref{Int64}, itop::Ref{Int64},
+                                    reals::Ref{Cint}, info::Ptr{Int64})::Cvoid
+end
+
+function ma33dr(::Type{Float64}, ::Type{Int64}, a, icn, iptr, n, iactiv, itop, reals, info)
+  @ccall libhsl_subset_64.ma33dd_64_(a::Ptr{Float64}, icn::Ptr{Int64}, iptr::Ptr{Int64},
+                                     n::Ref{Int64}, iactiv::Ref{Int64}, itop::Ref{Int64},
+                                     reals::Ref{Cint}, info::Ptr{Int64})::Cvoid
+end
+
+function ma33dr(::Type{Float128}, ::Type{Int64}, a, icn, iptr, n, iactiv, itop, reals, info)
+  @ccall libhsl_subset_64.ma33dq_64_(a::Ptr{Float128}, icn::Ptr{Int64}, iptr::Ptr{Int64},
+                                     n::Ref{Int64}, iactiv::Ref{Int64}, itop::Ref{Int64},
+                                     reals::Ref{Cint}, info::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/ma57.jl b/src/Fortran/hsl_subset/ma57.jl
new file mode 100644
index 0000000..18c8097
--- /dev/null
+++ b/src/Fortran/hsl_subset/ma57.jl
@@ -0,0 +1,1153 @@
+function ma57ir(::Type{Float32}, ::Type{Int32}, cntl, icntl)
+  @ccall libhsl_subset.ma57i_(cntl::Ptr{Float32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57ir(::Type{Float64}, ::Type{Int32}, cntl, icntl)
+  @ccall libhsl_subset.ma57id_(cntl::Ptr{Float64}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57ir(::Type{Float128}, ::Type{Int32}, cntl, icntl)
+  @ccall libhsl_subset.ma57iq_(cntl::Ptr{Float128}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57ir(::Type{Float32}, ::Type{Int64}, cntl, icntl)
+  @ccall libhsl_subset_64.ma57i_64_(cntl::Ptr{Float32}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57ir(::Type{Float64}, ::Type{Int64}, cntl, icntl)
+  @ccall libhsl_subset_64.ma57id_64_(cntl::Ptr{Float64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57ir(::Type{Float128}, ::Type{Int64}, cntl, icntl)
+  @ccall libhsl_subset_64.ma57iq_64_(cntl::Ptr{Float128}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57ar(::Type{Float32}, ::Type{Int32}, n, ne, irn, jcn, lkeep, keep, iwork, icntl, info,
+                rinfo)
+  @ccall libhsl_subset.ma57a_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                              lkeep::Ref{Int32}, keep::Ptr{Int32}, iwork::Ptr{Int32},
+                              icntl::Ptr{Int32}, info::Ptr{Int32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57ar(::Type{Float64}, ::Type{Int32}, n, ne, irn, jcn, lkeep, keep, iwork, icntl, info,
+                rinfo)
+  @ccall libhsl_subset.ma57ad_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               lkeep::Ref{Int32}, keep::Ptr{Int32}, iwork::Ptr{Int32},
+                               icntl::Ptr{Int32}, info::Ptr{Int32}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57ar(::Type{Float128}, ::Type{Int32}, n, ne, irn, jcn, lkeep, keep, iwork, icntl, info,
+                rinfo)
+  @ccall libhsl_subset.ma57aq_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               lkeep::Ref{Int32}, keep::Ptr{Int32}, iwork::Ptr{Int32},
+                               icntl::Ptr{Int32}, info::Ptr{Int32}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma57ar(::Type{Float32}, ::Type{Int64}, n, ne, irn, jcn, lkeep, keep, iwork, icntl, info,
+                rinfo)
+  @ccall libhsl_subset_64.ma57a_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
+                                    lkeep::Ref{Int64}, keep::Ptr{Int64}, iwork::Ptr{Int64},
+                                    icntl::Ptr{Int64}, info::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57ar(::Type{Float64}, ::Type{Int64}, n, ne, irn, jcn, lkeep, keep, iwork, icntl, info,
+                rinfo)
+  @ccall libhsl_subset_64.ma57ad_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, lkeep::Ref{Int64}, keep::Ptr{Int64},
+                                     iwork::Ptr{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57ar(::Type{Float128}, ::Type{Int64}, n, ne, irn, jcn, lkeep, keep, iwork, icntl, info,
+                rinfo)
+  @ccall libhsl_subset_64.ma57aq_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, lkeep::Ref{Int64}, keep::Ptr{Int64},
+                                     iwork::Ptr{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma57br(::Type{Float32}, ::Type{Int32}, n, ne, a, fact, lfact, ifact, lifact, lkeep, keep,
+                ppos, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.ma57b_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float32}, fact::Ptr{Float32},
+                              lfact::Ref{Int32}, ifact::Ptr{Int32}, lifact::Ref{Int32},
+                              lkeep::Ref{Int32}, keep::Ptr{Int32}, ppos::Ptr{Int32},
+                              icntl::Ptr{Int32}, cntl::Ptr{Float32}, info::Ptr{Int32},
+                              rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57br(::Type{Float64}, ::Type{Int32}, n, ne, a, fact, lfact, ifact, lifact, lkeep, keep,
+                ppos, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.ma57bd_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float64}, fact::Ptr{Float64},
+                               lfact::Ref{Int32}, ifact::Ptr{Int32}, lifact::Ref{Int32},
+                               lkeep::Ref{Int32}, keep::Ptr{Int32}, ppos::Ptr{Int32},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float64}, info::Ptr{Int32},
+                               rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57br(::Type{Float128}, ::Type{Int32}, n, ne, a, fact, lfact, ifact, lifact, lkeep, keep,
+                ppos, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.ma57bq_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float128}, fact::Ptr{Float128},
+                               lfact::Ref{Int32}, ifact::Ptr{Int32}, lifact::Ref{Int32},
+                               lkeep::Ref{Int32}, keep::Ptr{Int32}, ppos::Ptr{Int32},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float128}, info::Ptr{Int32},
+                               rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma57br(::Type{Float32}, ::Type{Int64}, n, ne, a, fact, lfact, ifact, lifact, lkeep, keep,
+                ppos, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.ma57b_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32},
+                                    fact::Ptr{Float32}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                    lifact::Ref{Int64}, lkeep::Ref{Int64}, keep::Ptr{Int64},
+                                    ppos::Ptr{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
+                                    info::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57br(::Type{Float64}, ::Type{Int64}, n, ne, a, fact, lfact, ifact, lifact, lkeep, keep,
+                ppos, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.ma57bd_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float64},
+                                     fact::Ptr{Float64}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                     lifact::Ref{Int64}, lkeep::Ref{Int64}, keep::Ptr{Int64},
+                                     ppos::Ptr{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
+                                     info::Ptr{Int64}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57br(::Type{Float128}, ::Type{Int64}, n, ne, a, fact, lfact, ifact, lifact, lkeep, keep,
+                ppos, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.ma57bq_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float128},
+                                     fact::Ptr{Float128}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                     lifact::Ref{Int64}, lkeep::Ref{Int64}, keep::Ptr{Int64},
+                                     ppos::Ptr{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     info::Ptr{Int64}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma57cr(::Type{Float32}, ::Type{Int32}, job, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs,
+                w, lw, iw1, icntl, info)
+  @ccall libhsl_subset.ma57c_(job::Ref{Int32}, n::Ref{Int32}, fact::Ptr{Float32}, lfact::Ref{Int32},
+                              ifact::Ptr{Int32}, lifact::Ref{Int32}, nrhs::Ref{Int32},
+                              rhs::Ptr{Float32}, lrhs::Ref{Int32}, w::Ptr{Float32}, lw::Ref{Int32},
+                              iw1::Ptr{Int32}, icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma57cr(::Type{Float64}, ::Type{Int32}, job, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs,
+                w, lw, iw1, icntl, info)
+  @ccall libhsl_subset.ma57cd_(job::Ref{Int32}, n::Ref{Int32}, fact::Ptr{Float64},
+                               lfact::Ref{Int32}, ifact::Ptr{Int32}, lifact::Ref{Int32},
+                               nrhs::Ref{Int32}, rhs::Ptr{Float64}, lrhs::Ref{Int32},
+                               w::Ptr{Float64}, lw::Ref{Int32}, iw1::Ptr{Int32}, icntl::Ptr{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma57cr(::Type{Float128}, ::Type{Int32}, job, n, fact, lfact, ifact, lifact, nrhs, rhs,
+                lrhs, w, lw, iw1, icntl, info)
+  @ccall libhsl_subset.ma57cq_(job::Ref{Int32}, n::Ref{Int32}, fact::Ptr{Float128},
+                               lfact::Ref{Int32}, ifact::Ptr{Int32}, lifact::Ref{Int32},
+                               nrhs::Ref{Int32}, rhs::Ptr{Float128}, lrhs::Ref{Int32},
+                               w::Ptr{Float128}, lw::Ref{Int32}, iw1::Ptr{Int32}, icntl::Ptr{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma57cr(::Type{Float32}, ::Type{Int64}, job, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs,
+                w, lw, iw1, icntl, info)
+  @ccall libhsl_subset_64.ma57c_64_(job::Ref{Int64}, n::Ref{Int64}, fact::Ptr{Float32},
+                                    lfact::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
+                                    nrhs::Ref{Int64}, rhs::Ptr{Float32}, lrhs::Ref{Int64},
+                                    w::Ptr{Float32}, lw::Ref{Int64}, iw1::Ptr{Int64},
+                                    icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57cr(::Type{Float64}, ::Type{Int64}, job, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs,
+                w, lw, iw1, icntl, info)
+  @ccall libhsl_subset_64.ma57cd_64_(job::Ref{Int64}, n::Ref{Int64}, fact::Ptr{Float64},
+                                     lfact::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
+                                     nrhs::Ref{Int64}, rhs::Ptr{Float64}, lrhs::Ref{Int64},
+                                     w::Ptr{Float64}, lw::Ref{Int64}, iw1::Ptr{Int64},
+                                     icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57cr(::Type{Float128}, ::Type{Int64}, job, n, fact, lfact, ifact, lifact, nrhs, rhs,
+                lrhs, w, lw, iw1, icntl, info)
+  @ccall libhsl_subset_64.ma57cq_64_(job::Ref{Int64}, n::Ref{Int64}, fact::Ptr{Float128},
+                                     lfact::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
+                                     nrhs::Ref{Int64}, rhs::Ptr{Float128}, lrhs::Ref{Int64},
+                                     w::Ptr{Float128}, lw::Ref{Int64}, iw1::Ptr{Int64},
+                                     icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57qr(::Type{Float32}, ::Type{Int32}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset.ma57q_(n::Ref{Int32}, fact::Ptr{Float32}, lfact::Ref{Int32},
+                              ifact::Ptr{Int32}, lifact::Ref{Int32}, nrhs::Ref{Int32},
+                              rhs::Ptr{Float32}, lrhs::Ref{Int32}, w::Ptr{Float32}, lw::Ref{Int32},
+                              iw1::Ptr{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57qr(::Type{Float64}, ::Type{Int32}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset.ma57qd_(n::Ref{Int32}, fact::Ptr{Float64}, lfact::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, nrhs::Ref{Int32},
+                               rhs::Ptr{Float64}, lrhs::Ref{Int32}, w::Ptr{Float64}, lw::Ref{Int32},
+                               iw1::Ptr{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57qr(::Type{Float128}, ::Type{Int32}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset.ma57qq_(n::Ref{Int32}, fact::Ptr{Float128}, lfact::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, nrhs::Ref{Int32},
+                               rhs::Ptr{Float128}, lrhs::Ref{Int32}, w::Ptr{Float128},
+                               lw::Ref{Int32}, iw1::Ptr{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57qr(::Type{Float32}, ::Type{Int64}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset_64.ma57q_64_(n::Ref{Int64}, fact::Ptr{Float32}, lfact::Ref{Int64},
+                                    ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
+                                    rhs::Ptr{Float32}, lrhs::Ref{Int64}, w::Ptr{Float32},
+                                    lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57qr(::Type{Float64}, ::Type{Int64}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset_64.ma57qd_64_(n::Ref{Int64}, fact::Ptr{Float64}, lfact::Ref{Int64},
+                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
+                                     rhs::Ptr{Float64}, lrhs::Ref{Int64}, w::Ptr{Float64},
+                                     lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57qr(::Type{Float128}, ::Type{Int64}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset_64.ma57qq_64_(n::Ref{Int64}, fact::Ptr{Float128}, lfact::Ref{Int64},
+                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
+                                     rhs::Ptr{Float128}, lrhs::Ref{Int64}, w::Ptr{Float128},
+                                     lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57rr(::Type{Float32}, ::Type{Int32}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset.ma57r_(n::Ref{Int32}, fact::Ptr{Float32}, lfact::Ref{Int32},
+                              ifact::Ptr{Int32}, lifact::Ref{Int32}, nrhs::Ref{Int32},
+                              rhs::Ptr{Float32}, lrhs::Ref{Int32}, w::Ptr{Float32}, lw::Ref{Int32},
+                              iw1::Ptr{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57rr(::Type{Float64}, ::Type{Int32}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset.ma57rd_(n::Ref{Int32}, fact::Ptr{Float64}, lfact::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, nrhs::Ref{Int32},
+                               rhs::Ptr{Float64}, lrhs::Ref{Int32}, w::Ptr{Float64}, lw::Ref{Int32},
+                               iw1::Ptr{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57rr(::Type{Float128}, ::Type{Int32}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset.ma57rq_(n::Ref{Int32}, fact::Ptr{Float128}, lfact::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, nrhs::Ref{Int32},
+                               rhs::Ptr{Float128}, lrhs::Ref{Int32}, w::Ptr{Float128},
+                               lw::Ref{Int32}, iw1::Ptr{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57rr(::Type{Float32}, ::Type{Int64}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset_64.ma57r_64_(n::Ref{Int64}, fact::Ptr{Float32}, lfact::Ref{Int64},
+                                    ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
+                                    rhs::Ptr{Float32}, lrhs::Ref{Int64}, w::Ptr{Float32},
+                                    lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57rr(::Type{Float64}, ::Type{Int64}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset_64.ma57rd_64_(n::Ref{Int64}, fact::Ptr{Float64}, lfact::Ref{Int64},
+                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
+                                     rhs::Ptr{Float64}, lrhs::Ref{Int64}, w::Ptr{Float64},
+                                     lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57rr(::Type{Float128}, ::Type{Int64}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset_64.ma57rq_64_(n::Ref{Int64}, fact::Ptr{Float128}, lfact::Ref{Int64},
+                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
+                                     rhs::Ptr{Float128}, lrhs::Ref{Int64}, w::Ptr{Float128},
+                                     lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57ur(::Type{Float32}, ::Type{Int32}, fact, lfact, ifact, lifact, icntl)
+  @ccall libhsl_subset.ma57u_(fact::Ptr{Float32}, lfact::Ref{Int32}, ifact::Ptr{Int32},
+                              lifact::Ref{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57ur(::Type{Float64}, ::Type{Int32}, fact, lfact, ifact, lifact, icntl)
+  @ccall libhsl_subset.ma57ud_(fact::Ptr{Float64}, lfact::Ref{Int32}, ifact::Ptr{Int32},
+                               lifact::Ref{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57ur(::Type{Float128}, ::Type{Int32}, fact, lfact, ifact, lifact, icntl)
+  @ccall libhsl_subset.ma57uq_(fact::Ptr{Float128}, lfact::Ref{Int32}, ifact::Ptr{Int32},
+                               lifact::Ref{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57ur(::Type{Float32}, ::Type{Int64}, fact, lfact, ifact, lifact, icntl)
+  @ccall libhsl_subset_64.ma57u_64_(fact::Ptr{Float32}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                    lifact::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57ur(::Type{Float64}, ::Type{Int64}, fact, lfact, ifact, lifact, icntl)
+  @ccall libhsl_subset_64.ma57ud_64_(fact::Ptr{Float64}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                     lifact::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57ur(::Type{Float128}, ::Type{Int64}, fact, lfact, ifact, lifact, icntl)
+  @ccall libhsl_subset_64.ma57uq_64_(fact::Ptr{Float128}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                     lifact::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57sr(::Type{Float32}, ::Type{Int32}, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw,
+                icntl)
+  @ccall libhsl_subset.ma57s_(fact::Ptr{Float32}, lfact::Ref{Int32}, ifact::Ptr{Int32},
+                              lifact::Ref{Int32}, nrhs::Ref{Int32}, rhs::Ptr{Float32},
+                              lrhs::Ref{Int32}, w::Ptr{Float32}, lw::Ref{Int32},
+                              icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57sr(::Type{Float64}, ::Type{Int32}, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw,
+                icntl)
+  @ccall libhsl_subset.ma57sd_(fact::Ptr{Float64}, lfact::Ref{Int32}, ifact::Ptr{Int32},
+                               lifact::Ref{Int32}, nrhs::Ref{Int32}, rhs::Ptr{Float64},
+                               lrhs::Ref{Int32}, w::Ptr{Float64}, lw::Ref{Int32},
+                               icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57sr(::Type{Float128}, ::Type{Int32}, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw,
+                icntl)
+  @ccall libhsl_subset.ma57sq_(fact::Ptr{Float128}, lfact::Ref{Int32}, ifact::Ptr{Int32},
+                               lifact::Ref{Int32}, nrhs::Ref{Int32}, rhs::Ptr{Float128},
+                               lrhs::Ref{Int32}, w::Ptr{Float128}, lw::Ref{Int32},
+                               icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57sr(::Type{Float32}, ::Type{Int64}, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw,
+                icntl)
+  @ccall libhsl_subset_64.ma57s_64_(fact::Ptr{Float32}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                    lifact::Ref{Int64}, nrhs::Ref{Int64}, rhs::Ptr{Float32},
+                                    lrhs::Ref{Int64}, w::Ptr{Float32}, lw::Ref{Int64},
+                                    icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57sr(::Type{Float64}, ::Type{Int64}, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw,
+                icntl)
+  @ccall libhsl_subset_64.ma57sd_64_(fact::Ptr{Float64}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                     lifact::Ref{Int64}, nrhs::Ref{Int64}, rhs::Ptr{Float64},
+                                     lrhs::Ref{Int64}, w::Ptr{Float64}, lw::Ref{Int64},
+                                     icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57sr(::Type{Float128}, ::Type{Int64}, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw,
+                icntl)
+  @ccall libhsl_subset_64.ma57sq_64_(fact::Ptr{Float128}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                     lifact::Ref{Int64}, nrhs::Ref{Int64}, rhs::Ptr{Float128},
+                                     lrhs::Ref{Int64}, w::Ptr{Float128}, lw::Ref{Int64},
+                                     icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57tr(::Type{Float32}, ::Type{Int32}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset.ma57t_(n::Ref{Int32}, fact::Ptr{Float32}, lfact::Ref{Int32},
+                              ifact::Ptr{Int32}, lifact::Ref{Int32}, nrhs::Ref{Int32},
+                              rhs::Ptr{Float32}, lrhs::Ref{Int32}, w::Ptr{Float32}, lw::Ref{Int32},
+                              iw1::Ptr{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57tr(::Type{Float64}, ::Type{Int32}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset.ma57td_(n::Ref{Int32}, fact::Ptr{Float64}, lfact::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, nrhs::Ref{Int32},
+                               rhs::Ptr{Float64}, lrhs::Ref{Int32}, w::Ptr{Float64}, lw::Ref{Int32},
+                               iw1::Ptr{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57tr(::Type{Float128}, ::Type{Int32}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset.ma57tq_(n::Ref{Int32}, fact::Ptr{Float128}, lfact::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, nrhs::Ref{Int32},
+                               rhs::Ptr{Float128}, lrhs::Ref{Int32}, w::Ptr{Float128},
+                               lw::Ref{Int32}, iw1::Ptr{Int32}, icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57tr(::Type{Float32}, ::Type{Int64}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset_64.ma57t_64_(n::Ref{Int64}, fact::Ptr{Float32}, lfact::Ref{Int64},
+                                    ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
+                                    rhs::Ptr{Float32}, lrhs::Ref{Int64}, w::Ptr{Float32},
+                                    lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57tr(::Type{Float64}, ::Type{Int64}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset_64.ma57td_64_(n::Ref{Int64}, fact::Ptr{Float64}, lfact::Ref{Int64},
+                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
+                                     rhs::Ptr{Float64}, lrhs::Ref{Int64}, w::Ptr{Float64},
+                                     lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57tr(::Type{Float128}, ::Type{Int64}, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w,
+                lw, iw1, icntl)
+  @ccall libhsl_subset_64.ma57tq_64_(n::Ref{Int64}, fact::Ptr{Float128}, lfact::Ref{Int64},
+                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
+                                     rhs::Ptr{Float128}, lrhs::Ref{Int64}, w::Ptr{Float128},
+                                     lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57dr(::Type{Float32}, ::Type{Int32}, job, n, ne, a, irn, jcn, fact, lfact, ifact, lifact,
+                rhs, x, resid, w, iw, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.ma57d_(job::Ref{Int32}, n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float32},
+                              irn::Ptr{Int32}, jcn::Ptr{Int32}, fact::Ptr{Float32},
+                              lfact::Ref{Int32}, ifact::Ptr{Int32}, lifact::Ref{Int32},
+                              rhs::Ptr{Float32}, x::Ptr{Float32}, resid::Ptr{Float32},
+                              w::Ptr{Float32}, iw::Ptr{Int32}, icntl::Ptr{Int32},
+                              cntl::Ptr{Float32}, info::Ptr{Int32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57dr(::Type{Float64}, ::Type{Int32}, job, n, ne, a, irn, jcn, fact, lfact, ifact, lifact,
+                rhs, x, resid, w, iw, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.ma57dd_(job::Ref{Int32}, n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float64},
+                               irn::Ptr{Int32}, jcn::Ptr{Int32}, fact::Ptr{Float64},
+                               lfact::Ref{Int32}, ifact::Ptr{Int32}, lifact::Ref{Int32},
+                               rhs::Ptr{Float64}, x::Ptr{Float64}, resid::Ptr{Float64},
+                               w::Ptr{Float64}, iw::Ptr{Int32}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float64}, info::Ptr{Int32}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57dr(::Type{Float128}, ::Type{Int32}, job, n, ne, a, irn, jcn, fact, lfact, ifact,
+                lifact, rhs, x, resid, w, iw, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.ma57dq_(job::Ref{Int32}, n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float128},
+                               irn::Ptr{Int32}, jcn::Ptr{Int32}, fact::Ptr{Float128},
+                               lfact::Ref{Int32}, ifact::Ptr{Int32}, lifact::Ref{Int32},
+                               rhs::Ptr{Float128}, x::Ptr{Float128}, resid::Ptr{Float128},
+                               w::Ptr{Float128}, iw::Ptr{Int32}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float128}, info::Ptr{Int32}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma57dr(::Type{Float32}, ::Type{Int64}, job, n, ne, a, irn, jcn, fact, lfact, ifact, lifact,
+                rhs, x, resid, w, iw, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.ma57d_64_(job::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32},
+                                    irn::Ptr{Int64}, jcn::Ptr{Int64}, fact::Ptr{Float32},
+                                    lfact::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
+                                    rhs::Ptr{Float32}, x::Ptr{Float32}, resid::Ptr{Float32},
+                                    w::Ptr{Float32}, iw::Ptr{Int64}, icntl::Ptr{Int64},
+                                    cntl::Ptr{Float32}, info::Ptr{Int64},
+                                    rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57dr(::Type{Float64}, ::Type{Int64}, job, n, ne, a, irn, jcn, fact, lfact, ifact, lifact,
+                rhs, x, resid, w, iw, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.ma57dd_64_(job::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64},
+                                     a::Ptr{Float64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
+                                     fact::Ptr{Float64}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                     lifact::Ref{Int64}, rhs::Ptr{Float64}, x::Ptr{Float64},
+                                     resid::Ptr{Float64}, w::Ptr{Float64}, iw::Ptr{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57dr(::Type{Float128}, ::Type{Int64}, job, n, ne, a, irn, jcn, fact, lfact, ifact,
+                lifact, rhs, x, resid, w, iw, icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.ma57dq_64_(job::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64},
+                                     a::Ptr{Float128}, irn::Ptr{Int64}, jcn::Ptr{Int64},
+                                     fact::Ptr{Float128}, lfact::Ref{Int64}, ifact::Ptr{Int64},
+                                     lifact::Ref{Int64}, rhs::Ptr{Float128}, x::Ptr{Float128},
+                                     resid::Ptr{Float128}, w::Ptr{Float128}, iw::Ptr{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float128}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma57er(::Type{Float32}, ::Type{Int32}, n, ic, keep, fact, lfact, newfac, lnew, ifact,
+                lifact, newifc, linew, info)
+  @ccall libhsl_subset.ma57e_(n::Ref{Int32}, ic::Ref{Int32}, keep::Ptr{Int32}, fact::Ptr{Float32},
+                              lfact::Ref{Int32}, newfac::Ptr{Float32}, lnew::Ref{Int32},
+                              ifact::Ptr{Int32}, lifact::Ref{Int32}, newifc::Ptr{Int32},
+                              linew::Ref{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma57er(::Type{Float64}, ::Type{Int32}, n, ic, keep, fact, lfact, newfac, lnew, ifact,
+                lifact, newifc, linew, info)
+  @ccall libhsl_subset.ma57ed_(n::Ref{Int32}, ic::Ref{Int32}, keep::Ptr{Int32}, fact::Ptr{Float64},
+                               lfact::Ref{Int32}, newfac::Ptr{Float64}, lnew::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, newifc::Ptr{Int32},
+                               linew::Ref{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma57er(::Type{Float128}, ::Type{Int32}, n, ic, keep, fact, lfact, newfac, lnew, ifact,
+                lifact, newifc, linew, info)
+  @ccall libhsl_subset.ma57eq_(n::Ref{Int32}, ic::Ref{Int32}, keep::Ptr{Int32}, fact::Ptr{Float128},
+                               lfact::Ref{Int32}, newfac::Ptr{Float128}, lnew::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, newifc::Ptr{Int32},
+                               linew::Ref{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma57er(::Type{Float32}, ::Type{Int64}, n, ic, keep, fact, lfact, newfac, lnew, ifact,
+                lifact, newifc, linew, info)
+  @ccall libhsl_subset_64.ma57e_64_(n::Ref{Int64}, ic::Ref{Int64}, keep::Ptr{Int64},
+                                    fact::Ptr{Float32}, lfact::Ref{Int64}, newfac::Ptr{Float32},
+                                    lnew::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
+                                    newifc::Ptr{Int64}, linew::Ref{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57er(::Type{Float64}, ::Type{Int64}, n, ic, keep, fact, lfact, newfac, lnew, ifact,
+                lifact, newifc, linew, info)
+  @ccall libhsl_subset_64.ma57ed_64_(n::Ref{Int64}, ic::Ref{Int64}, keep::Ptr{Int64},
+                                     fact::Ptr{Float64}, lfact::Ref{Int64}, newfac::Ptr{Float64},
+                                     lnew::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
+                                     newifc::Ptr{Int64}, linew::Ref{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57er(::Type{Float128}, ::Type{Int64}, n, ic, keep, fact, lfact, newfac, lnew, ifact,
+                lifact, newifc, linew, info)
+  @ccall libhsl_subset_64.ma57eq_64_(n::Ref{Int64}, ic::Ref{Int64}, keep::Ptr{Int64},
+                                     fact::Ptr{Float128}, lfact::Ref{Int64}, newfac::Ptr{Float128},
+                                     lnew::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
+                                     newifc::Ptr{Int64}, linew::Ref{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57gr(::Type{Float32}, ::Type{Int32}, n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset.ma57g_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                              iw::Ptr{Int32}, ipe::Ptr{Int32}, count::Ptr{Int32}, flag::Ptr{Int32},
+                              iwfr::Ref{Int32}, icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma57gr(::Type{Float64}, ::Type{Int32}, n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset.ma57gd_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               iw::Ptr{Int32}, ipe::Ptr{Int32}, count::Ptr{Int32}, flag::Ptr{Int32},
+                               iwfr::Ref{Int32}, icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma57gr(::Type{Float128}, ::Type{Int32}, n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset.ma57gq_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               iw::Ptr{Int32}, ipe::Ptr{Int32}, count::Ptr{Int32}, flag::Ptr{Int32},
+                               iwfr::Ref{Int32}, icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function ma57gr(::Type{Float32}, ::Type{Int64}, n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset_64.ma57g_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
+                                    iw::Ptr{Int64}, ipe::Ptr{Int64}, count::Ptr{Int64},
+                                    flag::Ptr{Int64}, iwfr::Ref{Int64}, icntl::Ptr{Int64},
+                                    info::Ptr{Int64})::Cvoid
+end
+
+function ma57gr(::Type{Float64}, ::Type{Int64}, n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset_64.ma57gd_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, iw::Ptr{Int64}, ipe::Ptr{Int64},
+                                     count::Ptr{Int64}, flag::Ptr{Int64}, iwfr::Ref{Int64},
+                                     icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57gr(::Type{Float128}, ::Type{Int64}, n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset_64.ma57gq_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, iw::Ptr{Int64}, ipe::Ptr{Int64},
+                                     count::Ptr{Int64}, flag::Ptr{Int64}, iwfr::Ref{Int64},
+                                     icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57jr(::Type{Float32}, ::Type{Int32}, n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset.ma57j_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                              perm::Ptr{Int32}, iw::Ptr{Int32}, ipe::Ptr{Int32}, count::Ptr{Int32},
+                              flag::Ptr{Int32}, iwfr::Ref{Int32}, icntl::Ptr{Int32},
+                              info::Ptr{Int32})::Cvoid
+end
+
+function ma57jr(::Type{Float64}, ::Type{Int32}, n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset.ma57jd_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               perm::Ptr{Int32}, iw::Ptr{Int32}, ipe::Ptr{Int32}, count::Ptr{Int32},
+                               flag::Ptr{Int32}, iwfr::Ref{Int32}, icntl::Ptr{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma57jr(::Type{Float128}, ::Type{Int32}, n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset.ma57jq_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               perm::Ptr{Int32}, iw::Ptr{Int32}, ipe::Ptr{Int32}, count::Ptr{Int32},
+                               flag::Ptr{Int32}, iwfr::Ref{Int32}, icntl::Ptr{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma57jr(::Type{Float32}, ::Type{Int64}, n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset_64.ma57j_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
+                                    perm::Ptr{Int64}, iw::Ptr{Int64}, ipe::Ptr{Int64},
+                                    count::Ptr{Int64}, flag::Ptr{Int64}, iwfr::Ref{Int64},
+                                    icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57jr(::Type{Float64}, ::Type{Int64}, n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset_64.ma57jd_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, perm::Ptr{Int64}, iw::Ptr{Int64},
+                                     ipe::Ptr{Int64}, count::Ptr{Int64}, flag::Ptr{Int64},
+                                     iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57jr(::Type{Float128}, ::Type{Int64}, n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset_64.ma57jq_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, perm::Ptr{Int64}, iw::Ptr{Int64},
+                                     ipe::Ptr{Int64}, count::Ptr{Int64}, flag::Ptr{Int64},
+                                     iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57kr(::Type{Float32}, ::Type{Int32}, n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
+  @ccall libhsl_subset.ma57k_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                              iwfr::Ref{Int32}, perm::Ptr{Int32}, ips::Ptr{Int32}, nv::Ptr{Int32},
+                              flag::Ptr{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma57kr(::Type{Float64}, ::Type{Int32}, n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
+  @ccall libhsl_subset.ma57kd_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, perm::Ptr{Int32}, ips::Ptr{Int32}, nv::Ptr{Int32},
+                               flag::Ptr{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma57kr(::Type{Float128}, ::Type{Int32}, n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
+  @ccall libhsl_subset.ma57kq_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, perm::Ptr{Int32}, ips::Ptr{Int32}, nv::Ptr{Int32},
+                               flag::Ptr{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma57kr(::Type{Float32}, ::Type{Int64}, n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
+  @ccall libhsl_subset_64.ma57k_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                    iwfr::Ref{Int64}, perm::Ptr{Int64}, ips::Ptr{Int64},
+                                    nv::Ptr{Int64}, flag::Ptr{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma57kr(::Type{Float64}, ::Type{Int64}, n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
+  @ccall libhsl_subset_64.ma57kd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, perm::Ptr{Int64}, ips::Ptr{Int64},
+                                     nv::Ptr{Int64}, flag::Ptr{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma57kr(::Type{Float128}, ::Type{Int64}, n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
+  @ccall libhsl_subset_64.ma57kq_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, perm::Ptr{Int64}, ips::Ptr{Int64},
+                                     nv::Ptr{Int64}, flag::Ptr{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma57fr(::Type{Float32}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset.ma57f_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                              iwfr::Ref{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma57fr(::Type{Float64}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset.ma57fd_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma57fr(::Type{Float128}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset.ma57fq_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma57fr(::Type{Float32}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset_64.ma57f_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                    iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma57fr(::Type{Float64}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset_64.ma57fd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma57fr(::Type{Float128}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset_64.ma57fq_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma57lr(::Type{Float32}, ::Type{Int32}, n, ipe, nv, ips, ne, na, node, perm, nsteps, fils,
+                frere, nd, nemin, subord)
+  @ccall libhsl_subset.ma57l_(n::Ref{Int32}, ipe::Ptr{Int32}, nv::Ptr{Int32}, ips::Ptr{Int32},
+                              ne::Ptr{Int32}, na::Ptr{Int32}, node::Ptr{Int32}, perm::Ptr{Int32},
+                              nsteps::Ref{Int32}, fils::Ptr{Int32}, frere::Ptr{Int32},
+                              nd::Ptr{Int32}, nemin::Ref{Int32}, subord::Ptr{Int32})::Cvoid
+end
+
+function ma57lr(::Type{Float64}, ::Type{Int32}, n, ipe, nv, ips, ne, na, node, perm, nsteps, fils,
+                frere, nd, nemin, subord)
+  @ccall libhsl_subset.ma57ld_(n::Ref{Int32}, ipe::Ptr{Int32}, nv::Ptr{Int32}, ips::Ptr{Int32},
+                               ne::Ptr{Int32}, na::Ptr{Int32}, node::Ptr{Int32}, perm::Ptr{Int32},
+                               nsteps::Ref{Int32}, fils::Ptr{Int32}, frere::Ptr{Int32},
+                               nd::Ptr{Int32}, nemin::Ref{Int32}, subord::Ptr{Int32})::Cvoid
+end
+
+function ma57lr(::Type{Float128}, ::Type{Int32}, n, ipe, nv, ips, ne, na, node, perm, nsteps, fils,
+                frere, nd, nemin, subord)
+  @ccall libhsl_subset.ma57lq_(n::Ref{Int32}, ipe::Ptr{Int32}, nv::Ptr{Int32}, ips::Ptr{Int32},
+                               ne::Ptr{Int32}, na::Ptr{Int32}, node::Ptr{Int32}, perm::Ptr{Int32},
+                               nsteps::Ref{Int32}, fils::Ptr{Int32}, frere::Ptr{Int32},
+                               nd::Ptr{Int32}, nemin::Ref{Int32}, subord::Ptr{Int32})::Cvoid
+end
+
+function ma57lr(::Type{Float32}, ::Type{Int64}, n, ipe, nv, ips, ne, na, node, perm, nsteps, fils,
+                frere, nd, nemin, subord)
+  @ccall libhsl_subset_64.ma57l_64_(n::Ref{Int64}, ipe::Ptr{Int64}, nv::Ptr{Int64}, ips::Ptr{Int64},
+                                    ne::Ptr{Int64}, na::Ptr{Int64}, node::Ptr{Int64},
+                                    perm::Ptr{Int64}, nsteps::Ref{Int64}, fils::Ptr{Int64},
+                                    frere::Ptr{Int64}, nd::Ptr{Int64}, nemin::Ref{Int64},
+                                    subord::Ptr{Int64})::Cvoid
+end
+
+function ma57lr(::Type{Float64}, ::Type{Int64}, n, ipe, nv, ips, ne, na, node, perm, nsteps, fils,
+                frere, nd, nemin, subord)
+  @ccall libhsl_subset_64.ma57ld_64_(n::Ref{Int64}, ipe::Ptr{Int64}, nv::Ptr{Int64},
+                                     ips::Ptr{Int64}, ne::Ptr{Int64}, na::Ptr{Int64},
+                                     node::Ptr{Int64}, perm::Ptr{Int64}, nsteps::Ref{Int64},
+                                     fils::Ptr{Int64}, frere::Ptr{Int64}, nd::Ptr{Int64},
+                                     nemin::Ref{Int64}, subord::Ptr{Int64})::Cvoid
+end
+
+function ma57lr(::Type{Float128}, ::Type{Int64}, n, ipe, nv, ips, ne, na, node, perm, nsteps, fils,
+                frere, nd, nemin, subord)
+  @ccall libhsl_subset_64.ma57lq_64_(n::Ref{Int64}, ipe::Ptr{Int64}, nv::Ptr{Int64},
+                                     ips::Ptr{Int64}, ne::Ptr{Int64}, na::Ptr{Int64},
+                                     node::Ptr{Int64}, perm::Ptr{Int64}, nsteps::Ref{Int64},
+                                     fils::Ptr{Int64}, frere::Ptr{Int64}, nd::Ptr{Int64},
+                                     nemin::Ref{Int64}, subord::Ptr{Int64})::Cvoid
+end
+
+function ma57mr(::Type{Float32}, ::Type{Int32}, n, ne, irn, jcn, map, irnprm, lrow, perm, count,
+                idiag)
+  @ccall libhsl_subset.ma57m_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                              map::Ptr{Int32}, irnprm::Ptr{Int32}, lrow::Ptr{Int32},
+                              perm::Ptr{Int32}, count::Ptr{Int32}, idiag::Ptr{Int32})::Cvoid
+end
+
+function ma57mr(::Type{Float64}, ::Type{Int32}, n, ne, irn, jcn, map, irnprm, lrow, perm, count,
+                idiag)
+  @ccall libhsl_subset.ma57md_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               map::Ptr{Int32}, irnprm::Ptr{Int32}, lrow::Ptr{Int32},
+                               perm::Ptr{Int32}, count::Ptr{Int32}, idiag::Ptr{Int32})::Cvoid
+end
+
+function ma57mr(::Type{Float128}, ::Type{Int32}, n, ne, irn, jcn, map, irnprm, lrow, perm, count,
+                idiag)
+  @ccall libhsl_subset.ma57mq_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               map::Ptr{Int32}, irnprm::Ptr{Int32}, lrow::Ptr{Int32},
+                               perm::Ptr{Int32}, count::Ptr{Int32}, idiag::Ptr{Int32})::Cvoid
+end
+
+function ma57mr(::Type{Float32}, ::Type{Int64}, n, ne, irn, jcn, map, irnprm, lrow, perm, count,
+                idiag)
+  @ccall libhsl_subset_64.ma57m_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
+                                    map::Ptr{Int64}, irnprm::Ptr{Int64}, lrow::Ptr{Int64},
+                                    perm::Ptr{Int64}, count::Ptr{Int64}, idiag::Ptr{Int64})::Cvoid
+end
+
+function ma57mr(::Type{Float64}, ::Type{Int64}, n, ne, irn, jcn, map, irnprm, lrow, perm, count,
+                idiag)
+  @ccall libhsl_subset_64.ma57md_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, map::Ptr{Int64}, irnprm::Ptr{Int64},
+                                     lrow::Ptr{Int64}, perm::Ptr{Int64}, count::Ptr{Int64},
+                                     idiag::Ptr{Int64})::Cvoid
+end
+
+function ma57mr(::Type{Float128}, ::Type{Int64}, n, ne, irn, jcn, map, irnprm, lrow, perm, count,
+                idiag)
+  @ccall libhsl_subset_64.ma57mq_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, map::Ptr{Int64}, irnprm::Ptr{Int64},
+                                     lrow::Ptr{Int64}, perm::Ptr{Int64}, count::Ptr{Int64},
+                                     idiag::Ptr{Int64})::Cvoid
+end
+
+function ma57nr(::Type{Float32}, ::Type{Int32}, n, lenr, na, ne, nd, nsteps, lstki, lstkr, info,
+                rinfo)
+  @ccall libhsl_subset.ma57n_(n::Ref{Int32}, lenr::Ptr{Int32}, na::Ptr{Int32}, ne::Ptr{Int32},
+                              nd::Ptr{Int32}, nsteps::Ref{Int32}, lstki::Ptr{Int32},
+                              lstkr::Ptr{Int32}, info::Ptr{Int32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57nr(::Type{Float64}, ::Type{Int32}, n, lenr, na, ne, nd, nsteps, lstki, lstkr, info,
+                rinfo)
+  @ccall libhsl_subset.ma57nd_(n::Ref{Int32}, lenr::Ptr{Int32}, na::Ptr{Int32}, ne::Ptr{Int32},
+                               nd::Ptr{Int32}, nsteps::Ref{Int32}, lstki::Ptr{Int32},
+                               lstkr::Ptr{Int32}, info::Ptr{Int32}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57nr(::Type{Float128}, ::Type{Int32}, n, lenr, na, ne, nd, nsteps, lstki, lstkr, info,
+                rinfo)
+  @ccall libhsl_subset.ma57nq_(n::Ref{Int32}, lenr::Ptr{Int32}, na::Ptr{Int32}, ne::Ptr{Int32},
+                               nd::Ptr{Int32}, nsteps::Ref{Int32}, lstki::Ptr{Int32},
+                               lstkr::Ptr{Int32}, info::Ptr{Int32}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma57nr(::Type{Float32}, ::Type{Int64}, n, lenr, na, ne, nd, nsteps, lstki, lstkr, info,
+                rinfo)
+  @ccall libhsl_subset_64.ma57n_64_(n::Ref{Int64}, lenr::Ptr{Int64}, na::Ptr{Int64}, ne::Ptr{Int64},
+                                    nd::Ptr{Int64}, nsteps::Ref{Int64}, lstki::Ptr{Int64},
+                                    lstkr::Ptr{Int64}, info::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57nr(::Type{Float64}, ::Type{Int64}, n, lenr, na, ne, nd, nsteps, lstki, lstkr, info,
+                rinfo)
+  @ccall libhsl_subset_64.ma57nd_64_(n::Ref{Int64}, lenr::Ptr{Int64}, na::Ptr{Int64},
+                                     ne::Ptr{Int64}, nd::Ptr{Int64}, nsteps::Ref{Int64},
+                                     lstki::Ptr{Int64}, lstkr::Ptr{Int64}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57nr(::Type{Float128}, ::Type{Int64}, n, lenr, na, ne, nd, nsteps, lstki, lstkr, info,
+                rinfo)
+  @ccall libhsl_subset_64.ma57nq_64_(n::Ref{Int64}, lenr::Ptr{Int64}, na::Ptr{Int64},
+                                     ne::Ptr{Int64}, nd::Ptr{Int64}, nsteps::Ref{Int64},
+                                     lstki::Ptr{Int64}, lstkr::Ptr{Int64}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float128})::Cvoid
+end
+
+function ma57or(::Type{Float32}, ::Type{Int32}, n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk,
+                node, diag, schnab, ppos, cntl, icntl, info, rinfo, hold, biga)
+  @ccall libhsl_subset.ma57o_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float32}, la::Ref{Int32},
+                              iw::Ptr{Int32}, liw::Ref{Int32}, lrow::Ptr{Int32}, perm::Ptr{Int32},
+                              nsteps::Ref{Int32}, nstk::Ptr{Int32}, node::Ptr{Int32},
+                              diag::Ptr{Float32}, schnab::Ptr{Float32}, ppos::Ptr{Int32},
+                              cntl::Ptr{Float32}, icntl::Ptr{Int32}, info::Ptr{Int32},
+                              rinfo::Ptr{Float32}, hold::Ptr{Int32}, biga::Ref{Float32})::Cvoid
+end
+
+function ma57or(::Type{Float64}, ::Type{Int32}, n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk,
+                node, diag, schnab, ppos, cntl, icntl, info, rinfo, hold, biga)
+  @ccall libhsl_subset.ma57od_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float64}, la::Ref{Int32},
+                               iw::Ptr{Int32}, liw::Ref{Int32}, lrow::Ptr{Int32}, perm::Ptr{Int32},
+                               nsteps::Ref{Int32}, nstk::Ptr{Int32}, node::Ptr{Int32},
+                               diag::Ptr{Float64}, schnab::Ptr{Float64}, ppos::Ptr{Int32},
+                               cntl::Ptr{Float64}, icntl::Ptr{Int32}, info::Ptr{Int32},
+                               rinfo::Ptr{Float64}, hold::Ptr{Int32}, biga::Ref{Float64})::Cvoid
+end
+
+function ma57or(::Type{Float128}, ::Type{Int32}, n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk,
+                node, diag, schnab, ppos, cntl, icntl, info, rinfo, hold, biga)
+  @ccall libhsl_subset.ma57oq_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float128}, la::Ref{Int32},
+                               iw::Ptr{Int32}, liw::Ref{Int32}, lrow::Ptr{Int32}, perm::Ptr{Int32},
+                               nsteps::Ref{Int32}, nstk::Ptr{Int32}, node::Ptr{Int32},
+                               diag::Ptr{Float128}, schnab::Ptr{Float128}, ppos::Ptr{Int32},
+                               cntl::Ptr{Float128}, icntl::Ptr{Int32}, info::Ptr{Int32},
+                               rinfo::Ptr{Float128}, hold::Ptr{Int32}, biga::Ref{Float128})::Cvoid
+end
+
+function ma57or(::Type{Float32}, ::Type{Int64}, n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk,
+                node, diag, schnab, ppos, cntl, icntl, info, rinfo, hold, biga)
+  @ccall libhsl_subset_64.ma57o_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32}, la::Ref{Int64},
+                                    iw::Ptr{Int64}, liw::Ref{Int64}, lrow::Ptr{Int64},
+                                    perm::Ptr{Int64}, nsteps::Ref{Int64}, nstk::Ptr{Int64},
+                                    node::Ptr{Int64}, diag::Ptr{Float32}, schnab::Ptr{Float32},
+                                    ppos::Ptr{Int64}, cntl::Ptr{Float32}, icntl::Ptr{Int64},
+                                    info::Ptr{Int64}, rinfo::Ptr{Float32}, hold::Ptr{Int64},
+                                    biga::Ref{Float32})::Cvoid
+end
+
+function ma57or(::Type{Float64}, ::Type{Int64}, n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk,
+                node, diag, schnab, ppos, cntl, icntl, info, rinfo, hold, biga)
+  @ccall libhsl_subset_64.ma57od_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float64}, la::Ref{Int64},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, lrow::Ptr{Int64},
+                                     perm::Ptr{Int64}, nsteps::Ref{Int64}, nstk::Ptr{Int64},
+                                     node::Ptr{Int64}, diag::Ptr{Float64}, schnab::Ptr{Float64},
+                                     ppos::Ptr{Int64}, cntl::Ptr{Float64}, icntl::Ptr{Int64},
+                                     info::Ptr{Int64}, rinfo::Ptr{Float64}, hold::Ptr{Int64},
+                                     biga::Ref{Float64})::Cvoid
+end
+
+function ma57or(::Type{Float128}, ::Type{Int64}, n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk,
+                node, diag, schnab, ppos, cntl, icntl, info, rinfo, hold, biga)
+  @ccall libhsl_subset_64.ma57oq_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float128},
+                                     la::Ref{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
+                                     lrow::Ptr{Int64}, perm::Ptr{Int64}, nsteps::Ref{Int64},
+                                     nstk::Ptr{Int64}, node::Ptr{Int64}, diag::Ptr{Float128},
+                                     schnab::Ptr{Float128}, ppos::Ptr{Int64}, cntl::Ptr{Float128},
+                                     icntl::Ptr{Int64}, info::Ptr{Int64}, rinfo::Ptr{Float128},
+                                     hold::Ptr{Int64}, biga::Ref{Float128})::Cvoid
+end
+
+function ma57pr(::Type{Float32}, ::Type{Int32}, a, iw, j1, j2, itop, real)
+  @ccall libhsl_subset.ma57p_(a::Ptr{Float32}, iw::Ptr{Int32}, j1::Ref{Int32}, j2::Ref{Int32},
+                              itop::Ref{Int32}, real::Ref{Cint})::Cvoid
+end
+
+function ma57pr(::Type{Float64}, ::Type{Int32}, a, iw, j1, j2, itop, real)
+  @ccall libhsl_subset.ma57pd_(a::Ptr{Float64}, iw::Ptr{Int32}, j1::Ref{Int32}, j2::Ref{Int32},
+                               itop::Ref{Int32}, real::Ref{Cint})::Cvoid
+end
+
+function ma57pr(::Type{Float128}, ::Type{Int32}, a, iw, j1, j2, itop, real)
+  @ccall libhsl_subset.ma57pq_(a::Ptr{Float128}, iw::Ptr{Int32}, j1::Ref{Int32}, j2::Ref{Int32},
+                               itop::Ref{Int32}, real::Ref{Cint})::Cvoid
+end
+
+function ma57pr(::Type{Float32}, ::Type{Int64}, a, iw, j1, j2, itop, real)
+  @ccall libhsl_subset_64.ma57p_64_(a::Ptr{Float32}, iw::Ptr{Int64}, j1::Ref{Int64}, j2::Ref{Int64},
+                                    itop::Ref{Int64}, real::Ref{Cint})::Cvoid
+end
+
+function ma57pr(::Type{Float64}, ::Type{Int64}, a, iw, j1, j2, itop, real)
+  @ccall libhsl_subset_64.ma57pd_64_(a::Ptr{Float64}, iw::Ptr{Int64}, j1::Ref{Int64},
+                                     j2::Ref{Int64}, itop::Ref{Int64}, real::Ref{Cint})::Cvoid
+end
+
+function ma57pr(::Type{Float128}, ::Type{Int64}, a, iw, j1, j2, itop, real)
+  @ccall libhsl_subset_64.ma57pq_64_(a::Ptr{Float128}, iw::Ptr{Int64}, j1::Ref{Int64},
+                                     j2::Ref{Int64}, itop::Ref{Int64}, real::Ref{Cint})::Cvoid
+end
+
+function ma57wr(::Type{Float32}, ::Type{Int32}, a, la, iw, liw, nrlbdu)
+  @ccall libhsl_subset.ma57w_(a::Ptr{Float32}, la::Ref{Int32}, iw::Ptr{Int32}, liw::Ref{Int32},
+                              nrlbdu::Ref{Int32})::Cvoid
+end
+
+function ma57wr(::Type{Float64}, ::Type{Int32}, a, la, iw, liw, nrlbdu)
+  @ccall libhsl_subset.ma57wd_(a::Ptr{Float64}, la::Ref{Int32}, iw::Ptr{Int32}, liw::Ref{Int32},
+                               nrlbdu::Ref{Int32})::Cvoid
+end
+
+function ma57wr(::Type{Float128}, ::Type{Int32}, a, la, iw, liw, nrlbdu)
+  @ccall libhsl_subset.ma57wq_(a::Ptr{Float128}, la::Ref{Int32}, iw::Ptr{Int32}, liw::Ref{Int32},
+                               nrlbdu::Ref{Int32})::Cvoid
+end
+
+function ma57wr(::Type{Float32}, ::Type{Int64}, a, la, iw, liw, nrlbdu)
+  @ccall libhsl_subset_64.ma57w_64_(a::Ptr{Float32}, la::Ref{Int64}, iw::Ptr{Int64},
+                                    liw::Ref{Int64}, nrlbdu::Ref{Int64})::Cvoid
+end
+
+function ma57wr(::Type{Float64}, ::Type{Int64}, a, la, iw, liw, nrlbdu)
+  @ccall libhsl_subset_64.ma57wd_64_(a::Ptr{Float64}, la::Ref{Int64}, iw::Ptr{Int64},
+                                     liw::Ref{Int64}, nrlbdu::Ref{Int64})::Cvoid
+end
+
+function ma57wr(::Type{Float128}, ::Type{Int64}, a, la, iw, liw, nrlbdu)
+  @ccall libhsl_subset_64.ma57wq_64_(a::Ptr{Float128}, la::Ref{Int64}, iw::Ptr{Int64},
+                                     liw::Ref{Int64}, nrlbdu::Ref{Int64})::Cvoid
+end
+
+function ma57xr(::Type{Float32}, ::Type{Int32}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset.ma57x_(n::Ref{Int32}, fact::Ptr{Float32}, lfact::Ref{Int32},
+                              ifact::Ptr{Int32}, lifact::Ref{Int32}, rhs::Ptr{Float32},
+                              lrhs::Ref{Int32}, w::Ptr{Float32}, lw::Ref{Int32}, iw1::Ptr{Int32},
+                              icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57xr(::Type{Float64}, ::Type{Int32}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset.ma57xd_(n::Ref{Int32}, fact::Ptr{Float64}, lfact::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, rhs::Ptr{Float64},
+                               lrhs::Ref{Int32}, w::Ptr{Float64}, lw::Ref{Int32}, iw1::Ptr{Int32},
+                               icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57xr(::Type{Float128}, ::Type{Int32}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset.ma57xq_(n::Ref{Int32}, fact::Ptr{Float128}, lfact::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, rhs::Ptr{Float128},
+                               lrhs::Ref{Int32}, w::Ptr{Float128}, lw::Ref{Int32}, iw1::Ptr{Int32},
+                               icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57xr(::Type{Float32}, ::Type{Int64}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset_64.ma57x_64_(n::Ref{Int64}, fact::Ptr{Float32}, lfact::Ref{Int64},
+                                    ifact::Ptr{Int64}, lifact::Ref{Int64}, rhs::Ptr{Float32},
+                                    lrhs::Ref{Int64}, w::Ptr{Float32}, lw::Ref{Int64},
+                                    iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57xr(::Type{Float64}, ::Type{Int64}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset_64.ma57xd_64_(n::Ref{Int64}, fact::Ptr{Float64}, lfact::Ref{Int64},
+                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, rhs::Ptr{Float64},
+                                     lrhs::Ref{Int64}, w::Ptr{Float64}, lw::Ref{Int64},
+                                     iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57xr(::Type{Float128}, ::Type{Int64}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset_64.ma57xq_64_(n::Ref{Int64}, fact::Ptr{Float128}, lfact::Ref{Int64},
+                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, rhs::Ptr{Float128},
+                                     lrhs::Ref{Int64}, w::Ptr{Float128}, lw::Ref{Int64},
+                                     iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57yr(::Type{Float32}, ::Type{Int32}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset.ma57y_(n::Ref{Int32}, fact::Ptr{Float32}, lfact::Ref{Int32},
+                              ifact::Ptr{Int32}, lifact::Ref{Int32}, rhs::Ptr{Float32},
+                              lrhs::Ref{Int32}, w::Ptr{Float32}, lw::Ref{Int32}, iw1::Ptr{Int32},
+                              icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57yr(::Type{Float64}, ::Type{Int32}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset.ma57yd_(n::Ref{Int32}, fact::Ptr{Float64}, lfact::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, rhs::Ptr{Float64},
+                               lrhs::Ref{Int32}, w::Ptr{Float64}, lw::Ref{Int32}, iw1::Ptr{Int32},
+                               icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57yr(::Type{Float128}, ::Type{Int32}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset.ma57yq_(n::Ref{Int32}, fact::Ptr{Float128}, lfact::Ref{Int32},
+                               ifact::Ptr{Int32}, lifact::Ref{Int32}, rhs::Ptr{Float128},
+                               lrhs::Ref{Int32}, w::Ptr{Float128}, lw::Ref{Int32}, iw1::Ptr{Int32},
+                               icntl::Ptr{Int32})::Cvoid
+end
+
+function ma57yr(::Type{Float32}, ::Type{Int64}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset_64.ma57y_64_(n::Ref{Int64}, fact::Ptr{Float32}, lfact::Ref{Int64},
+                                    ifact::Ptr{Int64}, lifact::Ref{Int64}, rhs::Ptr{Float32},
+                                    lrhs::Ref{Int64}, w::Ptr{Float32}, lw::Ref{Int64},
+                                    iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57yr(::Type{Float64}, ::Type{Int64}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset_64.ma57yd_64_(n::Ref{Int64}, fact::Ptr{Float64}, lfact::Ref{Int64},
+                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, rhs::Ptr{Float64},
+                                     lrhs::Ref{Int64}, w::Ptr{Float64}, lw::Ref{Int64},
+                                     iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57yr(::Type{Float128}, ::Type{Int64}, n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw,
+                iw1, icntl)
+  @ccall libhsl_subset_64.ma57yq_64_(n::Ref{Int64}, fact::Ptr{Float128}, lfact::Ref{Int64},
+                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, rhs::Ptr{Float128},
+                                     lrhs::Ref{Int64}, w::Ptr{Float128}, lw::Ref{Int64},
+                                     iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
+end
+
+function ma57vr(::Type{Float32}, ::Type{Int32}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset.ma57v_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                              iw::Ptr{Int32}, lw::Ref{Int32}, ipe::Ptr{Int32}, iq::Ptr{Int32},
+                              flag::Ptr{Int32}, iwfr::Ref{Int32}, icntl::Ptr{Int32},
+                              info::Ptr{Int32})::Cvoid
+end
+
+function ma57vr(::Type{Float64}, ::Type{Int32}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset.ma57vd_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               iw::Ptr{Int32}, lw::Ref{Int32}, ipe::Ptr{Int32}, iq::Ptr{Int32},
+                               flag::Ptr{Int32}, iwfr::Ref{Int32}, icntl::Ptr{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma57vr(::Type{Float128}, ::Type{Int32}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset.ma57vq_(n::Ref{Int32}, nz::Ref{Int32}, irn::Ptr{Int32}, icn::Ptr{Int32},
+                               iw::Ptr{Int32}, lw::Ref{Int32}, ipe::Ptr{Int32}, iq::Ptr{Int32},
+                               flag::Ptr{Int32}, iwfr::Ref{Int32}, icntl::Ptr{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function ma57vr(::Type{Float32}, ::Type{Int64}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset_64.ma57v_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
+                                    iw::Ptr{Int64}, lw::Ref{Int64}, ipe::Ptr{Int64}, iq::Ptr{Int64},
+                                    flag::Ptr{Int64}, iwfr::Ref{Int64}, icntl::Ptr{Int64},
+                                    info::Ptr{Int64})::Cvoid
+end
+
+function ma57vr(::Type{Float64}, ::Type{Int64}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl,
+                info)
+  @ccall libhsl_subset_64.ma57vd_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     ipe::Ptr{Int64}, iq::Ptr{Int64}, flag::Ptr{Int64},
+                                     iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57vr(::Type{Float128}, ::Type{Int64}, n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr,
+                icntl, info)
+  @ccall libhsl_subset_64.ma57vq_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     icn::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     ipe::Ptr{Int64}, iq::Ptr{Int64}, flag::Ptr{Int64},
+                                     iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function ma57hr(::Type{Float32}, ::Type{Int32}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset.ma57h_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                              iwfr::Ref{Int32}, nv::Ptr{Int32}, nxt::Ptr{Int32}, lst::Ptr{Int32},
+                              ipd::Ptr{Int32}, flag::Ptr{Int32}, iovflo::Ref{Int32},
+                              ncmpa::Ref{Int32}, fratio::Ref{Float32})::Cvoid
+end
+
+function ma57hr(::Type{Float64}, ::Type{Int32}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset.ma57hd_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, nv::Ptr{Int32}, nxt::Ptr{Int32}, lst::Ptr{Int32},
+                               ipd::Ptr{Int32}, flag::Ptr{Int32}, iovflo::Ref{Int32},
+                               ncmpa::Ref{Int32}, fratio::Ref{Float64})::Cvoid
+end
+
+function ma57hr(::Type{Float128}, ::Type{Int32}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset.ma57hq_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, nv::Ptr{Int32}, nxt::Ptr{Int32}, lst::Ptr{Int32},
+                               ipd::Ptr{Int32}, flag::Ptr{Int32}, iovflo::Ref{Int32},
+                               ncmpa::Ref{Int32}, fratio::Ref{Float128})::Cvoid
+end
+
+function ma57hr(::Type{Float32}, ::Type{Int64}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset_64.ma57h_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                    iwfr::Ref{Int64}, nv::Ptr{Int64}, nxt::Ptr{Int64},
+                                    lst::Ptr{Int64}, ipd::Ptr{Int64}, flag::Ptr{Int64},
+                                    iovflo::Ref{Int64}, ncmpa::Ref{Int64},
+                                    fratio::Ref{Float32})::Cvoid
+end
+
+function ma57hr(::Type{Float64}, ::Type{Int64}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset_64.ma57hd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, nv::Ptr{Int64}, nxt::Ptr{Int64},
+                                     lst::Ptr{Int64}, ipd::Ptr{Int64}, flag::Ptr{Int64},
+                                     iovflo::Ref{Int64}, ncmpa::Ref{Int64},
+                                     fratio::Ref{Float64})::Cvoid
+end
+
+function ma57hr(::Type{Float128}, ::Type{Int64}, n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag,
+                iovflo, ncmpa, fratio)
+  @ccall libhsl_subset_64.ma57hq_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, nv::Ptr{Int64}, nxt::Ptr{Int64},
+                                     lst::Ptr{Int64}, ipd::Ptr{Int64}, flag::Ptr{Int64},
+                                     iovflo::Ref{Int64}, ncmpa::Ref{Int64},
+                                     fratio::Ref{Float128})::Cvoid
+end
+
+function ma57zr(::Type{Float32}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset.ma57z_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                              iwfr::Ref{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma57zr(::Type{Float64}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset.ma57zd_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma57zr(::Type{Float128}, ::Type{Int32}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset.ma57zq_(n::Ref{Int32}, ipe::Ptr{Int32}, iw::Ptr{Int32}, lw::Ref{Int32},
+                               iwfr::Ref{Int32}, ncmpa::Ref{Int32})::Cvoid
+end
+
+function ma57zr(::Type{Float32}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset_64.ma57z_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                    iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma57zr(::Type{Float64}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset_64.ma57zd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
+
+function ma57zr(::Type{Float128}, ::Type{Int64}, n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl_subset_64.ma57zq_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
+                                     iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/ma61.jl b/src/Fortran/hsl_subset/ma61.jl
new file mode 100644
index 0000000..137704a
--- /dev/null
+++ b/src/Fortran/hsl_subset/ma61.jl
@@ -0,0 +1,379 @@
+function ma61ir(::Type{Float32}, ::Type{Int32}, icntl, cntl, keep)
+  @ccall libhsl_subset.ma61i_(icntl::Ptr{Int32}, cntl::Ptr{Float32}, keep::Ptr{Int32})::Cvoid
+end
+
+function ma61ir(::Type{Float64}, ::Type{Int32}, icntl, cntl, keep)
+  @ccall libhsl_subset.ma61id_(icntl::Ptr{Int32}, cntl::Ptr{Float64}, keep::Ptr{Int32})::Cvoid
+end
+
+function ma61ir(::Type{Float128}, ::Type{Int32}, icntl, cntl, keep)
+  @ccall libhsl_subset.ma61iq_(icntl::Ptr{Int32}, cntl::Ptr{Float128}, keep::Ptr{Int32})::Cvoid
+end
+
+function ma61ir(::Type{Float32}, ::Type{Int64}, icntl, cntl, keep)
+  @ccall libhsl_subset_64.ma61i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61ir(::Type{Float64}, ::Type{Int64}, icntl, cntl, keep)
+  @ccall libhsl_subset_64.ma61id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61ir(::Type{Float128}, ::Type{Int64}, icntl, cntl, keep)
+  @ccall libhsl_subset_64.ma61iq_64_(icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     keep::Ptr{Int64})::Cvoid
+end
+
+function ma61ar(::Type{Float32}, ::Type{Int32}, n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl,
+                cntl, info, keep)
+  @ccall libhsl_subset.ma61a_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float32}, ini::Ptr{Int32},
+                              inj::Ptr{Int32}, iai::Ref{Int32}, iaj::Ref{Int32}, ik::Ptr{Int32},
+                              iw::Ptr{Int32}, w::Ptr{Float32}, c::Ref{Float32}, icntl::Ptr{Int32},
+                              cntl::Ptr{Float32}, info::Ptr{Int32}, keep::Ptr{Int32})::Cvoid
+end
+
+function ma61ar(::Type{Float64}, ::Type{Int32}, n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl,
+                cntl, info, keep)
+  @ccall libhsl_subset.ma61ad_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float64}, ini::Ptr{Int32},
+                               inj::Ptr{Int32}, iai::Ref{Int32}, iaj::Ref{Int32}, ik::Ptr{Int32},
+                               iw::Ptr{Int32}, w::Ptr{Float64}, c::Ref{Float64}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float64}, info::Ptr{Int32}, keep::Ptr{Int32})::Cvoid
+end
+
+function ma61ar(::Type{Float128}, ::Type{Int32}, n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl,
+                cntl, info, keep)
+  @ccall libhsl_subset.ma61aq_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float128}, ini::Ptr{Int32},
+                               inj::Ptr{Int32}, iai::Ref{Int32}, iaj::Ref{Int32}, ik::Ptr{Int32},
+                               iw::Ptr{Int32}, w::Ptr{Float128}, c::Ref{Float128},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float128}, info::Ptr{Int32},
+                               keep::Ptr{Int32})::Cvoid
+end
+
+function ma61ar(::Type{Float32}, ::Type{Int64}, n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl,
+                cntl, info, keep)
+  @ccall libhsl_subset_64.ma61a_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32}, ini::Ptr{Int64},
+                                    inj::Ptr{Int64}, iai::Ref{Int64}, iaj::Ref{Int64},
+                                    ik::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float32},
+                                    c::Ref{Float32}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
+                                    info::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61ar(::Type{Float64}, ::Type{Int64}, n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl,
+                cntl, info, keep)
+  @ccall libhsl_subset_64.ma61ad_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64},
+                                     ini::Ptr{Int64}, inj::Ptr{Int64}, iai::Ref{Int64},
+                                     iaj::Ref{Int64}, ik::Ptr{Int64}, iw::Ptr{Int64},
+                                     w::Ptr{Float64}, c::Ref{Float64}, icntl::Ptr{Int64},
+                                     cntl::Ptr{Float64}, info::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61ar(::Type{Float128}, ::Type{Int64}, n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl,
+                cntl, info, keep)
+  @ccall libhsl_subset_64.ma61aq_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float128},
+                                     ini::Ptr{Int64}, inj::Ptr{Int64}, iai::Ref{Int64},
+                                     iaj::Ref{Int64}, ik::Ptr{Int64}, iw::Ptr{Int64},
+                                     w::Ptr{Float128}, c::Ref{Float128}, icntl::Ptr{Int64},
+                                     cntl::Ptr{Float128}, info::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61cr(::Type{Float32}, ::Type{Int32}, n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w,
+                iflag, c, icntl, cntl, keep)
+  @ccall libhsl_subset.ma61c_(n::Ref{Int32}, nz::Ref{Int32}, d::Ptr{Float32}, a::Ptr{Float32},
+                              ini::Ptr{Int32}, inj::Ptr{Int32}, iai::Ref{Int32}, iaj::Ref{Int32},
+                              ik::Ptr{Int32}, ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float32},
+                              iflag::Ref{Int32}, c::Ref{Float32}, icntl::Ptr{Int32},
+                              cntl::Ptr{Float32}, keep::Ptr{Int32})::Cvoid
+end
+
+function ma61cr(::Type{Float64}, ::Type{Int32}, n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w,
+                iflag, c, icntl, cntl, keep)
+  @ccall libhsl_subset.ma61cd_(n::Ref{Int32}, nz::Ref{Int32}, d::Ptr{Float64}, a::Ptr{Float64},
+                               ini::Ptr{Int32}, inj::Ptr{Int32}, iai::Ref{Int32}, iaj::Ref{Int32},
+                               ik::Ptr{Int32}, ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float64},
+                               iflag::Ref{Int32}, c::Ref{Float64}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float64}, keep::Ptr{Int32})::Cvoid
+end
+
+function ma61cr(::Type{Float128}, ::Type{Int32}, n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w,
+                iflag, c, icntl, cntl, keep)
+  @ccall libhsl_subset.ma61cq_(n::Ref{Int32}, nz::Ref{Int32}, d::Ptr{Float128}, a::Ptr{Float128},
+                               ini::Ptr{Int32}, inj::Ptr{Int32}, iai::Ref{Int32}, iaj::Ref{Int32},
+                               ik::Ptr{Int32}, ip::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float128},
+                               iflag::Ref{Int32}, c::Ref{Float128}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float128}, keep::Ptr{Int32})::Cvoid
+end
+
+function ma61cr(::Type{Float32}, ::Type{Int64}, n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w,
+                iflag, c, icntl, cntl, keep)
+  @ccall libhsl_subset_64.ma61c_64_(n::Ref{Int64}, nz::Ref{Int64}, d::Ptr{Float32}, a::Ptr{Float32},
+                                    ini::Ptr{Int64}, inj::Ptr{Int64}, iai::Ref{Int64},
+                                    iaj::Ref{Int64}, ik::Ptr{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64},
+                                    w::Ptr{Float32}, iflag::Ref{Int64}, c::Ref{Float32},
+                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61cr(::Type{Float64}, ::Type{Int64}, n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w,
+                iflag, c, icntl, cntl, keep)
+  @ccall libhsl_subset_64.ma61cd_64_(n::Ref{Int64}, nz::Ref{Int64}, d::Ptr{Float64},
+                                     a::Ptr{Float64}, ini::Ptr{Int64}, inj::Ptr{Int64},
+                                     iai::Ref{Int64}, iaj::Ref{Int64}, ik::Ptr{Int64},
+                                     ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float64},
+                                     iflag::Ref{Int64}, c::Ref{Float64}, icntl::Ptr{Int64},
+                                     cntl::Ptr{Float64}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61cr(::Type{Float128}, ::Type{Int64}, n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w,
+                iflag, c, icntl, cntl, keep)
+  @ccall libhsl_subset_64.ma61cq_64_(n::Ref{Int64}, nz::Ref{Int64}, d::Ptr{Float128},
+                                     a::Ptr{Float128}, ini::Ptr{Int64}, inj::Ptr{Int64},
+                                     iai::Ref{Int64}, iaj::Ref{Int64}, ik::Ptr{Int64},
+                                     ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float128},
+                                     iflag::Ref{Int64}, c::Ref{Float128}, icntl::Ptr{Int64},
+                                     cntl::Ptr{Float128}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61dr(::Type{Float32}, ::Type{Int32}, a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
+  @ccall libhsl_subset.ma61d_(a::Ptr{Float32}, irn::Ptr{Int32}, ia::Ref{Int32}, n::Ref{Int32},
+                              ik::Ptr{Int32}, ip::Ptr{Int32}, row::Ref{Cint}, ncp::Ref{Int32},
+                              nucl::Ref{Int32}, nual::Ref{Int32})::Cvoid
+end
+
+function ma61dr(::Type{Float64}, ::Type{Int32}, a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
+  @ccall libhsl_subset.ma61dd_(a::Ptr{Float64}, irn::Ptr{Int32}, ia::Ref{Int32}, n::Ref{Int32},
+                               ik::Ptr{Int32}, ip::Ptr{Int32}, row::Ref{Cint}, ncp::Ref{Int32},
+                               nucl::Ref{Int32}, nual::Ref{Int32})::Cvoid
+end
+
+function ma61dr(::Type{Float128}, ::Type{Int32}, a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
+  @ccall libhsl_subset.ma61dq_(a::Ptr{Float128}, irn::Ptr{Int32}, ia::Ref{Int32}, n::Ref{Int32},
+                               ik::Ptr{Int32}, ip::Ptr{Int32}, row::Ref{Cint}, ncp::Ref{Int32},
+                               nucl::Ref{Int32}, nual::Ref{Int32})::Cvoid
+end
+
+function ma61dr(::Type{Float32}, ::Type{Int64}, a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
+  @ccall libhsl_subset_64.ma61d_64_(a::Ptr{Float32}, irn::Ptr{Int64}, ia::Ref{Int64}, n::Ref{Int64},
+                                    ik::Ptr{Int64}, ip::Ptr{Int64}, row::Ref{Cint}, ncp::Ref{Int64},
+                                    nucl::Ref{Int64}, nual::Ref{Int64})::Cvoid
+end
+
+function ma61dr(::Type{Float64}, ::Type{Int64}, a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
+  @ccall libhsl_subset_64.ma61dd_64_(a::Ptr{Float64}, irn::Ptr{Int64}, ia::Ref{Int64},
+                                     n::Ref{Int64}, ik::Ptr{Int64}, ip::Ptr{Int64}, row::Ref{Cint},
+                                     ncp::Ref{Int64}, nucl::Ref{Int64}, nual::Ref{Int64})::Cvoid
+end
+
+function ma61dr(::Type{Float128}, ::Type{Int64}, a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
+  @ccall libhsl_subset_64.ma61dq_64_(a::Ptr{Float128}, irn::Ptr{Int64}, ia::Ref{Int64},
+                                     n::Ref{Int64}, ik::Ptr{Int64}, ip::Ptr{Int64}, row::Ref{Cint},
+                                     ncp::Ref{Int64}, nucl::Ref{Int64}, nual::Ref{Int64})::Cvoid
+end
+
+function ma61er(::Type{Float32}, ::Type{Int32}, in1, in2, nz, ip, n, a)
+  @ccall libhsl_subset.ma61e_(in1::Ptr{Int32}, in2::Ptr{Int32}, nz::Ref{Int32}, ip::Ptr{Int32},
+                              n::Ref{Int32}, a::Ptr{Float32})::Cvoid
+end
+
+function ma61er(::Type{Float64}, ::Type{Int32}, in1, in2, nz, ip, n, a)
+  @ccall libhsl_subset.ma61ed_(in1::Ptr{Int32}, in2::Ptr{Int32}, nz::Ref{Int32}, ip::Ptr{Int32},
+                               n::Ref{Int32}, a::Ptr{Float64})::Cvoid
+end
+
+function ma61er(::Type{Float128}, ::Type{Int32}, in1, in2, nz, ip, n, a)
+  @ccall libhsl_subset.ma61eq_(in1::Ptr{Int32}, in2::Ptr{Int32}, nz::Ref{Int32}, ip::Ptr{Int32},
+                               n::Ref{Int32}, a::Ptr{Float128})::Cvoid
+end
+
+function ma61er(::Type{Float32}, ::Type{Int64}, in1, in2, nz, ip, n, a)
+  @ccall libhsl_subset_64.ma61e_64_(in1::Ptr{Int64}, in2::Ptr{Int64}, nz::Ref{Int64},
+                                    ip::Ptr{Int64}, n::Ref{Int64}, a::Ptr{Float32})::Cvoid
+end
+
+function ma61er(::Type{Float64}, ::Type{Int64}, in1, in2, nz, ip, n, a)
+  @ccall libhsl_subset_64.ma61ed_64_(in1::Ptr{Int64}, in2::Ptr{Int64}, nz::Ref{Int64},
+                                     ip::Ptr{Int64}, n::Ref{Int64}, a::Ptr{Float64})::Cvoid
+end
+
+function ma61er(::Type{Float128}, ::Type{Int64}, in1, in2, nz, ip, n, a)
+  @ccall libhsl_subset_64.ma61eq_64_(in1::Ptr{Int64}, in2::Ptr{Int64}, nz::Ref{Int64},
+                                     ip::Ptr{Int64}, n::Ref{Int64}, a::Ptr{Float128})::Cvoid
+end
+
+function ma61gr(::Type{Float32}, ::Type{Int32}, n, a, inj, iaj, d, ik, b, lrow)
+  @ccall libhsl_subset.ma61g_(n::Ref{Int32}, a::Ptr{Float32}, inj::Ptr{Int32}, iaj::Ref{Int32},
+                              d::Ptr{Float32}, ik::Ptr{Int32}, b::Ptr{Float32},
+                              lrow::Ref{Int32})::Cvoid
+end
+
+function ma61gr(::Type{Float64}, ::Type{Int32}, n, a, inj, iaj, d, ik, b, lrow)
+  @ccall libhsl_subset.ma61gd_(n::Ref{Int32}, a::Ptr{Float64}, inj::Ptr{Int32}, iaj::Ref{Int32},
+                               d::Ptr{Float64}, ik::Ptr{Int32}, b::Ptr{Float64},
+                               lrow::Ref{Int32})::Cvoid
+end
+
+function ma61gr(::Type{Float128}, ::Type{Int32}, n, a, inj, iaj, d, ik, b, lrow)
+  @ccall libhsl_subset.ma61gq_(n::Ref{Int32}, a::Ptr{Float128}, inj::Ptr{Int32}, iaj::Ref{Int32},
+                               d::Ptr{Float128}, ik::Ptr{Int32}, b::Ptr{Float128},
+                               lrow::Ref{Int32})::Cvoid
+end
+
+function ma61gr(::Type{Float32}, ::Type{Int64}, n, a, inj, iaj, d, ik, b, lrow)
+  @ccall libhsl_subset_64.ma61g_64_(n::Ref{Int64}, a::Ptr{Float32}, inj::Ptr{Int64},
+                                    iaj::Ref{Int64}, d::Ptr{Float32}, ik::Ptr{Int64},
+                                    b::Ptr{Float32}, lrow::Ref{Int64})::Cvoid
+end
+
+function ma61gr(::Type{Float64}, ::Type{Int64}, n, a, inj, iaj, d, ik, b, lrow)
+  @ccall libhsl_subset_64.ma61gd_64_(n::Ref{Int64}, a::Ptr{Float64}, inj::Ptr{Int64},
+                                     iaj::Ref{Int64}, d::Ptr{Float64}, ik::Ptr{Int64},
+                                     b::Ptr{Float64}, lrow::Ref{Int64})::Cvoid
+end
+
+function ma61gr(::Type{Float128}, ::Type{Int64}, n, a, inj, iaj, d, ik, b, lrow)
+  @ccall libhsl_subset_64.ma61gq_64_(n::Ref{Int64}, a::Ptr{Float128}, inj::Ptr{Int64},
+                                     iaj::Ref{Int64}, d::Ptr{Float128}, ik::Ptr{Int64},
+                                     b::Ptr{Float128}, lrow::Ref{Int64})::Cvoid
+end
+
+function ma61br(::Type{Float32}, ::Type{Int32}, n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps,
+                icntl, info, keep)
+  @ccall libhsl_subset.ma61b_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float32}, ini::Ptr{Int32},
+                              inj::Ptr{Int32}, iaj::Ref{Int32}, ik::Ptr{Int32}, b::Ptr{Float32},
+                              w::Ptr{Float32}, w1::Ptr{Float32}, kmax::Ptr{Int32},
+                              eps::Ptr{Float32}, icntl::Ptr{Int32}, info::Ptr{Int32},
+                              keep::Ptr{Int32})::Cvoid
+end
+
+function ma61br(::Type{Float64}, ::Type{Int32}, n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps,
+                icntl, info, keep)
+  @ccall libhsl_subset.ma61bd_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float64}, ini::Ptr{Int32},
+                               inj::Ptr{Int32}, iaj::Ref{Int32}, ik::Ptr{Int32}, b::Ptr{Float64},
+                               w::Ptr{Float64}, w1::Ptr{Float64}, kmax::Ptr{Int32},
+                               eps::Ptr{Float64}, icntl::Ptr{Int32}, info::Ptr{Int32},
+                               keep::Ptr{Int32})::Cvoid
+end
+
+function ma61br(::Type{Float128}, ::Type{Int32}, n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps,
+                icntl, info, keep)
+  @ccall libhsl_subset.ma61bq_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float128}, ini::Ptr{Int32},
+                               inj::Ptr{Int32}, iaj::Ref{Int32}, ik::Ptr{Int32}, b::Ptr{Float128},
+                               w::Ptr{Float128}, w1::Ptr{Float128}, kmax::Ptr{Int32},
+                               eps::Ptr{Float128}, icntl::Ptr{Int32}, info::Ptr{Int32},
+                               keep::Ptr{Int32})::Cvoid
+end
+
+function ma61br(::Type{Float32}, ::Type{Int64}, n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps,
+                icntl, info, keep)
+  @ccall libhsl_subset_64.ma61b_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32}, ini::Ptr{Int64},
+                                    inj::Ptr{Int64}, iaj::Ref{Int64}, ik::Ptr{Int64},
+                                    b::Ptr{Float32}, w::Ptr{Float32}, w1::Ptr{Float32},
+                                    kmax::Ptr{Int64}, eps::Ptr{Float32}, icntl::Ptr{Int64},
+                                    info::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61br(::Type{Float64}, ::Type{Int64}, n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps,
+                icntl, info, keep)
+  @ccall libhsl_subset_64.ma61bd_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64},
+                                     ini::Ptr{Int64}, inj::Ptr{Int64}, iaj::Ref{Int64},
+                                     ik::Ptr{Int64}, b::Ptr{Float64}, w::Ptr{Float64},
+                                     w1::Ptr{Float64}, kmax::Ptr{Int64}, eps::Ptr{Float64},
+                                     icntl::Ptr{Int64}, info::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61br(::Type{Float128}, ::Type{Int64}, n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps,
+                icntl, info, keep)
+  @ccall libhsl_subset_64.ma61bq_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float128},
+                                     ini::Ptr{Int64}, inj::Ptr{Int64}, iaj::Ref{Int64},
+                                     ik::Ptr{Int64}, b::Ptr{Float128}, w::Ptr{Float128},
+                                     w1::Ptr{Float128}, kmax::Ptr{Int64}, eps::Ptr{Float128},
+                                     icntl::Ptr{Int64}, info::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
+end
+
+function ma61fr(::Type{Float32}, ::Type{Int32}, n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e,
+                f, g, kmax, eps, lrow)
+  @ccall libhsl_subset.ma61f_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float32}, ini::Ptr{Int32},
+                              inj::Ptr{Int32}, iaf::Ref{Int32}, af::Ptr{Float32}, df::Ptr{Float32},
+                              injf::Ptr{Int32}, ik::Ptr{Int32}, b::Ptr{Float32}, r::Ptr{Float32},
+                              e::Ptr{Float32}, f::Ptr{Float32}, g::Ptr{Float32}, kmax::Ref{Int32},
+                              eps::Ref{Float32}, lrow::Ref{Int32})::Cvoid
+end
+
+function ma61fr(::Type{Float64}, ::Type{Int32}, n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e,
+                f, g, kmax, eps, lrow)
+  @ccall libhsl_subset.ma61fd_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float64}, ini::Ptr{Int32},
+                               inj::Ptr{Int32}, iaf::Ref{Int32}, af::Ptr{Float64}, df::Ptr{Float64},
+                               injf::Ptr{Int32}, ik::Ptr{Int32}, b::Ptr{Float64}, r::Ptr{Float64},
+                               e::Ptr{Float64}, f::Ptr{Float64}, g::Ptr{Float64}, kmax::Ref{Int32},
+                               eps::Ref{Float64}, lrow::Ref{Int32})::Cvoid
+end
+
+function ma61fr(::Type{Float128}, ::Type{Int32}, n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e,
+                f, g, kmax, eps, lrow)
+  @ccall libhsl_subset.ma61fq_(n::Ref{Int32}, nz::Ref{Int32}, a::Ptr{Float128}, ini::Ptr{Int32},
+                               inj::Ptr{Int32}, iaf::Ref{Int32}, af::Ptr{Float128},
+                               df::Ptr{Float128}, injf::Ptr{Int32}, ik::Ptr{Int32},
+                               b::Ptr{Float128}, r::Ptr{Float128}, e::Ptr{Float128},
+                               f::Ptr{Float128}, g::Ptr{Float128}, kmax::Ref{Int32},
+                               eps::Ref{Float128}, lrow::Ref{Int32})::Cvoid
+end
+
+function ma61fr(::Type{Float32}, ::Type{Int64}, n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e,
+                f, g, kmax, eps, lrow)
+  @ccall libhsl_subset_64.ma61f_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32}, ini::Ptr{Int64},
+                                    inj::Ptr{Int64}, iaf::Ref{Int64}, af::Ptr{Float32},
+                                    df::Ptr{Float32}, injf::Ptr{Int64}, ik::Ptr{Int64},
+                                    b::Ptr{Float32}, r::Ptr{Float32}, e::Ptr{Float32},
+                                    f::Ptr{Float32}, g::Ptr{Float32}, kmax::Ref{Int64},
+                                    eps::Ref{Float32}, lrow::Ref{Int64})::Cvoid
+end
+
+function ma61fr(::Type{Float64}, ::Type{Int64}, n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e,
+                f, g, kmax, eps, lrow)
+  @ccall libhsl_subset_64.ma61fd_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64},
+                                     ini::Ptr{Int64}, inj::Ptr{Int64}, iaf::Ref{Int64},
+                                     af::Ptr{Float64}, df::Ptr{Float64}, injf::Ptr{Int64},
+                                     ik::Ptr{Int64}, b::Ptr{Float64}, r::Ptr{Float64},
+                                     e::Ptr{Float64}, f::Ptr{Float64}, g::Ptr{Float64},
+                                     kmax::Ref{Int64}, eps::Ref{Float64}, lrow::Ref{Int64})::Cvoid
+end
+
+function ma61fr(::Type{Float128}, ::Type{Int64}, n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e,
+                f, g, kmax, eps, lrow)
+  @ccall libhsl_subset_64.ma61fq_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float128},
+                                     ini::Ptr{Int64}, inj::Ptr{Int64}, iaf::Ref{Int64},
+                                     af::Ptr{Float128}, df::Ptr{Float128}, injf::Ptr{Int64},
+                                     ik::Ptr{Int64}, b::Ptr{Float128}, r::Ptr{Float128},
+                                     e::Ptr{Float128}, f::Ptr{Float128}, g::Ptr{Float128},
+                                     kmax::Ref{Int64}, eps::Ref{Float128}, lrow::Ref{Int64})::Cvoid
+end
+
+function ma61hr(::Type{Float32}, ::Type{Int32}, a, ini, inj, nz, n, b, z)
+  @ccall libhsl_subset.ma61h_(a::Ptr{Float32}, ini::Ptr{Int32}, inj::Ptr{Int32}, nz::Ref{Int32},
+                              n::Ref{Int32}, b::Ptr{Float32}, z::Ptr{Float32})::Cvoid
+end
+
+function ma61hr(::Type{Float64}, ::Type{Int32}, a, ini, inj, nz, n, b, z)
+  @ccall libhsl_subset.ma61hd_(a::Ptr{Float64}, ini::Ptr{Int32}, inj::Ptr{Int32}, nz::Ref{Int32},
+                               n::Ref{Int32}, b::Ptr{Float64}, z::Ptr{Float64})::Cvoid
+end
+
+function ma61hr(::Type{Float128}, ::Type{Int32}, a, ini, inj, nz, n, b, z)
+  @ccall libhsl_subset.ma61hq_(a::Ptr{Float128}, ini::Ptr{Int32}, inj::Ptr{Int32}, nz::Ref{Int32},
+                               n::Ref{Int32}, b::Ptr{Float128}, z::Ptr{Float128})::Cvoid
+end
+
+function ma61hr(::Type{Float32}, ::Type{Int64}, a, ini, inj, nz, n, b, z)
+  @ccall libhsl_subset_64.ma61h_64_(a::Ptr{Float32}, ini::Ptr{Int64}, inj::Ptr{Int64},
+                                    nz::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
+                                    z::Ptr{Float32})::Cvoid
+end
+
+function ma61hr(::Type{Float64}, ::Type{Int64}, a, ini, inj, nz, n, b, z)
+  @ccall libhsl_subset_64.ma61hd_64_(a::Ptr{Float64}, ini::Ptr{Int64}, inj::Ptr{Int64},
+                                     nz::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
+                                     z::Ptr{Float64})::Cvoid
+end
+
+function ma61hr(::Type{Float128}, ::Type{Int64}, a, ini, inj, nz, n, b, z)
+  @ccall libhsl_subset_64.ma61hq_64_(a::Ptr{Float128}, ini::Ptr{Int64}, inj::Ptr{Int64},
+                                     nz::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float128},
+                                     z::Ptr{Float128})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc13.jl b/src/Fortran/hsl_subset/mc13.jl
new file mode 100644
index 0000000..eff47c4
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc13.jl
@@ -0,0 +1,80 @@
+function mc13dr(::Type{Float32}, ::Type{Int32}, n, icn, licn, ip, lenr, ior, ib, num, iw)
+  @ccall libhsl_subset.mc13d_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                              lenr::Ptr{Int32}, ior::Ptr{Int32}, ib::Ptr{Int32}, num::Ref{Int32},
+                              iw::Ptr{Int32})::Cvoid
+end
+
+function mc13dr(::Type{Float64}, ::Type{Int32}, n, icn, licn, ip, lenr, ior, ib, num, iw)
+  @ccall libhsl_subset.mc13dd_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                               lenr::Ptr{Int32}, ior::Ptr{Int32}, ib::Ptr{Int32}, num::Ref{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function mc13dr(::Type{Float128}, ::Type{Int32}, n, icn, licn, ip, lenr, ior, ib, num, iw)
+  @ccall libhsl_subset.mc13dq_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                               lenr::Ptr{Int32}, ior::Ptr{Int32}, ib::Ptr{Int32}, num::Ref{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function mc13dr(::Type{Float32}, ::Type{Int64}, n, icn, licn, ip, lenr, ior, ib, num, iw)
+  @ccall libhsl_subset_64.mc13d_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                    ip::Ptr{Int64}, lenr::Ptr{Int64}, ior::Ptr{Int64},
+                                    ib::Ptr{Int64}, num::Ref{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc13dr(::Type{Float64}, ::Type{Int64}, n, icn, licn, ip, lenr, ior, ib, num, iw)
+  @ccall libhsl_subset_64.mc13dd_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, ior::Ptr{Int64},
+                                     ib::Ptr{Int64}, num::Ref{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc13dr(::Type{Float128}, ::Type{Int64}, n, icn, licn, ip, lenr, ior, ib, num, iw)
+  @ccall libhsl_subset_64.mc13dq_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, ior::Ptr{Int64},
+                                     ib::Ptr{Int64}, num::Ref{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc13er(::Type{Float32}, ::Type{Int32}, n, icn, licn, ip, lenr, arp, ib, num, lowl, numb,
+                prev)
+  @ccall libhsl_subset.mc13e_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                              lenr::Ptr{Int32}, arp::Ptr{Int32}, ib::Ptr{Int32}, num::Ref{Int32},
+                              lowl::Ptr{Int32}, numb::Ptr{Int32}, prev::Ptr{Int32})::Cvoid
+end
+
+function mc13er(::Type{Float64}, ::Type{Int32}, n, icn, licn, ip, lenr, arp, ib, num, lowl, numb,
+                prev)
+  @ccall libhsl_subset.mc13ed_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                               lenr::Ptr{Int32}, arp::Ptr{Int32}, ib::Ptr{Int32}, num::Ref{Int32},
+                               lowl::Ptr{Int32}, numb::Ptr{Int32}, prev::Ptr{Int32})::Cvoid
+end
+
+function mc13er(::Type{Float128}, ::Type{Int32}, n, icn, licn, ip, lenr, arp, ib, num, lowl, numb,
+                prev)
+  @ccall libhsl_subset.mc13eq_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                               lenr::Ptr{Int32}, arp::Ptr{Int32}, ib::Ptr{Int32}, num::Ref{Int32},
+                               lowl::Ptr{Int32}, numb::Ptr{Int32}, prev::Ptr{Int32})::Cvoid
+end
+
+function mc13er(::Type{Float32}, ::Type{Int64}, n, icn, licn, ip, lenr, arp, ib, num, lowl, numb,
+                prev)
+  @ccall libhsl_subset_64.mc13e_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                    ip::Ptr{Int64}, lenr::Ptr{Int64}, arp::Ptr{Int64},
+                                    ib::Ptr{Int64}, num::Ref{Int64}, lowl::Ptr{Int64},
+                                    numb::Ptr{Int64}, prev::Ptr{Int64})::Cvoid
+end
+
+function mc13er(::Type{Float64}, ::Type{Int64}, n, icn, licn, ip, lenr, arp, ib, num, lowl, numb,
+                prev)
+  @ccall libhsl_subset_64.mc13ed_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, arp::Ptr{Int64},
+                                     ib::Ptr{Int64}, num::Ref{Int64}, lowl::Ptr{Int64},
+                                     numb::Ptr{Int64}, prev::Ptr{Int64})::Cvoid
+end
+
+function mc13er(::Type{Float128}, ::Type{Int64}, n, icn, licn, ip, lenr, arp, ib, num, lowl, numb,
+                prev)
+  @ccall libhsl_subset_64.mc13eq_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, arp::Ptr{Int64},
+                                     ib::Ptr{Int64}, num::Ref{Int64}, lowl::Ptr{Int64},
+                                     numb::Ptr{Int64}, prev::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc19.jl b/src/Fortran/hsl_subset/mc19.jl
new file mode 100644
index 0000000..947ae38
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc19.jl
@@ -0,0 +1,35 @@
+function mc19ar(::Type{Float32}, ::Type{Int32}, n, na, a, irn, icn, r, c, w)
+  @ccall libhsl_subset.mc19a_(n::Ref{Int32}, na::Ref{Int32}, a::Ptr{Float32}, irn::Ptr{Int32},
+                              icn::Ptr{Int32}, r::Ptr{Float32}, c::Ptr{Float32},
+                              w::Ptr{Float32})::Cvoid
+end
+
+function mc19ar(::Type{Float64}, ::Type{Int32}, n, na, a, irn, icn, r, c, w)
+  @ccall libhsl_subset.mc19ad_(n::Ref{Int32}, na::Ref{Int32}, a::Ptr{Float64}, irn::Ptr{Int32},
+                               icn::Ptr{Int32}, r::Ptr{Float32}, c::Ptr{Float32},
+                               w::Ptr{Float32})::Cvoid
+end
+
+function mc19ar(::Type{Float128}, ::Type{Int32}, n, na, a, irn, icn, r, c, w)
+  @ccall libhsl_subset.mc19aq_(n::Ref{Int32}, na::Ref{Int32}, a::Ptr{Float128}, irn::Ptr{Int32},
+                               icn::Ptr{Int32}, r::Ptr{Float32}, c::Ptr{Float32},
+                               w::Ptr{Float32})::Cvoid
+end
+
+function mc19ar(::Type{Float32}, ::Type{Int64}, n, na, a, irn, icn, r, c, w)
+  @ccall libhsl_subset_64.mc19a_64_(n::Ref{Int64}, na::Ref{Int64}, a::Ptr{Float32}, irn::Ptr{Int64},
+                                    icn::Ptr{Int64}, r::Ptr{Float32}, c::Ptr{Float32},
+                                    w::Ptr{Float32})::Cvoid
+end
+
+function mc19ar(::Type{Float64}, ::Type{Int64}, n, na, a, irn, icn, r, c, w)
+  @ccall libhsl_subset_64.mc19ad_64_(n::Ref{Int64}, na::Ref{Int64}, a::Ptr{Float64},
+                                     irn::Ptr{Int64}, icn::Ptr{Int64}, r::Ptr{Float32},
+                                     c::Ptr{Float32}, w::Ptr{Float32})::Cvoid
+end
+
+function mc19ar(::Type{Float128}, ::Type{Int64}, n, na, a, irn, icn, r, c, w)
+  @ccall libhsl_subset_64.mc19aq_64_(n::Ref{Int64}, na::Ref{Int64}, a::Ptr{Float128},
+                                     irn::Ptr{Int64}, icn::Ptr{Int64}, r::Ptr{Float32},
+                                     c::Ptr{Float32}, w::Ptr{Float32})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc20.jl b/src/Fortran/hsl_subset/mc20.jl
new file mode 100644
index 0000000..64278ed
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc20.jl
@@ -0,0 +1,62 @@
+function mc20ar(::Type{Float32}, ::Type{Int32}, nc, maxa, a, inum, jptr, jnum, jdisp)
+  @ccall libhsl_subset.mc20a_(nc::Ref{Int32}, maxa::Ref{Int32}, a::Ptr{Float32}, inum::Ptr{Int32},
+                              jptr::Ptr{Int32}, jnum::Ptr{Int32}, jdisp::Ref{Int32})::Cvoid
+end
+
+function mc20ar(::Type{Float64}, ::Type{Int32}, nc, maxa, a, inum, jptr, jnum, jdisp)
+  @ccall libhsl_subset.mc20ad_(nc::Ref{Int32}, maxa::Ref{Int32}, a::Ptr{Float64}, inum::Ptr{Int32},
+                               jptr::Ptr{Int32}, jnum::Ptr{Int32}, jdisp::Ref{Int32})::Cvoid
+end
+
+function mc20ar(::Type{Float128}, ::Type{Int32}, nc, maxa, a, inum, jptr, jnum, jdisp)
+  @ccall libhsl_subset.mc20aq_(nc::Ref{Int32}, maxa::Ref{Int32}, a::Ptr{Float128}, inum::Ptr{Int32},
+                               jptr::Ptr{Int32}, jnum::Ptr{Int32}, jdisp::Ref{Int32})::Cvoid
+end
+
+function mc20ar(::Type{Float32}, ::Type{Int64}, nc, maxa, a, inum, jptr, jnum, jdisp)
+  @ccall libhsl_subset_64.mc20a_64_(nc::Ref{Int64}, maxa::Ref{Int64}, a::Ptr{Float32},
+                                    inum::Ptr{Int64}, jptr::Ptr{Int64}, jnum::Ptr{Int64},
+                                    jdisp::Ref{Int64})::Cvoid
+end
+
+function mc20ar(::Type{Float64}, ::Type{Int64}, nc, maxa, a, inum, jptr, jnum, jdisp)
+  @ccall libhsl_subset_64.mc20ad_64_(nc::Ref{Int64}, maxa::Ref{Int64}, a::Ptr{Float64},
+                                     inum::Ptr{Int64}, jptr::Ptr{Int64}, jnum::Ptr{Int64},
+                                     jdisp::Ref{Int64})::Cvoid
+end
+
+function mc20ar(::Type{Float128}, ::Type{Int64}, nc, maxa, a, inum, jptr, jnum, jdisp)
+  @ccall libhsl_subset_64.mc20aq_64_(nc::Ref{Int64}, maxa::Ref{Int64}, a::Ptr{Float128},
+                                     inum::Ptr{Int64}, jptr::Ptr{Int64}, jnum::Ptr{Int64},
+                                     jdisp::Ref{Int64})::Cvoid
+end
+
+function mc20br(::Type{Float32}, ::Type{Int32}, nc, maxa, a, inum, jptr)
+  @ccall libhsl_subset.mc20b_(nc::Ref{Int32}, maxa::Ref{Int32}, a::Ptr{Float32}, inum::Ptr{Int32},
+                              jptr::Ptr{Int32})::Cvoid
+end
+
+function mc20br(::Type{Float64}, ::Type{Int32}, nc, maxa, a, inum, jptr)
+  @ccall libhsl_subset.mc20bd_(nc::Ref{Int32}, maxa::Ref{Int32}, a::Ptr{Float64}, inum::Ptr{Int32},
+                               jptr::Ptr{Int32})::Cvoid
+end
+
+function mc20br(::Type{Float128}, ::Type{Int32}, nc, maxa, a, inum, jptr)
+  @ccall libhsl_subset.mc20bq_(nc::Ref{Int32}, maxa::Ref{Int32}, a::Ptr{Float128}, inum::Ptr{Int32},
+                               jptr::Ptr{Int32})::Cvoid
+end
+
+function mc20br(::Type{Float32}, ::Type{Int64}, nc, maxa, a, inum, jptr)
+  @ccall libhsl_subset_64.mc20b_64_(nc::Ref{Int64}, maxa::Ref{Int64}, a::Ptr{Float32},
+                                    inum::Ptr{Int64}, jptr::Ptr{Int64})::Cvoid
+end
+
+function mc20br(::Type{Float64}, ::Type{Int64}, nc, maxa, a, inum, jptr)
+  @ccall libhsl_subset_64.mc20bd_64_(nc::Ref{Int64}, maxa::Ref{Int64}, a::Ptr{Float64},
+                                     inum::Ptr{Int64}, jptr::Ptr{Int64})::Cvoid
+end
+
+function mc20br(::Type{Float128}, ::Type{Int64}, nc, maxa, a, inum, jptr)
+  @ccall libhsl_subset_64.mc20bq_64_(nc::Ref{Int64}, maxa::Ref{Int64}, a::Ptr{Float128},
+                                     inum::Ptr{Int64}, jptr::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc21.jl b/src/Fortran/hsl_subset/mc21.jl
new file mode 100644
index 0000000..75be916
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc21.jl
@@ -0,0 +1,83 @@
+function mc21ar(::Type{Float32}, ::Type{Int32}, n, icn, licn, ip, lenr, iperm, numnz, iw)
+  @ccall libhsl_subset.mc21a_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                              lenr::Ptr{Int32}, iperm::Ptr{Int32}, numnz::Ref{Int32},
+                              iw::Ptr{Int32})::Cvoid
+end
+
+function mc21ar(::Type{Float64}, ::Type{Int32}, n, icn, licn, ip, lenr, iperm, numnz, iw)
+  @ccall libhsl_subset.mc21ad_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                               lenr::Ptr{Int32}, iperm::Ptr{Int32}, numnz::Ref{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function mc21ar(::Type{Float128}, ::Type{Int32}, n, icn, licn, ip, lenr, iperm, numnz, iw)
+  @ccall libhsl_subset.mc21aq_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                               lenr::Ptr{Int32}, iperm::Ptr{Int32}, numnz::Ref{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function mc21ar(::Type{Float32}, ::Type{Int64}, n, icn, licn, ip, lenr, iperm, numnz, iw)
+  @ccall libhsl_subset_64.mc21a_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                    ip::Ptr{Int64}, lenr::Ptr{Int64}, iperm::Ptr{Int64},
+                                    numnz::Ref{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc21ar(::Type{Float64}, ::Type{Int64}, n, icn, licn, ip, lenr, iperm, numnz, iw)
+  @ccall libhsl_subset_64.mc21ad_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, iperm::Ptr{Int64},
+                                     numnz::Ref{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc21ar(::Type{Float128}, ::Type{Int64}, n, icn, licn, ip, lenr, iperm, numnz, iw)
+  @ccall libhsl_subset_64.mc21aq_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, iperm::Ptr{Int64},
+                                     numnz::Ref{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc21br(::Type{Float32}, ::Type{Int32}, n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv,
+                out)
+  @ccall libhsl_subset.mc21b_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                              lenr::Ptr{Int32}, iperm::Ptr{Int32}, numnz::Ref{Int32},
+                              pr::Ptr{Int32}, arp::Ptr{Int32}, cv::Ptr{Int32},
+                              out::Ptr{Int32})::Cvoid
+end
+
+function mc21br(::Type{Float64}, ::Type{Int32}, n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv,
+                out)
+  @ccall libhsl_subset.mc21bd_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                               lenr::Ptr{Int32}, iperm::Ptr{Int32}, numnz::Ref{Int32},
+                               pr::Ptr{Int32}, arp::Ptr{Int32}, cv::Ptr{Int32},
+                               out::Ptr{Int32})::Cvoid
+end
+
+function mc21br(::Type{Float128}, ::Type{Int32}, n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv,
+                out)
+  @ccall libhsl_subset.mc21bq_(n::Ref{Int32}, icn::Ptr{Int32}, licn::Ref{Int32}, ip::Ptr{Int32},
+                               lenr::Ptr{Int32}, iperm::Ptr{Int32}, numnz::Ref{Int32},
+                               pr::Ptr{Int32}, arp::Ptr{Int32}, cv::Ptr{Int32},
+                               out::Ptr{Int32})::Cvoid
+end
+
+function mc21br(::Type{Float32}, ::Type{Int64}, n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv,
+                out)
+  @ccall libhsl_subset_64.mc21b_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                    ip::Ptr{Int64}, lenr::Ptr{Int64}, iperm::Ptr{Int64},
+                                    numnz::Ref{Int64}, pr::Ptr{Int64}, arp::Ptr{Int64},
+                                    cv::Ptr{Int64}, out::Ptr{Int64})::Cvoid
+end
+
+function mc21br(::Type{Float64}, ::Type{Int64}, n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv,
+                out)
+  @ccall libhsl_subset_64.mc21bd_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, iperm::Ptr{Int64},
+                                     numnz::Ref{Int64}, pr::Ptr{Int64}, arp::Ptr{Int64},
+                                     cv::Ptr{Int64}, out::Ptr{Int64})::Cvoid
+end
+
+function mc21br(::Type{Float128}, ::Type{Int64}, n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv,
+                out)
+  @ccall libhsl_subset_64.mc21bq_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
+                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, iperm::Ptr{Int64},
+                                     numnz::Ref{Int64}, pr::Ptr{Int64}, arp::Ptr{Int64},
+                                     cv::Ptr{Int64}, out::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc22.jl b/src/Fortran/hsl_subset/mc22.jl
new file mode 100644
index 0000000..2f1dd4d
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc22.jl
@@ -0,0 +1,35 @@
+function mc22ar(::Type{Float32}, ::Type{Int32}, n, icn, a, nz, lenrow, ip, iq, iw, iw1)
+  @ccall libhsl_subset.mc22a_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float32}, nz::Ref{Int32},
+                              lenrow::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32}, iw::Ptr{Int32},
+                              iw1::Ptr{Int32})::Cvoid
+end
+
+function mc22ar(::Type{Float64}, ::Type{Int32}, n, icn, a, nz, lenrow, ip, iq, iw, iw1)
+  @ccall libhsl_subset.mc22ad_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float64}, nz::Ref{Int32},
+                               lenrow::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32}, iw::Ptr{Int32},
+                               iw1::Ptr{Int32})::Cvoid
+end
+
+function mc22ar(::Type{Float128}, ::Type{Int32}, n, icn, a, nz, lenrow, ip, iq, iw, iw1)
+  @ccall libhsl_subset.mc22aq_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float128}, nz::Ref{Int32},
+                               lenrow::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32}, iw::Ptr{Int32},
+                               iw1::Ptr{Int32})::Cvoid
+end
+
+function mc22ar(::Type{Float32}, ::Type{Int64}, n, icn, a, nz, lenrow, ip, iq, iw, iw1)
+  @ccall libhsl_subset_64.mc22a_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32}, nz::Ref{Int64},
+                                    lenrow::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
+                                    iw::Ptr{Int64}, iw1::Ptr{Int64})::Cvoid
+end
+
+function mc22ar(::Type{Float64}, ::Type{Int64}, n, icn, a, nz, lenrow, ip, iq, iw, iw1)
+  @ccall libhsl_subset_64.mc22ad_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
+                                     nz::Ref{Int64}, lenrow::Ptr{Int64}, ip::Ptr{Int64},
+                                     iq::Ptr{Int64}, iw::Ptr{Int64}, iw1::Ptr{Int64})::Cvoid
+end
+
+function mc22ar(::Type{Float128}, ::Type{Int64}, n, icn, a, nz, lenrow, ip, iq, iw, iw1)
+  @ccall libhsl_subset_64.mc22aq_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float128},
+                                     nz::Ref{Int64}, lenrow::Ptr{Int64}, ip::Ptr{Int64},
+                                     iq::Ptr{Int64}, iw::Ptr{Int64}, iw1::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc23.jl b/src/Fortran/hsl_subset/mc23.jl
new file mode 100644
index 0000000..2e196ab
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc23.jl
@@ -0,0 +1,44 @@
+function mc23ar(::Type{Float32}, ::Type{Int32}, n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw,
+                iw1)
+  @ccall libhsl_subset.mc23a_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float32}, licn::Ref{Int32},
+                              lenr::Ptr{Int32}, idisp::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32},
+                              lenoff::Ptr{Int32}, iw::Ptr{Int32}, iw1::Ptr{Int32})::Cvoid
+end
+
+function mc23ar(::Type{Float64}, ::Type{Int32}, n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw,
+                iw1)
+  @ccall libhsl_subset.mc23ad_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float64}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, idisp::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32},
+                               lenoff::Ptr{Int32}, iw::Ptr{Int32}, iw1::Ptr{Int32})::Cvoid
+end
+
+function mc23ar(::Type{Float128}, ::Type{Int32}, n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw,
+                iw1)
+  @ccall libhsl_subset.mc23aq_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float128}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, idisp::Ptr{Int32}, ip::Ptr{Int32}, iq::Ptr{Int32},
+                               lenoff::Ptr{Int32}, iw::Ptr{Int32}, iw1::Ptr{Int32})::Cvoid
+end
+
+function mc23ar(::Type{Float32}, ::Type{Int64}, n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw,
+                iw1)
+  @ccall libhsl_subset_64.mc23a_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
+                                    licn::Ref{Int64}, lenr::Ptr{Int64}, idisp::Ptr{Int64},
+                                    ip::Ptr{Int64}, iq::Ptr{Int64}, lenoff::Ptr{Int64},
+                                    iw::Ptr{Int64}, iw1::Ptr{Int64})::Cvoid
+end
+
+function mc23ar(::Type{Float64}, ::Type{Int64}, n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw,
+                iw1)
+  @ccall libhsl_subset_64.mc23ad_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, idisp::Ptr{Int64},
+                                     ip::Ptr{Int64}, iq::Ptr{Int64}, lenoff::Ptr{Int64},
+                                     iw::Ptr{Int64}, iw1::Ptr{Int64})::Cvoid
+end
+
+function mc23ar(::Type{Float128}, ::Type{Int64}, n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw,
+                iw1)
+  @ccall libhsl_subset_64.mc23aq_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float128},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, idisp::Ptr{Int64},
+                                     ip::Ptr{Int64}, iq::Ptr{Int64}, lenoff::Ptr{Int64},
+                                     iw::Ptr{Int64}, iw1::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc24.jl b/src/Fortran/hsl_subset/mc24.jl
new file mode 100644
index 0000000..9160753
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc24.jl
@@ -0,0 +1,32 @@
+function mc24ar(::Type{Float32}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, w)
+  @ccall libhsl_subset.mc24a_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float32}, licn::Ref{Int32},
+                              lenr::Ptr{Int32}, lenrl::Ptr{Int32}, w::Ptr{Float32})::Cvoid
+end
+
+function mc24ar(::Type{Float64}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, w)
+  @ccall libhsl_subset.mc24ad_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float64}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, w::Ptr{Float64})::Cvoid
+end
+
+function mc24ar(::Type{Float128}, ::Type{Int32}, n, icn, a, licn, lenr, lenrl, w)
+  @ccall libhsl_subset.mc24aq_(n::Ref{Int32}, icn::Ptr{Int32}, a::Ptr{Float128}, licn::Ref{Int32},
+                               lenr::Ptr{Int32}, lenrl::Ptr{Int32}, w::Ptr{Float128})::Cvoid
+end
+
+function mc24ar(::Type{Float32}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, w)
+  @ccall libhsl_subset_64.mc24a_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
+                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                    w::Ptr{Float32})::Cvoid
+end
+
+function mc24ar(::Type{Float64}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, w)
+  @ccall libhsl_subset_64.mc24ad_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     w::Ptr{Float64})::Cvoid
+end
+
+function mc24ar(::Type{Float128}, ::Type{Int64}, n, icn, a, licn, lenr, lenrl, w)
+  @ccall libhsl_subset_64.mc24aq_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float128},
+                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
+                                     w::Ptr{Float128})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc29.jl b/src/Fortran/hsl_subset/mc29.jl
new file mode 100644
index 0000000..d475fbe
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc29.jl
@@ -0,0 +1,38 @@
+function mc29ar(::Type{Float32}, ::Type{Int32}, m, n, ne, a, irn, icn, r, c, w, lp, ifail)
+  @ccall libhsl_subset.mc29a_(m::Ref{Int32}, n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float32},
+                              irn::Ptr{Int32}, icn::Ptr{Int32}, r::Ptr{Float32}, c::Ptr{Float32},
+                              w::Ptr{Float32}, lp::Ref{Int32}, ifail::Ref{Int32})::Cvoid
+end
+
+function mc29ar(::Type{Float64}, ::Type{Int32}, m, n, ne, a, irn, icn, r, c, w, lp, ifail)
+  @ccall libhsl_subset.mc29ad_(m::Ref{Int32}, n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float64},
+                               irn::Ptr{Int32}, icn::Ptr{Int32}, r::Ptr{Float64}, c::Ptr{Float64},
+                               w::Ptr{Float64}, lp::Ref{Int32}, ifail::Ref{Int32})::Cvoid
+end
+
+function mc29ar(::Type{Float128}, ::Type{Int32}, m, n, ne, a, irn, icn, r, c, w, lp, ifail)
+  @ccall libhsl_subset.mc29aq_(m::Ref{Int32}, n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float128},
+                               irn::Ptr{Int32}, icn::Ptr{Int32}, r::Ptr{Float128}, c::Ptr{Float128},
+                               w::Ptr{Float128}, lp::Ref{Int32}, ifail::Ref{Int32})::Cvoid
+end
+
+function mc29ar(::Type{Float32}, ::Type{Int64}, m, n, ne, a, irn, icn, r, c, w, lp, ifail)
+  @ccall libhsl_subset_64.mc29a_64_(m::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32},
+                                    irn::Ptr{Int64}, icn::Ptr{Int64}, r::Ptr{Float32},
+                                    c::Ptr{Float32}, w::Ptr{Float32}, lp::Ref{Int64},
+                                    ifail::Ref{Int64})::Cvoid
+end
+
+function mc29ar(::Type{Float64}, ::Type{Int64}, m, n, ne, a, irn, icn, r, c, w, lp, ifail)
+  @ccall libhsl_subset_64.mc29ad_64_(m::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float64},
+                                     irn::Ptr{Int64}, icn::Ptr{Int64}, r::Ptr{Float64},
+                                     c::Ptr{Float64}, w::Ptr{Float64}, lp::Ref{Int64},
+                                     ifail::Ref{Int64})::Cvoid
+end
+
+function mc29ar(::Type{Float128}, ::Type{Int64}, m, n, ne, a, irn, icn, r, c, w, lp, ifail)
+  @ccall libhsl_subset_64.mc29aq_64_(m::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float128},
+                                     irn::Ptr{Int64}, icn::Ptr{Int64}, r::Ptr{Float128},
+                                     c::Ptr{Float128}, w::Ptr{Float128}, lp::Ref{Int64},
+                                     ifail::Ref{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc30.jl b/src/Fortran/hsl_subset/mc30.jl
new file mode 100644
index 0000000..f2fa314
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc30.jl
@@ -0,0 +1,35 @@
+function mc30ar(::Type{Float32}, ::Type{Int32}, n, ne, a, irn, icn, s, w, lp, ifail)
+  @ccall libhsl_subset.mc30a_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float32}, irn::Ptr{Int32},
+                              icn::Ptr{Int32}, s::Ptr{Float32}, w::Ptr{Float32}, lp::Ref{Int32},
+                              ifail::Ref{Int32})::Cvoid
+end
+
+function mc30ar(::Type{Float64}, ::Type{Int32}, n, ne, a, irn, icn, s, w, lp, ifail)
+  @ccall libhsl_subset.mc30ad_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float64}, irn::Ptr{Int32},
+                               icn::Ptr{Int32}, s::Ptr{Float64}, w::Ptr{Float64}, lp::Ref{Int32},
+                               ifail::Ref{Int32})::Cvoid
+end
+
+function mc30ar(::Type{Float128}, ::Type{Int32}, n, ne, a, irn, icn, s, w, lp, ifail)
+  @ccall libhsl_subset.mc30aq_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float128}, irn::Ptr{Int32},
+                               icn::Ptr{Int32}, s::Ptr{Float128}, w::Ptr{Float128}, lp::Ref{Int32},
+                               ifail::Ref{Int32})::Cvoid
+end
+
+function mc30ar(::Type{Float32}, ::Type{Int64}, n, ne, a, irn, icn, s, w, lp, ifail)
+  @ccall libhsl_subset_64.mc30a_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32}, irn::Ptr{Int64},
+                                    icn::Ptr{Int64}, s::Ptr{Float32}, w::Ptr{Float32},
+                                    lp::Ref{Int64}, ifail::Ref{Int64})::Cvoid
+end
+
+function mc30ar(::Type{Float64}, ::Type{Int64}, n, ne, a, irn, icn, s, w, lp, ifail)
+  @ccall libhsl_subset_64.mc30ad_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float64},
+                                     irn::Ptr{Int64}, icn::Ptr{Int64}, s::Ptr{Float64},
+                                     w::Ptr{Float64}, lp::Ref{Int64}, ifail::Ref{Int64})::Cvoid
+end
+
+function mc30ar(::Type{Float128}, ::Type{Int64}, n, ne, a, irn, icn, s, w, lp, ifail)
+  @ccall libhsl_subset_64.mc30aq_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float128},
+                                     irn::Ptr{Int64}, icn::Ptr{Int64}, s::Ptr{Float128},
+                                     w::Ptr{Float128}, lp::Ref{Int64}, ifail::Ref{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc34.jl b/src/Fortran/hsl_subset/mc34.jl
new file mode 100644
index 0000000..99370fb
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc34.jl
@@ -0,0 +1,29 @@
+function mc34ar(::Type{Float32}, ::Type{Int32}, n, irn, jcolst, yesa, a, iw)
+  @ccall libhsl_subset.mc34a_(n::Ref{Int32}, irn::Ptr{Int32}, jcolst::Ptr{Int32}, yesa::Ref{Cint},
+                              a::Ptr{Float32}, iw::Ptr{Int32})::Cvoid
+end
+
+function mc34ar(::Type{Float64}, ::Type{Int32}, n, irn, jcolst, yesa, a, iw)
+  @ccall libhsl_subset.mc34ad_(n::Ref{Int32}, irn::Ptr{Int32}, jcolst::Ptr{Int32}, yesa::Ref{Cint},
+                               a::Ptr{Float64}, iw::Ptr{Int32})::Cvoid
+end
+
+function mc34ar(::Type{Float128}, ::Type{Int32}, n, irn, jcolst, yesa, a, iw)
+  @ccall libhsl_subset.mc34aq_(n::Ref{Int32}, irn::Ptr{Int32}, jcolst::Ptr{Int32}, yesa::Ref{Cint},
+                               a::Ptr{Float128}, iw::Ptr{Int32})::Cvoid
+end
+
+function mc34ar(::Type{Float32}, ::Type{Int64}, n, irn, jcolst, yesa, a, iw)
+  @ccall libhsl_subset_64.mc34a_64_(n::Ref{Int64}, irn::Ptr{Int64}, jcolst::Ptr{Int64},
+                                    yesa::Ref{Cint}, a::Ptr{Float32}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc34ar(::Type{Float64}, ::Type{Int64}, n, irn, jcolst, yesa, a, iw)
+  @ccall libhsl_subset_64.mc34ad_64_(n::Ref{Int64}, irn::Ptr{Int64}, jcolst::Ptr{Int64},
+                                     yesa::Ref{Cint}, a::Ptr{Float64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc34ar(::Type{Float128}, ::Type{Int64}, n, irn, jcolst, yesa, a, iw)
+  @ccall libhsl_subset_64.mc34aq_64_(n::Ref{Int64}, irn::Ptr{Int64}, jcolst::Ptr{Int64},
+                                     yesa::Ref{Cint}, a::Ptr{Float128}, iw::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc37.jl b/src/Fortran/hsl_subset/mc37.jl
new file mode 100644
index 0000000..035b6f4
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc37.jl
@@ -0,0 +1,103 @@
+function mc37ar(::Type{Float32}, ::Type{Int32}, n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt, ielt,
+                laelt, aelt, iw, icntl, info)
+  @ccall libhsl_subset.mc37a_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                              a::Ptr{Float32}, ip::Ptr{Int32}, lielt::Ref{Int32},
+                              numelt::Ref{Int32}, ptrelt::Ptr{Int32}, ielt::Ptr{Int32},
+                              laelt::Ref{Int32}, aelt::Ptr{Float32}, iw::Ptr{Int32},
+                              icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc37ar(::Type{Float64}, ::Type{Int32}, n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt, ielt,
+                laelt, aelt, iw, icntl, info)
+  @ccall libhsl_subset.mc37ad_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               a::Ptr{Float64}, ip::Ptr{Int32}, lielt::Ref{Int32},
+                               numelt::Ref{Int32}, ptrelt::Ptr{Int32}, ielt::Ptr{Int32},
+                               laelt::Ref{Int32}, aelt::Ptr{Float64}, iw::Ptr{Int32},
+                               icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc37ar(::Type{Float128}, ::Type{Int32}, n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt,
+                ielt, laelt, aelt, iw, icntl, info)
+  @ccall libhsl_subset.mc37aq_(n::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               a::Ptr{Float128}, ip::Ptr{Int32}, lielt::Ref{Int32},
+                               numelt::Ref{Int32}, ptrelt::Ptr{Int32}, ielt::Ptr{Int32},
+                               laelt::Ref{Int32}, aelt::Ptr{Float128}, iw::Ptr{Int32},
+                               icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc37ar(::Type{Float32}, ::Type{Int64}, n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt, ielt,
+                laelt, aelt, iw, icntl, info)
+  @ccall libhsl_subset_64.mc37a_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
+                                    a::Ptr{Float32}, ip::Ptr{Int64}, lielt::Ref{Int64},
+                                    numelt::Ref{Int64}, ptrelt::Ptr{Int64}, ielt::Ptr{Int64},
+                                    laelt::Ref{Int64}, aelt::Ptr{Float32}, iw::Ptr{Int64},
+                                    icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc37ar(::Type{Float64}, ::Type{Int64}, n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt, ielt,
+                laelt, aelt, iw, icntl, info)
+  @ccall libhsl_subset_64.mc37ad_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, a::Ptr{Float64}, ip::Ptr{Int64},
+                                     lielt::Ref{Int64}, numelt::Ref{Int64}, ptrelt::Ptr{Int64},
+                                     ielt::Ptr{Int64}, laelt::Ref{Int64}, aelt::Ptr{Float64},
+                                     iw::Ptr{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc37ar(::Type{Float128}, ::Type{Int64}, n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt,
+                ielt, laelt, aelt, iw, icntl, info)
+  @ccall libhsl_subset_64.mc37aq_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, a::Ptr{Float128}, ip::Ptr{Int64},
+                                     lielt::Ref{Int64}, numelt::Ref{Int64}, ptrelt::Ptr{Int64},
+                                     ielt::Ptr{Int64}, laelt::Ref{Int64}, aelt::Ptr{Float128},
+                                     iw::Ptr{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc37br(::Type{Float32}, ::Type{Int32}, n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt, lielt,
+                aelt, laelt)
+  @ccall libhsl_subset.mc37b_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float32}, irn::Ptr{Int32},
+                              jcn::Ptr{Int32}, ip::Ptr{Int32}, numelt::Ref{Int32},
+                              ptrelt::Ptr{Int32}, ielt::Ptr{Int32}, lielt::Ref{Int32},
+                              aelt::Ptr{Float32}, laelt::Ref{Int32})::Cvoid
+end
+
+function mc37br(::Type{Float64}, ::Type{Int32}, n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt, lielt,
+                aelt, laelt)
+  @ccall libhsl_subset.mc37bd_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float64}, irn::Ptr{Int32},
+                               jcn::Ptr{Int32}, ip::Ptr{Int32}, numelt::Ref{Int32},
+                               ptrelt::Ptr{Int32}, ielt::Ptr{Int32}, lielt::Ref{Int32},
+                               aelt::Ptr{Float64}, laelt::Ref{Int32})::Cvoid
+end
+
+function mc37br(::Type{Float128}, ::Type{Int32}, n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt,
+                lielt, aelt, laelt)
+  @ccall libhsl_subset.mc37bq_(n::Ref{Int32}, ne::Ref{Int32}, a::Ptr{Float128}, irn::Ptr{Int32},
+                               jcn::Ptr{Int32}, ip::Ptr{Int32}, numelt::Ref{Int32},
+                               ptrelt::Ptr{Int32}, ielt::Ptr{Int32}, lielt::Ref{Int32},
+                               aelt::Ptr{Float128}, laelt::Ref{Int32})::Cvoid
+end
+
+function mc37br(::Type{Float32}, ::Type{Int64}, n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt, lielt,
+                aelt, laelt)
+  @ccall libhsl_subset_64.mc37b_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32}, irn::Ptr{Int64},
+                                    jcn::Ptr{Int64}, ip::Ptr{Int64}, numelt::Ref{Int64},
+                                    ptrelt::Ptr{Int64}, ielt::Ptr{Int64}, lielt::Ref{Int64},
+                                    aelt::Ptr{Float32}, laelt::Ref{Int64})::Cvoid
+end
+
+function mc37br(::Type{Float64}, ::Type{Int64}, n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt, lielt,
+                aelt, laelt)
+  @ccall libhsl_subset_64.mc37bd_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float64},
+                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, ip::Ptr{Int64},
+                                     numelt::Ref{Int64}, ptrelt::Ptr{Int64}, ielt::Ptr{Int64},
+                                     lielt::Ref{Int64}, aelt::Ptr{Float64},
+                                     laelt::Ref{Int64})::Cvoid
+end
+
+function mc37br(::Type{Float128}, ::Type{Int64}, n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt,
+                lielt, aelt, laelt)
+  @ccall libhsl_subset_64.mc37bq_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float128},
+                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, ip::Ptr{Int64},
+                                     numelt::Ref{Int64}, ptrelt::Ptr{Int64}, ielt::Ptr{Int64},
+                                     lielt::Ref{Int64}, aelt::Ptr{Float128},
+                                     laelt::Ref{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc47.jl b/src/Fortran/hsl_subset/mc47.jl
new file mode 100644
index 0000000..f2370fa
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc47.jl
@@ -0,0 +1,116 @@
+function mc47ir(::Type{Float32}, ::Type{Int32}, icntl)
+  @ccall libhsl_subset.mc47i_(icntl::Ptr{Int32})::Cvoid
+end
+
+function mc47ir(::Type{Float64}, ::Type{Int32}, icntl)
+  @ccall libhsl_subset.mc47id_(icntl::Ptr{Int32})::Cvoid
+end
+
+function mc47ir(::Type{Float128}, ::Type{Int32}, icntl)
+  @ccall libhsl_subset.mc47iq_(icntl::Ptr{Int32})::Cvoid
+end
+
+function mc47ir(::Type{Float32}, ::Type{Int64}, icntl)
+  @ccall libhsl_subset_64.mc47i_64_(icntl::Ptr{Int64})::Cvoid
+end
+
+function mc47ir(::Type{Float64}, ::Type{Int64}, icntl)
+  @ccall libhsl_subset_64.mc47id_64_(icntl::Ptr{Int64})::Cvoid
+end
+
+function mc47ir(::Type{Float128}, ::Type{Int64}, icntl)
+  @ccall libhsl_subset_64.mc47iq_64_(icntl::Ptr{Int64})::Cvoid
+end
+
+function mc47ar(::Type{Float32}, ::Type{Int32}, n, ne, pe, iw, iwlen, icntl, info, rinfo)
+  @ccall libhsl_subset.mc47a_(n::Ref{Int32}, ne::Ref{Int32}, pe::Ptr{Int32}, iw::Ptr{Int32},
+                              iwlen::Ref{Int32}, icntl::Ptr{Int32}, info::Ptr{Int32},
+                              rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc47ar(::Type{Float64}, ::Type{Int32}, n, ne, pe, iw, iwlen, icntl, info, rinfo)
+  @ccall libhsl_subset.mc47ad_(n::Ref{Int32}, ne::Ref{Int32}, pe::Ptr{Int32}, iw::Ptr{Int32},
+                               iwlen::Ref{Int32}, icntl::Ptr{Int32}, info::Ptr{Int32},
+                               rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc47ar(::Type{Float128}, ::Type{Int32}, n, ne, pe, iw, iwlen, icntl, info, rinfo)
+  @ccall libhsl_subset.mc47aq_(n::Ref{Int32}, ne::Ref{Int32}, pe::Ptr{Int32}, iw::Ptr{Int32},
+                               iwlen::Ref{Int32}, icntl::Ptr{Int32}, info::Ptr{Int32},
+                               rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc47ar(::Type{Float32}, ::Type{Int64}, n, ne, pe, iw, iwlen, icntl, info, rinfo)
+  @ccall libhsl_subset_64.mc47a_64_(n::Ref{Int64}, ne::Ref{Int64}, pe::Ptr{Int64}, iw::Ptr{Int64},
+                                    iwlen::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64},
+                                    rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc47ar(::Type{Float64}, ::Type{Int64}, n, ne, pe, iw, iwlen, icntl, info, rinfo)
+  @ccall libhsl_subset_64.mc47ad_64_(n::Ref{Int64}, ne::Ref{Int64}, pe::Ptr{Int64}, iw::Ptr{Int64},
+                                     iwlen::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc47ar(::Type{Float128}, ::Type{Int64}, n, ne, pe, iw, iwlen, icntl, info, rinfo)
+  @ccall libhsl_subset_64.mc47aq_64_(n::Ref{Int64}, ne::Ref{Int64}, pe::Ptr{Int64}, iw::Ptr{Int64},
+                                     iwlen::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc47br(::Type{Float32}, ::Type{Int32}, n, iwlen, pe, pfree, len, iw, nv, elen, last,
+                degree, head, denxt, w, icntl, jnfo, rjnfo)
+  @ccall libhsl_subset.mc47b_(n::Ref{Int32}, iwlen::Ref{Int32}, pe::Ptr{Int32}, pfree::Ref{Int32},
+                              len::Ptr{Int32}, iw::Ptr{Int32}, nv::Ptr{Int32}, elen::Ptr{Int32},
+                              last::Ptr{Int32}, degree::Ptr{Int32}, head::Ptr{Int32},
+                              denxt::Ptr{Int32}, w::Ptr{Int32}, icntl::Ptr{Int32}, jnfo::Ptr{Int32},
+                              rjnfo::Ptr{Float32})::Cvoid
+end
+
+function mc47br(::Type{Float64}, ::Type{Int32}, n, iwlen, pe, pfree, len, iw, nv, elen, last,
+                degree, head, denxt, w, icntl, jnfo, rjnfo)
+  @ccall libhsl_subset.mc47bd_(n::Ref{Int32}, iwlen::Ref{Int32}, pe::Ptr{Int32}, pfree::Ref{Int32},
+                               len::Ptr{Int32}, iw::Ptr{Int32}, nv::Ptr{Int32}, elen::Ptr{Int32},
+                               last::Ptr{Int32}, degree::Ptr{Int32}, head::Ptr{Int32},
+                               denxt::Ptr{Int32}, w::Ptr{Int32}, icntl::Ptr{Int32},
+                               jnfo::Ptr{Int32}, rjnfo::Ptr{Float64})::Cvoid
+end
+
+function mc47br(::Type{Float128}, ::Type{Int32}, n, iwlen, pe, pfree, len, iw, nv, elen, last,
+                degree, head, denxt, w, icntl, jnfo, rjnfo)
+  @ccall libhsl_subset.mc47bq_(n::Ref{Int32}, iwlen::Ref{Int32}, pe::Ptr{Int32}, pfree::Ref{Int32},
+                               len::Ptr{Int32}, iw::Ptr{Int32}, nv::Ptr{Int32}, elen::Ptr{Int32},
+                               last::Ptr{Int32}, degree::Ptr{Int32}, head::Ptr{Int32},
+                               denxt::Ptr{Int32}, w::Ptr{Int32}, icntl::Ptr{Int32},
+                               jnfo::Ptr{Int32}, rjnfo::Ptr{Float128})::Cvoid
+end
+
+function mc47br(::Type{Float32}, ::Type{Int64}, n, iwlen, pe, pfree, len, iw, nv, elen, last,
+                degree, head, denxt, w, icntl, jnfo, rjnfo)
+  @ccall libhsl_subset_64.mc47b_64_(n::Ref{Int64}, iwlen::Ref{Int64}, pe::Ptr{Int64},
+                                    pfree::Ref{Int64}, len::Ptr{Int64}, iw::Ptr{Int64},
+                                    nv::Ptr{Int64}, elen::Ptr{Int64}, last::Ptr{Int64},
+                                    degree::Ptr{Int64}, head::Ptr{Int64}, denxt::Ptr{Int64},
+                                    w::Ptr{Int64}, icntl::Ptr{Int64}, jnfo::Ptr{Int64},
+                                    rjnfo::Ptr{Float32})::Cvoid
+end
+
+function mc47br(::Type{Float64}, ::Type{Int64}, n, iwlen, pe, pfree, len, iw, nv, elen, last,
+                degree, head, denxt, w, icntl, jnfo, rjnfo)
+  @ccall libhsl_subset_64.mc47bd_64_(n::Ref{Int64}, iwlen::Ref{Int64}, pe::Ptr{Int64},
+                                     pfree::Ref{Int64}, len::Ptr{Int64}, iw::Ptr{Int64},
+                                     nv::Ptr{Int64}, elen::Ptr{Int64}, last::Ptr{Int64},
+                                     degree::Ptr{Int64}, head::Ptr{Int64}, denxt::Ptr{Int64},
+                                     w::Ptr{Int64}, icntl::Ptr{Int64}, jnfo::Ptr{Int64},
+                                     rjnfo::Ptr{Float64})::Cvoid
+end
+
+function mc47br(::Type{Float128}, ::Type{Int64}, n, iwlen, pe, pfree, len, iw, nv, elen, last,
+                degree, head, denxt, w, icntl, jnfo, rjnfo)
+  @ccall libhsl_subset_64.mc47bq_64_(n::Ref{Int64}, iwlen::Ref{Int64}, pe::Ptr{Int64},
+                                     pfree::Ref{Int64}, len::Ptr{Int64}, iw::Ptr{Int64},
+                                     nv::Ptr{Int64}, elen::Ptr{Int64}, last::Ptr{Int64},
+                                     degree::Ptr{Int64}, head::Ptr{Int64}, denxt::Ptr{Int64},
+                                     w::Ptr{Int64}, icntl::Ptr{Int64}, jnfo::Ptr{Int64},
+                                     rjnfo::Ptr{Float128})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc49.jl b/src/Fortran/hsl_subset/mc49.jl
new file mode 100644
index 0000000..c334fd1
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc49.jl
@@ -0,0 +1,125 @@
+function mc49ar(::Type{Float32}, ::Type{Int32}, ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip,
+                liw, iw, iflag)
+  @ccall libhsl_subset.mc49a_(ind::Ref{Int32}, nc::Ref{Int32}, nr::Ref{Int32}, nnz::Ref{Int32},
+                              irn::Ptr{Int32}, jcn::Ptr{Int32}, yesa::Ref{Cint}, la::Ref{Int32},
+                              a::Ptr{Float32}, lip::Ref{Int32}, ip::Ptr{Int32}, liw::Ref{Int32},
+                              iw::Ptr{Int32}, iflag::Ref{Int32})::Cvoid
+end
+
+function mc49ar(::Type{Float64}, ::Type{Int32}, ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip,
+                liw, iw, iflag)
+  @ccall libhsl_subset.mc49ad_(ind::Ref{Int32}, nc::Ref{Int32}, nr::Ref{Int32}, nnz::Ref{Int32},
+                               irn::Ptr{Int32}, jcn::Ptr{Int32}, yesa::Ref{Cint}, la::Ref{Int32},
+                               a::Ptr{Float64}, lip::Ref{Int32}, ip::Ptr{Int32}, liw::Ref{Int32},
+                               iw::Ptr{Int32}, iflag::Ref{Int32})::Cvoid
+end
+
+function mc49ar(::Type{Float128}, ::Type{Int32}, ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip,
+                liw, iw, iflag)
+  @ccall libhsl_subset.mc49aq_(ind::Ref{Int32}, nc::Ref{Int32}, nr::Ref{Int32}, nnz::Ref{Int32},
+                               irn::Ptr{Int32}, jcn::Ptr{Int32}, yesa::Ref{Cint}, la::Ref{Int32},
+                               a::Ptr{Float128}, lip::Ref{Int32}, ip::Ptr{Int32}, liw::Ref{Int32},
+                               iw::Ptr{Int32}, iflag::Ref{Int32})::Cvoid
+end
+
+function mc49ar(::Type{Float32}, ::Type{Int64}, ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip,
+                liw, iw, iflag)
+  @ccall libhsl_subset_64.mc49a_64_(ind::Ref{Int64}, nc::Ref{Int64}, nr::Ref{Int64},
+                                    nnz::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
+                                    yesa::Ref{Cint}, la::Ref{Int64}, a::Ptr{Float32},
+                                    lip::Ref{Int64}, ip::Ptr{Int64}, liw::Ref{Int64},
+                                    iw::Ptr{Int64}, iflag::Ref{Int64})::Cvoid
+end
+
+function mc49ar(::Type{Float64}, ::Type{Int64}, ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip,
+                liw, iw, iflag)
+  @ccall libhsl_subset_64.mc49ad_64_(ind::Ref{Int64}, nc::Ref{Int64}, nr::Ref{Int64},
+                                     nnz::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
+                                     yesa::Ref{Cint}, la::Ref{Int64}, a::Ptr{Float64},
+                                     lip::Ref{Int64}, ip::Ptr{Int64}, liw::Ref{Int64},
+                                     iw::Ptr{Int64}, iflag::Ref{Int64})::Cvoid
+end
+
+function mc49ar(::Type{Float128}, ::Type{Int64}, ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip,
+                liw, iw, iflag)
+  @ccall libhsl_subset_64.mc49aq_64_(ind::Ref{Int64}, nc::Ref{Int64}, nr::Ref{Int64},
+                                     nnz::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
+                                     yesa::Ref{Cint}, la::Ref{Int64}, a::Ptr{Float128},
+                                     lip::Ref{Int64}, ip::Ptr{Int64}, liw::Ref{Int64},
+                                     iw::Ptr{Int64}, iflag::Ref{Int64})::Cvoid
+end
+
+function mc49br(::Type{Float32}, ::Type{Int32}, nc, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset.mc49b_(nc::Ref{Int32}, nnz::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                              yesa::Ref{Cint}, la::Ref{Int32}, a::Ptr{Float32}, ip::Ptr{Int32},
+                              iw::Ptr{Int32})::Cvoid
+end
+
+function mc49br(::Type{Float64}, ::Type{Int32}, nc, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset.mc49bd_(nc::Ref{Int32}, nnz::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               yesa::Ref{Cint}, la::Ref{Int32}, a::Ptr{Float64}, ip::Ptr{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function mc49br(::Type{Float128}, ::Type{Int32}, nc, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset.mc49bq_(nc::Ref{Int32}, nnz::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32},
+                               yesa::Ref{Cint}, la::Ref{Int32}, a::Ptr{Float128}, ip::Ptr{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function mc49br(::Type{Float32}, ::Type{Int64}, nc, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset_64.mc49b_64_(nc::Ref{Int64}, nnz::Ref{Int64}, irn::Ptr{Int64},
+                                    jcn::Ptr{Int64}, yesa::Ref{Cint}, la::Ref{Int64},
+                                    a::Ptr{Float32}, ip::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc49br(::Type{Float64}, ::Type{Int64}, nc, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset_64.mc49bd_64_(nc::Ref{Int64}, nnz::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, yesa::Ref{Cint}, la::Ref{Int64},
+                                     a::Ptr{Float64}, ip::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc49br(::Type{Float128}, ::Type{Int64}, nc, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset_64.mc49bq_64_(nc::Ref{Int64}, nnz::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, yesa::Ref{Cint}, la::Ref{Int64},
+                                     a::Ptr{Float128}, ip::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc49cr(::Type{Float32}, ::Type{Int32}, nc, nr, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset.mc49c_(nc::Ref{Int32}, nr::Ref{Int32}, nnz::Ref{Int32}, irn::Ptr{Int32},
+                              jcn::Ptr{Int32}, yesa::Ref{Cint}, la::Ref{Int32}, a::Ptr{Float32},
+                              ip::Ptr{Int32}, iw::Ptr{Int32})::Cvoid
+end
+
+function mc49cr(::Type{Float64}, ::Type{Int32}, nc, nr, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset.mc49cd_(nc::Ref{Int32}, nr::Ref{Int32}, nnz::Ref{Int32}, irn::Ptr{Int32},
+                               jcn::Ptr{Int32}, yesa::Ref{Cint}, la::Ref{Int32}, a::Ptr{Float64},
+                               ip::Ptr{Int32}, iw::Ptr{Int32})::Cvoid
+end
+
+function mc49cr(::Type{Float128}, ::Type{Int32}, nc, nr, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset.mc49cq_(nc::Ref{Int32}, nr::Ref{Int32}, nnz::Ref{Int32}, irn::Ptr{Int32},
+                               jcn::Ptr{Int32}, yesa::Ref{Cint}, la::Ref{Int32}, a::Ptr{Float128},
+                               ip::Ptr{Int32}, iw::Ptr{Int32})::Cvoid
+end
+
+function mc49cr(::Type{Float32}, ::Type{Int64}, nc, nr, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset_64.mc49c_64_(nc::Ref{Int64}, nr::Ref{Int64}, nnz::Ref{Int64},
+                                    irn::Ptr{Int64}, jcn::Ptr{Int64}, yesa::Ref{Cint},
+                                    la::Ref{Int64}, a::Ptr{Float32}, ip::Ptr{Int64},
+                                    iw::Ptr{Int64})::Cvoid
+end
+
+function mc49cr(::Type{Float64}, ::Type{Int64}, nc, nr, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset_64.mc49cd_64_(nc::Ref{Int64}, nr::Ref{Int64}, nnz::Ref{Int64},
+                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, yesa::Ref{Cint},
+                                     la::Ref{Int64}, a::Ptr{Float64}, ip::Ptr{Int64},
+                                     iw::Ptr{Int64})::Cvoid
+end
+
+function mc49cr(::Type{Float128}, ::Type{Int64}, nc, nr, nnz, irn, jcn, yesa, la, a, ip, iw)
+  @ccall libhsl_subset_64.mc49cq_64_(nc::Ref{Int64}, nr::Ref{Int64}, nnz::Ref{Int64},
+                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, yesa::Ref{Cint},
+                                     la::Ref{Int64}, a::Ptr{Float128}, ip::Ptr{Int64},
+                                     iw::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc54.jl b/src/Fortran/hsl_subset/mc54.jl
new file mode 100644
index 0000000..9b83d18
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc54.jl
@@ -0,0 +1,164 @@
+function mc54ar(::Type{Float32}, ::Type{Int32}, icntl, title, key, m, n, ne, ip, ind, value, iw,
+                info)
+  @ccall libhsl_subset.mc54a_(icntl::Ptr{Int32}, title::Ptr{UInt8}, key::Ptr{UInt8}, m::Ref{Int32},
+                              n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, ind::Ptr{Int32},
+                              value::Ptr{Float32}, iw::Ptr{Int32}, info::Ptr{Int32}, 72::Csize_t,
+                              8::Csize_t)::Cvoid
+end
+
+function mc54ar(::Type{Float64}, ::Type{Int32}, icntl, title, key, m, n, ne, ip, ind, value, iw,
+                info)
+  @ccall libhsl_subset.mc54ad_(icntl::Ptr{Int32}, title::Ptr{UInt8}, key::Ptr{UInt8}, m::Ref{Int32},
+                               n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, ind::Ptr{Int32},
+                               value::Ptr{Float64}, iw::Ptr{Int32}, info::Ptr{Int32}, 72::Csize_t,
+                               8::Csize_t)::Cvoid
+end
+
+function mc54ar(::Type{Float128}, ::Type{Int32}, icntl, title, key, m, n, ne, ip, ind, value, iw,
+                info)
+  @ccall libhsl_subset.mc54aq_(icntl::Ptr{Int32}, title::Ptr{UInt8}, key::Ptr{UInt8}, m::Ref{Int32},
+                               n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, ind::Ptr{Int32},
+                               value::Ptr{Float128}, iw::Ptr{Int32}, info::Ptr{Int32}, 72::Csize_t,
+                               8::Csize_t)::Cvoid
+end
+
+function mc54ar(::Type{Float32}, ::Type{Int64}, icntl, title, key, m, n, ne, ip, ind, value, iw,
+                info)
+  @ccall libhsl_subset_64.mc54a_64_(icntl::Ptr{Int64}, title::Ptr{UInt8}, key::Ptr{UInt8},
+                                    m::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64},
+                                    ind::Ptr{Int64}, value::Ptr{Float32}, iw::Ptr{Int64},
+                                    info::Ptr{Int64}, 72::Csize_t, 8::Csize_t)::Cvoid
+end
+
+function mc54ar(::Type{Float64}, ::Type{Int64}, icntl, title, key, m, n, ne, ip, ind, value, iw,
+                info)
+  @ccall libhsl_subset_64.mc54ad_64_(icntl::Ptr{Int64}, title::Ptr{UInt8}, key::Ptr{UInt8},
+                                     m::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64},
+                                     ind::Ptr{Int64}, value::Ptr{Float64}, iw::Ptr{Int64},
+                                     info::Ptr{Int64}, 72::Csize_t, 8::Csize_t)::Cvoid
+end
+
+function mc54ar(::Type{Float128}, ::Type{Int64}, icntl, title, key, m, n, ne, ip, ind, value, iw,
+                info)
+  @ccall libhsl_subset_64.mc54aq_64_(icntl::Ptr{Int64}, title::Ptr{UInt8}, key::Ptr{UInt8},
+                                     m::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64},
+                                     ind::Ptr{Int64}, value::Ptr{Float128}, iw::Ptr{Int64},
+                                     info::Ptr{Int64}, 72::Csize_t, 8::Csize_t)::Cvoid
+end
+
+function mc54br(::Type{Float32}, ::Type{Int32}, n, ind, fmtind, lunit)
+  @ccall libhsl_subset.mc54b_(n::Ref{Int32}, ind::Ptr{Int32}, fmtind::Ptr{UInt8}, lunit::Ref{Int32},
+                              16::Csize_t)::Cvoid
+end
+
+function mc54br(::Type{Float64}, ::Type{Int32}, n, ind, fmtind, lunit)
+  @ccall libhsl_subset.mc54bd_(n::Ref{Int32}, ind::Ptr{Int32}, fmtind::Ptr{UInt8},
+                               lunit::Ref{Int32}, 16::Csize_t)::Cvoid
+end
+
+function mc54br(::Type{Float128}, ::Type{Int32}, n, ind, fmtind, lunit)
+  @ccall libhsl_subset.mc54bq_(n::Ref{Int32}, ind::Ptr{Int32}, fmtind::Ptr{UInt8},
+                               lunit::Ref{Int32}, 16::Csize_t)::Cvoid
+end
+
+function mc54br(::Type{Float32}, ::Type{Int64}, n, ind, fmtind, lunit)
+  @ccall libhsl_subset_64.mc54b_64_(n::Ref{Int64}, ind::Ptr{Int64}, fmtind::Ptr{UInt8},
+                                    lunit::Ref{Int64}, 16::Csize_t)::Cvoid
+end
+
+function mc54br(::Type{Float64}, ::Type{Int64}, n, ind, fmtind, lunit)
+  @ccall libhsl_subset_64.mc54bd_64_(n::Ref{Int64}, ind::Ptr{Int64}, fmtind::Ptr{UInt8},
+                                     lunit::Ref{Int64}, 16::Csize_t)::Cvoid
+end
+
+function mc54br(::Type{Float128}, ::Type{Int64}, n, ind, fmtind, lunit)
+  @ccall libhsl_subset_64.mc54bq_64_(n::Ref{Int64}, ind::Ptr{Int64}, fmtind::Ptr{UInt8},
+                                     lunit::Ref{Int64}, 16::Csize_t)::Cvoid
+end
+
+function mc54cr(::Type{Float32}, ::Type{Int32}, n, a, fmta, lunit)
+  @ccall libhsl_subset.mc54c_(n::Ref{Int32}, a::Ptr{Float32}, fmta::Ptr{UInt8}, lunit::Ref{Int32},
+                              20::Csize_t)::Cvoid
+end
+
+function mc54cr(::Type{Float64}, ::Type{Int32}, n, a, fmta, lunit)
+  @ccall libhsl_subset.mc54cd_(n::Ref{Int32}, a::Ptr{Float64}, fmta::Ptr{UInt8}, lunit::Ref{Int32},
+                               20::Csize_t)::Cvoid
+end
+
+function mc54cr(::Type{Float128}, ::Type{Int32}, n, a, fmta, lunit)
+  @ccall libhsl_subset.mc54cq_(n::Ref{Int32}, a::Ptr{Float128}, fmta::Ptr{UInt8}, lunit::Ref{Int32},
+                               20::Csize_t)::Cvoid
+end
+
+function mc54cr(::Type{Float32}, ::Type{Int64}, n, a, fmta, lunit)
+  @ccall libhsl_subset_64.mc54c_64_(n::Ref{Int64}, a::Ptr{Float32}, fmta::Ptr{UInt8},
+                                    lunit::Ref{Int64}, 20::Csize_t)::Cvoid
+end
+
+function mc54cr(::Type{Float64}, ::Type{Int64}, n, a, fmta, lunit)
+  @ccall libhsl_subset_64.mc54cd_64_(n::Ref{Int64}, a::Ptr{Float64}, fmta::Ptr{UInt8},
+                                     lunit::Ref{Int64}, 20::Csize_t)::Cvoid
+end
+
+function mc54cr(::Type{Float128}, ::Type{Int64}, n, a, fmta, lunit)
+  @ccall libhsl_subset_64.mc54cq_64_(n::Ref{Int64}, a::Ptr{Float128}, fmta::Ptr{UInt8},
+                                     lunit::Ref{Int64}, 20::Csize_t)::Cvoid
+end
+
+function mc54dr(::Type{Float32}, ::Type{Int32}, n, nlin, fmt)
+  @ccall libhsl_subset.mc54d_(n::Ref{Int32}, nlin::Ref{Int32}, fmt::Ptr{UInt8}, 16::Csize_t)::Cvoid
+end
+
+function mc54dr(::Type{Float64}, ::Type{Int32}, n, nlin, fmt)
+  @ccall libhsl_subset.mc54dd_(n::Ref{Int32}, nlin::Ref{Int32}, fmt::Ptr{UInt8}, 16::Csize_t)::Cvoid
+end
+
+function mc54dr(::Type{Float128}, ::Type{Int32}, n, nlin, fmt)
+  @ccall libhsl_subset.mc54dq_(n::Ref{Int32}, nlin::Ref{Int32}, fmt::Ptr{UInt8}, 16::Csize_t)::Cvoid
+end
+
+function mc54dr(::Type{Float32}, ::Type{Int64}, n, nlin, fmt)
+  @ccall libhsl_subset_64.mc54d_64_(n::Ref{Int64}, nlin::Ref{Int64}, fmt::Ptr{UInt8},
+                                    16::Csize_t)::Cvoid
+end
+
+function mc54dr(::Type{Float64}, ::Type{Int64}, n, nlin, fmt)
+  @ccall libhsl_subset_64.mc54dd_64_(n::Ref{Int64}, nlin::Ref{Int64}, fmt::Ptr{UInt8},
+                                     16::Csize_t)::Cvoid
+end
+
+function mc54dr(::Type{Float128}, ::Type{Int64}, n, nlin, fmt)
+  @ccall libhsl_subset_64.mc54dq_64_(n::Ref{Int64}, nlin::Ref{Int64}, fmt::Ptr{UInt8},
+                                     16::Csize_t)::Cvoid
+end
+
+function mc54er(::Type{Float32}, ::Type{Int32}, dec, valfmi, valfmo, valcrd)
+  @ccall libhsl_subset.mc54e_(dec::Ref{Int32}, valfmi::Ptr{UInt8}, valfmo::Ptr{UInt8},
+                              valcrd::Ref{Int32}, 20::Csize_t, 20::Csize_t)::Cvoid
+end
+
+function mc54er(::Type{Float64}, ::Type{Int32}, dec, valfmi, valfmo, valcrd)
+  @ccall libhsl_subset.mc54ed_(dec::Ref{Int32}, valfmi::Ptr{UInt8}, valfmo::Ptr{UInt8},
+                               valcrd::Ref{Int32}, 20::Csize_t, 20::Csize_t)::Cvoid
+end
+
+function mc54er(::Type{Float128}, ::Type{Int32}, dec, valfmi, valfmo, valcrd)
+  @ccall libhsl_subset.mc54eq_(dec::Ref{Int32}, valfmi::Ptr{UInt8}, valfmo::Ptr{UInt8},
+                               valcrd::Ref{Int32}, 20::Csize_t, 20::Csize_t)::Cvoid
+end
+
+function mc54er(::Type{Float32}, ::Type{Int64}, dec, valfmi, valfmo, valcrd)
+  @ccall libhsl_subset_64.mc54e_64_(dec::Ref{Int64}, valfmi::Ptr{UInt8}, valfmo::Ptr{UInt8},
+                                    valcrd::Ref{Int64}, 20::Csize_t, 20::Csize_t)::Cvoid
+end
+
+function mc54er(::Type{Float64}, ::Type{Int64}, dec, valfmi, valfmo, valcrd)
+  @ccall libhsl_subset_64.mc54ed_64_(dec::Ref{Int64}, valfmi::Ptr{UInt8}, valfmo::Ptr{UInt8},
+                                     valcrd::Ref{Int64}, 20::Csize_t, 20::Csize_t)::Cvoid
+end
+
+function mc54er(::Type{Float128}, ::Type{Int64}, dec, valfmi, valfmo, valcrd)
+  @ccall libhsl_subset_64.mc54eq_64_(dec::Ref{Int64}, valfmi::Ptr{UInt8}, valfmo::Ptr{UInt8},
+                                     valcrd::Ref{Int64}, 20::Csize_t, 20::Csize_t)::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc57.jl b/src/Fortran/hsl_subset/mc57.jl
new file mode 100644
index 0000000..32441a0
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc57.jl
@@ -0,0 +1,85 @@
+function mc57ar(::Type{Float32}, ::Type{Int32}, lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn,
+                irn, ip, la, a, iw, lp, info)
+  @ccall libhsl_subset.mc57a_(lcntl::Ptr{Cint}, nmax::Ref{Int32}, nelt::Ref{Int32},
+                              eltvar::Ptr{Int32}, eltptr::Ptr{Int32}, aelt::Ptr{Float32},
+                              n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                              la::Ref{Int32}, a::Ptr{Float32}, iw::Ptr{Int32}, lp::Ref{Int32},
+                              info::Ptr{Int32})::Cvoid
+end
+
+function mc57ar(::Type{Float64}, ::Type{Int32}, lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn,
+                irn, ip, la, a, iw, lp, info)
+  @ccall libhsl_subset.mc57ad_(lcntl::Ptr{Cint}, nmax::Ref{Int32}, nelt::Ref{Int32},
+                               eltvar::Ptr{Int32}, eltptr::Ptr{Int32}, aelt::Ptr{Float64},
+                               n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               la::Ref{Int32}, a::Ptr{Float64}, iw::Ptr{Int32}, lp::Ref{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function mc57ar(::Type{Float128}, ::Type{Int32}, lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn,
+                irn, ip, la, a, iw, lp, info)
+  @ccall libhsl_subset.mc57aq_(lcntl::Ptr{Cint}, nmax::Ref{Int32}, nelt::Ref{Int32},
+                               eltvar::Ptr{Int32}, eltptr::Ptr{Int32}, aelt::Ptr{Float128},
+                               n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               la::Ref{Int32}, a::Ptr{Float128}, iw::Ptr{Int32}, lp::Ref{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function mc57ar(::Type{Float32}, ::Type{Int64}, lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn,
+                irn, ip, la, a, iw, lp, info)
+  @ccall libhsl_subset_64.mc57a_64_(lcntl::Ptr{Cint}, nmax::Ref{Int64}, nelt::Ref{Int64},
+                                    eltvar::Ptr{Int64}, eltptr::Ptr{Int64}, aelt::Ptr{Float32},
+                                    n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
+                                    ip::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float32}, iw::Ptr{Int64},
+                                    lp::Ref{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc57ar(::Type{Float64}, ::Type{Int64}, lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn,
+                irn, ip, la, a, iw, lp, info)
+  @ccall libhsl_subset_64.mc57ad_64_(lcntl::Ptr{Cint}, nmax::Ref{Int64}, nelt::Ref{Int64},
+                                     eltvar::Ptr{Int64}, eltptr::Ptr{Int64}, aelt::Ptr{Float64},
+                                     n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float64},
+                                     iw::Ptr{Int64}, lp::Ref{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc57ar(::Type{Float128}, ::Type{Int64}, lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn,
+                irn, ip, la, a, iw, lp, info)
+  @ccall libhsl_subset_64.mc57aq_64_(lcntl::Ptr{Cint}, nmax::Ref{Int64}, nelt::Ref{Int64},
+                                     eltvar::Ptr{Int64}, eltptr::Ptr{Int64}, aelt::Ptr{Float128},
+                                     n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float128},
+                                     iw::Ptr{Int64}, lp::Ref{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc57br(::Type{Float32}, ::Type{Int32}, n, yesa, la, a, nz, irn, ip)
+  @ccall libhsl_subset.mc57b_(n::Ref{Int32}, yesa::Ref{Cint}, la::Ref{Int32}, a::Ptr{Float32},
+                              nz::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32})::Cvoid
+end
+
+function mc57br(::Type{Float64}, ::Type{Int32}, n, yesa, la, a, nz, irn, ip)
+  @ccall libhsl_subset.mc57bd_(n::Ref{Int32}, yesa::Ref{Cint}, la::Ref{Int32}, a::Ptr{Float64},
+                               nz::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32})::Cvoid
+end
+
+function mc57br(::Type{Float128}, ::Type{Int32}, n, yesa, la, a, nz, irn, ip)
+  @ccall libhsl_subset.mc57bq_(n::Ref{Int32}, yesa::Ref{Cint}, la::Ref{Int32}, a::Ptr{Float128},
+                               nz::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32})::Cvoid
+end
+
+function mc57br(::Type{Float32}, ::Type{Int64}, n, yesa, la, a, nz, irn, ip)
+  @ccall libhsl_subset_64.mc57b_64_(n::Ref{Int64}, yesa::Ref{Cint}, la::Ref{Int64}, a::Ptr{Float32},
+                                    nz::Ref{Int64}, irn::Ptr{Int64}, ip::Ptr{Int64})::Cvoid
+end
+
+function mc57br(::Type{Float64}, ::Type{Int64}, n, yesa, la, a, nz, irn, ip)
+  @ccall libhsl_subset_64.mc57bd_64_(n::Ref{Int64}, yesa::Ref{Cint}, la::Ref{Int64},
+                                     a::Ptr{Float64}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64})::Cvoid
+end
+
+function mc57br(::Type{Float128}, ::Type{Int64}, n, yesa, la, a, nz, irn, ip)
+  @ccall libhsl_subset_64.mc57bq_64_(n::Ref{Int64}, yesa::Ref{Cint}, la::Ref{Int64},
+                                     a::Ptr{Float128}, nz::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc59.jl b/src/Fortran/hsl_subset/mc59.jl
new file mode 100644
index 0000000..fc5fd5a
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc59.jl
@@ -0,0 +1,271 @@
+function mc59ar(::Type{Float32}, ::Type{Int32}, icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip,
+                liw, iw, info)
+  @ccall libhsl_subset.mc59a_(icntl::Ptr{Int32}, nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32},
+                              irn::Ptr{Int32}, ljcn::Ref{Int32}, jcn::Ptr{Int32}, la::Ref{Int32},
+                              a::Ptr{Float32}, lip::Ref{Int32}, ip::Ptr{Int32}, liw::Ref{Int32},
+                              iw::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc59ar(::Type{Float64}, ::Type{Int32}, icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip,
+                liw, iw, info)
+  @ccall libhsl_subset.mc59ad_(icntl::Ptr{Int32}, nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32},
+                               irn::Ptr{Int32}, ljcn::Ref{Int32}, jcn::Ptr{Int32}, la::Ref{Int32},
+                               a::Ptr{Float64}, lip::Ref{Int32}, ip::Ptr{Int32}, liw::Ref{Int32},
+                               iw::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc59ar(::Type{Float128}, ::Type{Int32}, icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip,
+                liw, iw, info)
+  @ccall libhsl_subset.mc59aq_(icntl::Ptr{Int32}, nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32},
+                               irn::Ptr{Int32}, ljcn::Ref{Int32}, jcn::Ptr{Int32}, la::Ref{Int32},
+                               a::Ptr{Float128}, lip::Ref{Int32}, ip::Ptr{Int32}, liw::Ref{Int32},
+                               iw::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc59ar(::Type{Float32}, ::Type{Int64}, icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip,
+                liw, iw, info)
+  @ccall libhsl_subset_64.mc59a_64_(icntl::Ptr{Int64}, nc::Ref{Int64}, nr::Ref{Int64},
+                                    ne::Ref{Int64}, irn::Ptr{Int64}, ljcn::Ref{Int64},
+                                    jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float32},
+                                    lip::Ref{Int64}, ip::Ptr{Int64}, liw::Ref{Int64},
+                                    iw::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc59ar(::Type{Float64}, ::Type{Int64}, icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip,
+                liw, iw, info)
+  @ccall libhsl_subset_64.mc59ad_64_(icntl::Ptr{Int64}, nc::Ref{Int64}, nr::Ref{Int64},
+                                     ne::Ref{Int64}, irn::Ptr{Int64}, ljcn::Ref{Int64},
+                                     jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float64},
+                                     lip::Ref{Int64}, ip::Ptr{Int64}, liw::Ref{Int64},
+                                     iw::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc59ar(::Type{Float128}, ::Type{Int64}, icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip,
+                liw, iw, info)
+  @ccall libhsl_subset_64.mc59aq_64_(icntl::Ptr{Int64}, nc::Ref{Int64}, nr::Ref{Int64},
+                                     ne::Ref{Int64}, irn::Ptr{Int64}, ljcn::Ref{Int64},
+                                     jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float128},
+                                     lip::Ref{Int64}, ip::Ptr{Int64}, liw::Ref{Int64},
+                                     iw::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc59br(::Type{Float32}, ::Type{Int32}, lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw,
+                iout, jout, kne)
+  @ccall libhsl_subset.mc59b_(lcheck::Ref{Cint}, part::Ref{Int32}, nc::Ref{Int32}, nr::Ref{Int32},
+                              ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32}, la::Ref{Int32},
+                              a::Ptr{Float32}, ip::Ptr{Int32}, iw::Ptr{Int32}, iout::Ref{Int32},
+                              jout::Ref{Int32}, kne::Ref{Int32})::Cvoid
+end
+
+function mc59br(::Type{Float64}, ::Type{Int32}, lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw,
+                iout, jout, kne)
+  @ccall libhsl_subset.mc59bd_(lcheck::Ref{Cint}, part::Ref{Int32}, nc::Ref{Int32}, nr::Ref{Int32},
+                               ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32}, la::Ref{Int32},
+                               a::Ptr{Float64}, ip::Ptr{Int32}, iw::Ptr{Int32}, iout::Ref{Int32},
+                               jout::Ref{Int32}, kne::Ref{Int32})::Cvoid
+end
+
+function mc59br(::Type{Float128}, ::Type{Int32}, lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw,
+                iout, jout, kne)
+  @ccall libhsl_subset.mc59bq_(lcheck::Ref{Cint}, part::Ref{Int32}, nc::Ref{Int32}, nr::Ref{Int32},
+                               ne::Ref{Int32}, irn::Ptr{Int32}, jcn::Ptr{Int32}, la::Ref{Int32},
+                               a::Ptr{Float128}, ip::Ptr{Int32}, iw::Ptr{Int32}, iout::Ref{Int32},
+                               jout::Ref{Int32}, kne::Ref{Int32})::Cvoid
+end
+
+function mc59br(::Type{Float32}, ::Type{Int64}, lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw,
+                iout, jout, kne)
+  @ccall libhsl_subset_64.mc59b_64_(lcheck::Ref{Cint}, part::Ref{Int64}, nc::Ref{Int64},
+                                    nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                    jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float32},
+                                    ip::Ptr{Int64}, iw::Ptr{Int64}, iout::Ref{Int64},
+                                    jout::Ref{Int64}, kne::Ref{Int64})::Cvoid
+end
+
+function mc59br(::Type{Float64}, ::Type{Int64}, lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw,
+                iout, jout, kne)
+  @ccall libhsl_subset_64.mc59bd_64_(lcheck::Ref{Cint}, part::Ref{Int64}, nc::Ref{Int64},
+                                     nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float64},
+                                     ip::Ptr{Int64}, iw::Ptr{Int64}, iout::Ref{Int64},
+                                     jout::Ref{Int64}, kne::Ref{Int64})::Cvoid
+end
+
+function mc59br(::Type{Float128}, ::Type{Int64}, lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw,
+                iout, jout, kne)
+  @ccall libhsl_subset_64.mc59bq_64_(lcheck::Ref{Cint}, part::Ref{Int64}, nc::Ref{Int64},
+                                     nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float128},
+                                     ip::Ptr{Int64}, iw::Ptr{Int64}, iout::Ref{Int64},
+                                     jout::Ref{Int64}, kne::Ref{Int64})::Cvoid
+end
+
+function mc59cr(::Type{Float32}, ::Type{Int32}, nc, nr, ne, irn, jcn, la, a, ip, iw)
+  @ccall libhsl_subset.mc59c_(nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32},
+                              jcn::Ptr{Int32}, la::Ref{Int32}, a::Ptr{Float32}, ip::Ptr{Int32},
+                              iw::Ptr{Int32})::Cvoid
+end
+
+function mc59cr(::Type{Float64}, ::Type{Int32}, nc, nr, ne, irn, jcn, la, a, ip, iw)
+  @ccall libhsl_subset.mc59cd_(nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32},
+                               jcn::Ptr{Int32}, la::Ref{Int32}, a::Ptr{Float64}, ip::Ptr{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function mc59cr(::Type{Float128}, ::Type{Int32}, nc, nr, ne, irn, jcn, la, a, ip, iw)
+  @ccall libhsl_subset.mc59cq_(nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32},
+                               jcn::Ptr{Int32}, la::Ref{Int32}, a::Ptr{Float128}, ip::Ptr{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function mc59cr(::Type{Float32}, ::Type{Int64}, nc, nr, ne, irn, jcn, la, a, ip, iw)
+  @ccall libhsl_subset_64.mc59c_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                    jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float32},
+                                    ip::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc59cr(::Type{Float64}, ::Type{Int64}, nc, nr, ne, irn, jcn, la, a, ip, iw)
+  @ccall libhsl_subset_64.mc59cd_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64},
+                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, la::Ref{Int64},
+                                     a::Ptr{Float64}, ip::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc59cr(::Type{Float128}, ::Type{Int64}, nc, nr, ne, irn, jcn, la, a, ip, iw)
+  @ccall libhsl_subset_64.mc59cq_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64},
+                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, la::Ref{Int64},
+                                     a::Ptr{Float128}, ip::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc59dr(::Type{Float32}, ::Type{Int32}, nc, ne, irn, ip, la, a)
+  @ccall libhsl_subset.mc59d_(nc::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                              la::Ref{Int32}, a::Ptr{Float32})::Cvoid
+end
+
+function mc59dr(::Type{Float64}, ::Type{Int32}, nc, ne, irn, ip, la, a)
+  @ccall libhsl_subset.mc59dd_(nc::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               la::Ref{Int32}, a::Ptr{Float64})::Cvoid
+end
+
+function mc59dr(::Type{Float128}, ::Type{Int32}, nc, ne, irn, ip, la, a)
+  @ccall libhsl_subset.mc59dq_(nc::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32}, ip::Ptr{Int32},
+                               la::Ref{Int32}, a::Ptr{Float128})::Cvoid
+end
+
+function mc59dr(::Type{Float32}, ::Type{Int64}, nc, ne, irn, ip, la, a)
+  @ccall libhsl_subset_64.mc59d_64_(nc::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, ip::Ptr{Int64},
+                                    la::Ref{Int64}, a::Ptr{Float32})::Cvoid
+end
+
+function mc59dr(::Type{Float64}, ::Type{Int64}, nc, ne, irn, ip, la, a)
+  @ccall libhsl_subset_64.mc59dd_64_(nc::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float64})::Cvoid
+end
+
+function mc59dr(::Type{Float128}, ::Type{Int64}, nc, ne, irn, ip, la, a)
+  @ccall libhsl_subset_64.mc59dq_64_(nc::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                     ip::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float128})::Cvoid
+end
+
+function mc59er(::Type{Float32}, ::Type{Int32}, nc, nr, ne, irn, lip, ip, la, a, iw, idup, kne,
+                icntl6)
+  @ccall libhsl_subset.mc59e_(nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32},
+                              lip::Ref{Int32}, ip::Ptr{Int32}, la::Ref{Int32}, a::Ptr{Float32},
+                              iw::Ptr{Int32}, idup::Ref{Int32}, kne::Ref{Int32},
+                              icntl6::Ref{Int32})::Cvoid
+end
+
+function mc59er(::Type{Float64}, ::Type{Int32}, nc, nr, ne, irn, lip, ip, la, a, iw, idup, kne,
+                icntl6)
+  @ccall libhsl_subset.mc59ed_(nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32},
+                               lip::Ref{Int32}, ip::Ptr{Int32}, la::Ref{Int32}, a::Ptr{Float64},
+                               iw::Ptr{Int32}, idup::Ref{Int32}, kne::Ref{Int32},
+                               icntl6::Ref{Int32})::Cvoid
+end
+
+function mc59er(::Type{Float128}, ::Type{Int32}, nc, nr, ne, irn, lip, ip, la, a, iw, idup, kne,
+                icntl6)
+  @ccall libhsl_subset.mc59eq_(nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32},
+                               lip::Ref{Int32}, ip::Ptr{Int32}, la::Ref{Int32}, a::Ptr{Float128},
+                               iw::Ptr{Int32}, idup::Ref{Int32}, kne::Ref{Int32},
+                               icntl6::Ref{Int32})::Cvoid
+end
+
+function mc59er(::Type{Float32}, ::Type{Int64}, nc, nr, ne, irn, lip, ip, la, a, iw, idup, kne,
+                icntl6)
+  @ccall libhsl_subset_64.mc59e_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                    lip::Ref{Int64}, ip::Ptr{Int64}, la::Ref{Int64},
+                                    a::Ptr{Float32}, iw::Ptr{Int64}, idup::Ref{Int64},
+                                    kne::Ref{Int64}, icntl6::Ref{Int64})::Cvoid
+end
+
+function mc59er(::Type{Float64}, ::Type{Int64}, nc, nr, ne, irn, lip, ip, la, a, iw, idup, kne,
+                icntl6)
+  @ccall libhsl_subset_64.mc59ed_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64},
+                                     irn::Ptr{Int64}, lip::Ref{Int64}, ip::Ptr{Int64},
+                                     la::Ref{Int64}, a::Ptr{Float64}, iw::Ptr{Int64},
+                                     idup::Ref{Int64}, kne::Ref{Int64}, icntl6::Ref{Int64})::Cvoid
+end
+
+function mc59er(::Type{Float128}, ::Type{Int64}, nc, nr, ne, irn, lip, ip, la, a, iw, idup, kne,
+                icntl6)
+  @ccall libhsl_subset_64.mc59eq_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64},
+                                     irn::Ptr{Int64}, lip::Ref{Int64}, ip::Ptr{Int64},
+                                     la::Ref{Int64}, a::Ptr{Float128}, iw::Ptr{Int64},
+                                     idup::Ref{Int64}, kne::Ref{Int64}, icntl6::Ref{Int64})::Cvoid
+end
+
+function mc59fr(::Type{Float32}, ::Type{Int32}, nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup,
+                iout, iup, kne, icntl6, info)
+  @ccall libhsl_subset.mc59f_(nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32},
+                              lip::Ref{Int32}, ip::Ptr{Int32}, la::Ref{Int32}, a::Ptr{Float32},
+                              liw::Ref{Int32}, iw::Ptr{Int32}, idup::Ref{Int32}, iout::Ref{Int32},
+                              iup::Ref{Int32}, kne::Ref{Int32}, icntl6::Ref{Int32},
+                              info::Ptr{Int32})::Cvoid
+end
+
+function mc59fr(::Type{Float64}, ::Type{Int32}, nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup,
+                iout, iup, kne, icntl6, info)
+  @ccall libhsl_subset.mc59fd_(nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32},
+                               lip::Ref{Int32}, ip::Ptr{Int32}, la::Ref{Int32}, a::Ptr{Float64},
+                               liw::Ref{Int32}, iw::Ptr{Int32}, idup::Ref{Int32}, iout::Ref{Int32},
+                               iup::Ref{Int32}, kne::Ref{Int32}, icntl6::Ref{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function mc59fr(::Type{Float128}, ::Type{Int32}, nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup,
+                iout, iup, kne, icntl6, info)
+  @ccall libhsl_subset.mc59fq_(nc::Ref{Int32}, nr::Ref{Int32}, ne::Ref{Int32}, irn::Ptr{Int32},
+                               lip::Ref{Int32}, ip::Ptr{Int32}, la::Ref{Int32}, a::Ptr{Float128},
+                               liw::Ref{Int32}, iw::Ptr{Int32}, idup::Ref{Int32}, iout::Ref{Int32},
+                               iup::Ref{Int32}, kne::Ref{Int32}, icntl6::Ref{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function mc59fr(::Type{Float32}, ::Type{Int64}, nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup,
+                iout, iup, kne, icntl6, info)
+  @ccall libhsl_subset_64.mc59f_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
+                                    lip::Ref{Int64}, ip::Ptr{Int64}, la::Ref{Int64},
+                                    a::Ptr{Float32}, liw::Ref{Int64}, iw::Ptr{Int64},
+                                    idup::Ref{Int64}, iout::Ref{Int64}, iup::Ref{Int64},
+                                    kne::Ref{Int64}, icntl6::Ref{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc59fr(::Type{Float64}, ::Type{Int64}, nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup,
+                iout, iup, kne, icntl6, info)
+  @ccall libhsl_subset_64.mc59fd_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64},
+                                     irn::Ptr{Int64}, lip::Ref{Int64}, ip::Ptr{Int64},
+                                     la::Ref{Int64}, a::Ptr{Float64}, liw::Ref{Int64},
+                                     iw::Ptr{Int64}, idup::Ref{Int64}, iout::Ref{Int64},
+                                     iup::Ref{Int64}, kne::Ref{Int64}, icntl6::Ref{Int64},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function mc59fr(::Type{Float128}, ::Type{Int64}, nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup,
+                iout, iup, kne, icntl6, info)
+  @ccall libhsl_subset_64.mc59fq_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64},
+                                     irn::Ptr{Int64}, lip::Ref{Int64}, ip::Ptr{Int64},
+                                     la::Ref{Int64}, a::Ptr{Float128}, liw::Ref{Int64},
+                                     iw::Ptr{Int64}, idup::Ref{Int64}, iout::Ref{Int64},
+                                     iup::Ref{Int64}, kne::Ref{Int64}, icntl6::Ref{Int64},
+                                     info::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc60.jl b/src/Fortran/hsl_subset/mc60.jl
new file mode 100644
index 0000000..766d20c
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc60.jl
@@ -0,0 +1,552 @@
+function mc60ar(::Type{Float32}, ::Type{Int32}, n, lirn, irn, icptr, icntl, iw, info)
+  @ccall libhsl_subset.mc60a_(n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32}, icptr::Ptr{Int32},
+                              icntl::Ptr{Int32}, iw::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc60ar(::Type{Float64}, ::Type{Int32}, n, lirn, irn, icptr, icntl, iw, info)
+  @ccall libhsl_subset.mc60ad_(n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32}, icptr::Ptr{Int32},
+                               icntl::Ptr{Int32}, iw::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc60ar(::Type{Float128}, ::Type{Int32}, n, lirn, irn, icptr, icntl, iw, info)
+  @ccall libhsl_subset.mc60aq_(n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32}, icptr::Ptr{Int32},
+                               icntl::Ptr{Int32}, iw::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc60ar(::Type{Float32}, ::Type{Int64}, n, lirn, irn, icptr, icntl, iw, info)
+  @ccall libhsl_subset_64.mc60a_64_(n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
+                                    icptr::Ptr{Int64}, icntl::Ptr{Int64}, iw::Ptr{Int64},
+                                    info::Ptr{Int64})::Cvoid
+end
+
+function mc60ar(::Type{Float64}, ::Type{Int64}, n, lirn, irn, icptr, icntl, iw, info)
+  @ccall libhsl_subset_64.mc60ad_64_(n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
+                                     icptr::Ptr{Int64}, icntl::Ptr{Int64}, iw::Ptr{Int64},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function mc60ar(::Type{Float128}, ::Type{Int64}, n, lirn, irn, icptr, icntl, iw, info)
+  @ccall libhsl_subset_64.mc60aq_64_(n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
+                                     icptr::Ptr{Int64}, icntl::Ptr{Int64}, iw::Ptr{Int64},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function mc60br(::Type{Float32}, ::Type{Int32}, n, lirn, irn, icptr, nsup, svar, vars, iw)
+  @ccall libhsl_subset.mc60b_(n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32}, icptr::Ptr{Int32},
+                              nsup::Ref{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                              iw::Ptr{Int32})::Cvoid
+end
+
+function mc60br(::Type{Float64}, ::Type{Int32}, n, lirn, irn, icptr, nsup, svar, vars, iw)
+  @ccall libhsl_subset.mc60bd_(n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32}, icptr::Ptr{Int32},
+                               nsup::Ref{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function mc60br(::Type{Float128}, ::Type{Int32}, n, lirn, irn, icptr, nsup, svar, vars, iw)
+  @ccall libhsl_subset.mc60bq_(n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32}, icptr::Ptr{Int32},
+                               nsup::Ref{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function mc60br(::Type{Float32}, ::Type{Int64}, n, lirn, irn, icptr, nsup, svar, vars, iw)
+  @ccall libhsl_subset_64.mc60b_64_(n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
+                                    icptr::Ptr{Int64}, nsup::Ref{Int64}, svar::Ptr{Int64},
+                                    vars::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc60br(::Type{Float64}, ::Type{Int64}, n, lirn, irn, icptr, nsup, svar, vars, iw)
+  @ccall libhsl_subset_64.mc60bd_64_(n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
+                                     icptr::Ptr{Int64}, nsup::Ref{Int64}, svar::Ptr{Int64},
+                                     vars::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc60br(::Type{Float128}, ::Type{Int64}, n, lirn, irn, icptr, nsup, svar, vars, iw)
+  @ccall libhsl_subset_64.mc60bq_64_(n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
+                                     icptr::Ptr{Int64}, nsup::Ref{Int64}, svar::Ptr{Int64},
+                                     vars::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function mc60cr(::Type{Float32}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, jcntl, permsv,
+                weight, pair, info, iw, w)
+  @ccall libhsl_subset.mc60c_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                              icptr::Ptr{Int32}, vars::Ptr{Int32}, jcntl::Ptr{Int32},
+                              permsv::Ptr{Int32}, weight::Ptr{Float32}, pair::Ptr{Int32},
+                              info::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float32})::Cvoid
+end
+
+function mc60cr(::Type{Float64}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, jcntl, permsv,
+                weight, pair, info, iw, w)
+  @ccall libhsl_subset.mc60cd_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, vars::Ptr{Int32}, jcntl::Ptr{Int32},
+                               permsv::Ptr{Int32}, weight::Ptr{Float64}, pair::Ptr{Int32},
+                               info::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float64})::Cvoid
+end
+
+function mc60cr(::Type{Float128}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, jcntl, permsv,
+                weight, pair, info, iw, w)
+  @ccall libhsl_subset.mc60cq_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, vars::Ptr{Int32}, jcntl::Ptr{Int32},
+                               permsv::Ptr{Int32}, weight::Ptr{Float128}, pair::Ptr{Int32},
+                               info::Ptr{Int32}, iw::Ptr{Int32}, w::Ptr{Float128})::Cvoid
+end
+
+function mc60cr(::Type{Float32}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, jcntl, permsv,
+                weight, pair, info, iw, w)
+  @ccall libhsl_subset_64.mc60c_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                    jcntl::Ptr{Int64}, permsv::Ptr{Int64}, weight::Ptr{Float32},
+                                    pair::Ptr{Int64}, info::Ptr{Int64}, iw::Ptr{Int64},
+                                    w::Ptr{Float32})::Cvoid
+end
+
+function mc60cr(::Type{Float64}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, jcntl, permsv,
+                weight, pair, info, iw, w)
+  @ccall libhsl_subset_64.mc60cd_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                     jcntl::Ptr{Int64}, permsv::Ptr{Int64}, weight::Ptr{Float64},
+                                     pair::Ptr{Int64}, info::Ptr{Int64}, iw::Ptr{Int64},
+                                     w::Ptr{Float64})::Cvoid
+end
+
+function mc60cr(::Type{Float128}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, jcntl, permsv,
+                weight, pair, info, iw, w)
+  @ccall libhsl_subset_64.mc60cq_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                     jcntl::Ptr{Int64}, permsv::Ptr{Int64}, weight::Ptr{Float128},
+                                     pair::Ptr{Int64}, info::Ptr{Int64}, iw::Ptr{Int64},
+                                     w::Ptr{Float128})::Cvoid
+end
+
+function mc60dr(::Type{Float32}, ::Type{Int32}, n, nsup, svar, vars, permsv, perm, possv)
+  @ccall libhsl_subset.mc60d_(n::Ref{Int32}, nsup::Ref{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                              permsv::Ptr{Int32}, perm::Ptr{Int32}, possv::Ptr{Int32})::Cvoid
+end
+
+function mc60dr(::Type{Float64}, ::Type{Int32}, n, nsup, svar, vars, permsv, perm, possv)
+  @ccall libhsl_subset.mc60dd_(n::Ref{Int32}, nsup::Ref{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                               permsv::Ptr{Int32}, perm::Ptr{Int32}, possv::Ptr{Int32})::Cvoid
+end
+
+function mc60dr(::Type{Float128}, ::Type{Int32}, n, nsup, svar, vars, permsv, perm, possv)
+  @ccall libhsl_subset.mc60dq_(n::Ref{Int32}, nsup::Ref{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                               permsv::Ptr{Int32}, perm::Ptr{Int32}, possv::Ptr{Int32})::Cvoid
+end
+
+function mc60dr(::Type{Float32}, ::Type{Int64}, n, nsup, svar, vars, permsv, perm, possv)
+  @ccall libhsl_subset_64.mc60d_64_(n::Ref{Int64}, nsup::Ref{Int64}, svar::Ptr{Int64},
+                                    vars::Ptr{Int64}, permsv::Ptr{Int64}, perm::Ptr{Int64},
+                                    possv::Ptr{Int64})::Cvoid
+end
+
+function mc60dr(::Type{Float64}, ::Type{Int64}, n, nsup, svar, vars, permsv, perm, possv)
+  @ccall libhsl_subset_64.mc60dd_64_(n::Ref{Int64}, nsup::Ref{Int64}, svar::Ptr{Int64},
+                                     vars::Ptr{Int64}, permsv::Ptr{Int64}, perm::Ptr{Int64},
+                                     possv::Ptr{Int64})::Cvoid
+end
+
+function mc60dr(::Type{Float128}, ::Type{Int64}, n, nsup, svar, vars, permsv, perm, possv)
+  @ccall libhsl_subset_64.mc60dq_64_(n::Ref{Int64}, nsup::Ref{Int64}, svar::Ptr{Int64},
+                                     vars::Ptr{Int64}, permsv::Ptr{Int64}, perm::Ptr{Int64},
+                                     possv::Ptr{Int64})::Cvoid
+end
+
+function mc60er(::Type{Float32}, ::Type{Int32}, n, nsup, lirn, irn, icptr, svar, vars, permsv, perm,
+                iw)
+  @ccall libhsl_subset.mc60e_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                              icptr::Ptr{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                              permsv::Ptr{Int32}, perm::Ptr{Int32}, iw::Ptr{Int32})::Cvoid
+end
+
+function mc60er(::Type{Float64}, ::Type{Int32}, n, nsup, lirn, irn, icptr, svar, vars, permsv, perm,
+                iw)
+  @ccall libhsl_subset.mc60ed_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                               permsv::Ptr{Int32}, perm::Ptr{Int32}, iw::Ptr{Int32})::Cvoid
+end
+
+function mc60er(::Type{Float128}, ::Type{Int32}, n, nsup, lirn, irn, icptr, svar, vars, permsv,
+                perm, iw)
+  @ccall libhsl_subset.mc60eq_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                               permsv::Ptr{Int32}, perm::Ptr{Int32}, iw::Ptr{Int32})::Cvoid
+end
+
+function mc60er(::Type{Float32}, ::Type{Int64}, n, nsup, lirn, irn, icptr, svar, vars, permsv, perm,
+                iw)
+  @ccall libhsl_subset_64.mc60e_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
+                                    vars::Ptr{Int64}, permsv::Ptr{Int64}, perm::Ptr{Int64},
+                                    iw::Ptr{Int64})::Cvoid
+end
+
+function mc60er(::Type{Float64}, ::Type{Int64}, n, nsup, lirn, irn, icptr, svar, vars, permsv, perm,
+                iw)
+  @ccall libhsl_subset_64.mc60ed_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
+                                     vars::Ptr{Int64}, permsv::Ptr{Int64}, perm::Ptr{Int64},
+                                     iw::Ptr{Int64})::Cvoid
+end
+
+function mc60er(::Type{Float128}, ::Type{Int64}, n, nsup, lirn, irn, icptr, svar, vars, permsv,
+                perm, iw)
+  @ccall libhsl_subset_64.mc60eq_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
+                                     vars::Ptr{Int64}, permsv::Ptr{Int64}, perm::Ptr{Int64},
+                                     iw::Ptr{Int64})::Cvoid
+end
+
+function mc60fr(::Type{Float32}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset.mc60f_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                              icptr::Ptr{Int32}, vars::Ptr{Int32}, permsv::Ptr{Int32},
+                              iw::Ptr{Int32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc60fr(::Type{Float64}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset.mc60fd_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, vars::Ptr{Int32}, permsv::Ptr{Int32},
+                               iw::Ptr{Int32}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc60fr(::Type{Float128}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset.mc60fq_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, vars::Ptr{Int32}, permsv::Ptr{Int32},
+                               iw::Ptr{Int32}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc60fr(::Type{Float32}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset_64.mc60f_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                    permsv::Ptr{Int64}, iw::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc60fr(::Type{Float64}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset_64.mc60fd_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                     permsv::Ptr{Int64}, iw::Ptr{Int64}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc60fr(::Type{Float128}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset_64.mc60fq_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                     permsv::Ptr{Int64}, iw::Ptr{Int64},
+                                     rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc60gr(::Type{Float32}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset.mc60g_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                              icptr::Ptr{Int32}, vars::Ptr{Int32}, permsv::Ptr{Int32},
+                              iw::Ptr{Int32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc60gr(::Type{Float64}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset.mc60gd_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, vars::Ptr{Int32}, permsv::Ptr{Int32},
+                               iw::Ptr{Int32}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc60gr(::Type{Float128}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset.mc60gq_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, vars::Ptr{Int32}, permsv::Ptr{Int32},
+                               iw::Ptr{Int32}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc60gr(::Type{Float32}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset_64.mc60g_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                    permsv::Ptr{Int64}, iw::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc60gr(::Type{Float64}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset_64.mc60gd_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                     permsv::Ptr{Int64}, iw::Ptr{Int64}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc60gr(::Type{Float128}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl_subset_64.mc60gq_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                     permsv::Ptr{Int64}, iw::Ptr{Int64},
+                                     rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc60hr(::Type{Float32}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                list, info)
+  @ccall libhsl_subset.mc60h_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                              icptr::Ptr{Int32}, vars::Ptr{Int32}, mask::Ptr{Int32}, ls::Ptr{Int32},
+                              xls::Ptr{Int32}, list::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc60hr(::Type{Float64}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                list, info)
+  @ccall libhsl_subset.mc60hd_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, vars::Ptr{Int32}, mask::Ptr{Int32},
+                               ls::Ptr{Int32}, xls::Ptr{Int32}, list::Ptr{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function mc60hr(::Type{Float128}, ::Type{Int32}, n, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                list, info)
+  @ccall libhsl_subset.mc60hq_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, vars::Ptr{Int32}, mask::Ptr{Int32},
+                               ls::Ptr{Int32}, xls::Ptr{Int32}, list::Ptr{Int32},
+                               info::Ptr{Int32})::Cvoid
+end
+
+function mc60hr(::Type{Float32}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                list, info)
+  @ccall libhsl_subset_64.mc60h_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                    mask::Ptr{Int64}, ls::Ptr{Int64}, xls::Ptr{Int64},
+                                    list::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc60hr(::Type{Float64}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                list, info)
+  @ccall libhsl_subset_64.mc60hd_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                     mask::Ptr{Int64}, ls::Ptr{Int64}, xls::Ptr{Int64},
+                                     list::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc60hr(::Type{Float128}, ::Type{Int64}, n, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                list, info)
+  @ccall libhsl_subset_64.mc60hq_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                     mask::Ptr{Int64}, ls::Ptr{Int64}, xls::Ptr{Int64},
+                                     list::Ptr{Int64}, info::Ptr{Int64})::Cvoid
+end
+
+function mc60jr(::Type{Float32}, ::Type{Int32}, nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars,
+                status, weight, nlist, queue, deg, prior)
+  @ccall libhsl_subset.mc60j_(nsup::Ref{Int32}, lirn::Ref{Int32}, nodes::Ref{Int32},
+                              nstrt::Ref{Int32}, lstnum::Ref{Int32}, irn::Ptr{Int32},
+                              icptr::Ptr{Int32}, vars::Ptr{Int32}, status::Ptr{Int32},
+                              weight::Ptr{Float32}, nlist::Ptr{Int32}, queue::Ptr{Int32},
+                              deg::Ptr{Int32}, prior::Ptr{Float32})::Cvoid
+end
+
+function mc60jr(::Type{Float64}, ::Type{Int32}, nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars,
+                status, weight, nlist, queue, deg, prior)
+  @ccall libhsl_subset.mc60jd_(nsup::Ref{Int32}, lirn::Ref{Int32}, nodes::Ref{Int32},
+                               nstrt::Ref{Int32}, lstnum::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, vars::Ptr{Int32}, status::Ptr{Int32},
+                               weight::Ptr{Float64}, nlist::Ptr{Int32}, queue::Ptr{Int32},
+                               deg::Ptr{Int32}, prior::Ptr{Float64})::Cvoid
+end
+
+function mc60jr(::Type{Float128}, ::Type{Int32}, nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars,
+                status, weight, nlist, queue, deg, prior)
+  @ccall libhsl_subset.mc60jq_(nsup::Ref{Int32}, lirn::Ref{Int32}, nodes::Ref{Int32},
+                               nstrt::Ref{Int32}, lstnum::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, vars::Ptr{Int32}, status::Ptr{Int32},
+                               weight::Ptr{Float128}, nlist::Ptr{Int32}, queue::Ptr{Int32},
+                               deg::Ptr{Int32}, prior::Ptr{Float128})::Cvoid
+end
+
+function mc60jr(::Type{Float32}, ::Type{Int64}, nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars,
+                status, weight, nlist, queue, deg, prior)
+  @ccall libhsl_subset_64.mc60j_64_(nsup::Ref{Int64}, lirn::Ref{Int64}, nodes::Ref{Int64},
+                                    nstrt::Ref{Int64}, lstnum::Ref{Int64}, irn::Ptr{Int64},
+                                    icptr::Ptr{Int64}, vars::Ptr{Int64}, status::Ptr{Int64},
+                                    weight::Ptr{Float32}, nlist::Ptr{Int64}, queue::Ptr{Int64},
+                                    deg::Ptr{Int64}, prior::Ptr{Float32})::Cvoid
+end
+
+function mc60jr(::Type{Float64}, ::Type{Int64}, nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars,
+                status, weight, nlist, queue, deg, prior)
+  @ccall libhsl_subset_64.mc60jd_64_(nsup::Ref{Int64}, lirn::Ref{Int64}, nodes::Ref{Int64},
+                                     nstrt::Ref{Int64}, lstnum::Ref{Int64}, irn::Ptr{Int64},
+                                     icptr::Ptr{Int64}, vars::Ptr{Int64}, status::Ptr{Int64},
+                                     weight::Ptr{Float64}, nlist::Ptr{Int64}, queue::Ptr{Int64},
+                                     deg::Ptr{Int64}, prior::Ptr{Float64})::Cvoid
+end
+
+function mc60jr(::Type{Float128}, ::Type{Int64}, nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars,
+                status, weight, nlist, queue, deg, prior)
+  @ccall libhsl_subset_64.mc60jq_64_(nsup::Ref{Int64}, lirn::Ref{Int64}, nodes::Ref{Int64},
+                                     nstrt::Ref{Int64}, lstnum::Ref{Int64}, irn::Ptr{Int64},
+                                     icptr::Ptr{Int64}, vars::Ptr{Int64}, status::Ptr{Int64},
+                                     weight::Ptr{Float128}, nlist::Ptr{Int64}, queue::Ptr{Int64},
+                                     deg::Ptr{Int64}, prior::Ptr{Float128})::Cvoid
+end
+
+function mc60lr(::Type{Float32}, ::Type{Int32}, root, maxwid, nsup, lirn, irn, icptr, vars, mask,
+                ls, xls, nlvl, lwidth, nvars)
+  @ccall libhsl_subset.mc60l_(root::Ref{Int32}, maxwid::Ref{Int32}, nsup::Ref{Int32},
+                              lirn::Ref{Int32}, irn::Ptr{Int32}, icptr::Ptr{Int32},
+                              vars::Ptr{Int32}, mask::Ptr{Int32}, ls::Ptr{Int32}, xls::Ptr{Int32},
+                              nlvl::Ref{Int32}, lwidth::Ref{Int32}, nvars::Ref{Int32})::Cvoid
+end
+
+function mc60lr(::Type{Float64}, ::Type{Int32}, root, maxwid, nsup, lirn, irn, icptr, vars, mask,
+                ls, xls, nlvl, lwidth, nvars)
+  @ccall libhsl_subset.mc60ld_(root::Ref{Int32}, maxwid::Ref{Int32}, nsup::Ref{Int32},
+                               lirn::Ref{Int32}, irn::Ptr{Int32}, icptr::Ptr{Int32},
+                               vars::Ptr{Int32}, mask::Ptr{Int32}, ls::Ptr{Int32}, xls::Ptr{Int32},
+                               nlvl::Ref{Int32}, lwidth::Ref{Int32}, nvars::Ref{Int32})::Cvoid
+end
+
+function mc60lr(::Type{Float128}, ::Type{Int32}, root, maxwid, nsup, lirn, irn, icptr, vars, mask,
+                ls, xls, nlvl, lwidth, nvars)
+  @ccall libhsl_subset.mc60lq_(root::Ref{Int32}, maxwid::Ref{Int32}, nsup::Ref{Int32},
+                               lirn::Ref{Int32}, irn::Ptr{Int32}, icptr::Ptr{Int32},
+                               vars::Ptr{Int32}, mask::Ptr{Int32}, ls::Ptr{Int32}, xls::Ptr{Int32},
+                               nlvl::Ref{Int32}, lwidth::Ref{Int32}, nvars::Ref{Int32})::Cvoid
+end
+
+function mc60lr(::Type{Float32}, ::Type{Int64}, root, maxwid, nsup, lirn, irn, icptr, vars, mask,
+                ls, xls, nlvl, lwidth, nvars)
+  @ccall libhsl_subset_64.mc60l_64_(root::Ref{Int64}, maxwid::Ref{Int64}, nsup::Ref{Int64},
+                                    lirn::Ref{Int64}, irn::Ptr{Int64}, icptr::Ptr{Int64},
+                                    vars::Ptr{Int64}, mask::Ptr{Int64}, ls::Ptr{Int64},
+                                    xls::Ptr{Int64}, nlvl::Ref{Int64}, lwidth::Ref{Int64},
+                                    nvars::Ref{Int64})::Cvoid
+end
+
+function mc60lr(::Type{Float64}, ::Type{Int64}, root, maxwid, nsup, lirn, irn, icptr, vars, mask,
+                ls, xls, nlvl, lwidth, nvars)
+  @ccall libhsl_subset_64.mc60ld_64_(root::Ref{Int64}, maxwid::Ref{Int64}, nsup::Ref{Int64},
+                                     lirn::Ref{Int64}, irn::Ptr{Int64}, icptr::Ptr{Int64},
+                                     vars::Ptr{Int64}, mask::Ptr{Int64}, ls::Ptr{Int64},
+                                     xls::Ptr{Int64}, nlvl::Ref{Int64}, lwidth::Ref{Int64},
+                                     nvars::Ref{Int64})::Cvoid
+end
+
+function mc60lr(::Type{Float128}, ::Type{Int64}, root, maxwid, nsup, lirn, irn, icptr, vars, mask,
+                ls, xls, nlvl, lwidth, nvars)
+  @ccall libhsl_subset_64.mc60lq_64_(root::Ref{Int64}, maxwid::Ref{Int64}, nsup::Ref{Int64},
+                                     lirn::Ref{Int64}, irn::Ptr{Int64}, icptr::Ptr{Int64},
+                                     vars::Ptr{Int64}, mask::Ptr{Int64}, ls::Ptr{Int64},
+                                     xls::Ptr{Int64}, nlvl::Ref{Int64}, lwidth::Ref{Int64},
+                                     nvars::Ref{Int64})::Cvoid
+end
+
+function mc60or(::Type{Float32}, ::Type{Int32}, n, nc, lirn, irn, icptr, svar, nsup, new, vars,
+                flag)
+  @ccall libhsl_subset.mc60o_(n::Ref{Int32}, nc::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                              icptr::Ptr{Int32}, svar::Ptr{Int32}, nsup::Ref{Int32},
+                              new::Ptr{Int32}, vars::Ptr{Int32}, flag::Ptr{Int32})::Cvoid
+end
+
+function mc60or(::Type{Float64}, ::Type{Int32}, n, nc, lirn, irn, icptr, svar, nsup, new, vars,
+                flag)
+  @ccall libhsl_subset.mc60od_(n::Ref{Int32}, nc::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, svar::Ptr{Int32}, nsup::Ref{Int32},
+                               new::Ptr{Int32}, vars::Ptr{Int32}, flag::Ptr{Int32})::Cvoid
+end
+
+function mc60or(::Type{Float128}, ::Type{Int32}, n, nc, lirn, irn, icptr, svar, nsup, new, vars,
+                flag)
+  @ccall libhsl_subset.mc60oq_(n::Ref{Int32}, nc::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, svar::Ptr{Int32}, nsup::Ref{Int32},
+                               new::Ptr{Int32}, vars::Ptr{Int32}, flag::Ptr{Int32})::Cvoid
+end
+
+function mc60or(::Type{Float32}, ::Type{Int64}, n, nc, lirn, irn, icptr, svar, nsup, new, vars,
+                flag)
+  @ccall libhsl_subset_64.mc60o_64_(n::Ref{Int64}, nc::Ref{Int64}, lirn::Ref{Int64},
+                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
+                                    nsup::Ref{Int64}, new::Ptr{Int64}, vars::Ptr{Int64},
+                                    flag::Ptr{Int64})::Cvoid
+end
+
+function mc60or(::Type{Float64}, ::Type{Int64}, n, nc, lirn, irn, icptr, svar, nsup, new, vars,
+                flag)
+  @ccall libhsl_subset_64.mc60od_64_(n::Ref{Int64}, nc::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
+                                     nsup::Ref{Int64}, new::Ptr{Int64}, vars::Ptr{Int64},
+                                     flag::Ptr{Int64})::Cvoid
+end
+
+function mc60or(::Type{Float128}, ::Type{Int64}, n, nc, lirn, irn, icptr, svar, nsup, new, vars,
+                flag)
+  @ccall libhsl_subset_64.mc60oq_64_(n::Ref{Int64}, nc::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
+                                     nsup::Ref{Int64}, new::Ptr{Int64}, vars::Ptr{Int64},
+                                     flag::Ptr{Int64})::Cvoid
+end
+
+function mc60pr(::Type{Float32}, ::Type{Int32}, n, nsup, lirn, irn, icptr, svar, vars, var, flag)
+  @ccall libhsl_subset.mc60p_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                              icptr::Ptr{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                              var::Ptr{Int32}, flag::Ptr{Int32})::Cvoid
+end
+
+function mc60pr(::Type{Float64}, ::Type{Int32}, n, nsup, lirn, irn, icptr, svar, vars, var, flag)
+  @ccall libhsl_subset.mc60pd_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                               var::Ptr{Int32}, flag::Ptr{Int32})::Cvoid
+end
+
+function mc60pr(::Type{Float128}, ::Type{Int32}, n, nsup, lirn, irn, icptr, svar, vars, var, flag)
+  @ccall libhsl_subset.mc60pq_(n::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, svar::Ptr{Int32}, vars::Ptr{Int32},
+                               var::Ptr{Int32}, flag::Ptr{Int32})::Cvoid
+end
+
+function mc60pr(::Type{Float32}, ::Type{Int64}, n, nsup, lirn, irn, icptr, svar, vars, var, flag)
+  @ccall libhsl_subset_64.mc60p_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
+                                    vars::Ptr{Int64}, var::Ptr{Int64}, flag::Ptr{Int64})::Cvoid
+end
+
+function mc60pr(::Type{Float64}, ::Type{Int64}, n, nsup, lirn, irn, icptr, svar, vars, var, flag)
+  @ccall libhsl_subset_64.mc60pd_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
+                                     vars::Ptr{Int64}, var::Ptr{Int64}, flag::Ptr{Int64})::Cvoid
+end
+
+function mc60pr(::Type{Float128}, ::Type{Int64}, n, nsup, lirn, irn, icptr, svar, vars, var, flag)
+  @ccall libhsl_subset_64.mc60pq_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
+                                     vars::Ptr{Int64}, var::Ptr{Int64}, flag::Ptr{Int64})::Cvoid
+end
+
+function mc60qr(::Type{Float32}, ::Type{Int32}, root, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                nlvl, nvars, degree)
+  @ccall libhsl_subset.mc60q_(root::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                              icptr::Ptr{Int32}, vars::Ptr{Int32}, mask::Ptr{Int32}, ls::Ptr{Int32},
+                              xls::Ptr{Int32}, nlvl::Ref{Int32}, nvars::Ref{Int32},
+                              degree::Ptr{Int32})::Cvoid
+end
+
+function mc60qr(::Type{Float64}, ::Type{Int32}, root, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                nlvl, nvars, degree)
+  @ccall libhsl_subset.mc60qd_(root::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32},
+                               irn::Ptr{Int32}, icptr::Ptr{Int32}, vars::Ptr{Int32},
+                               mask::Ptr{Int32}, ls::Ptr{Int32}, xls::Ptr{Int32}, nlvl::Ref{Int32},
+                               nvars::Ref{Int32}, degree::Ptr{Int32})::Cvoid
+end
+
+function mc60qr(::Type{Float128}, ::Type{Int32}, root, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                nlvl, nvars, degree)
+  @ccall libhsl_subset.mc60qq_(root::Ref{Int32}, nsup::Ref{Int32}, lirn::Ref{Int32},
+                               irn::Ptr{Int32}, icptr::Ptr{Int32}, vars::Ptr{Int32},
+                               mask::Ptr{Int32}, ls::Ptr{Int32}, xls::Ptr{Int32}, nlvl::Ref{Int32},
+                               nvars::Ref{Int32}, degree::Ptr{Int32})::Cvoid
+end
+
+function mc60qr(::Type{Float32}, ::Type{Int64}, root, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                nlvl, nvars, degree)
+  @ccall libhsl_subset_64.mc60q_64_(root::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                    mask::Ptr{Int64}, ls::Ptr{Int64}, xls::Ptr{Int64},
+                                    nlvl::Ref{Int64}, nvars::Ref{Int64}, degree::Ptr{Int64})::Cvoid
+end
+
+function mc60qr(::Type{Float64}, ::Type{Int64}, root, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                nlvl, nvars, degree)
+  @ccall libhsl_subset_64.mc60qd_64_(root::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                     mask::Ptr{Int64}, ls::Ptr{Int64}, xls::Ptr{Int64},
+                                     nlvl::Ref{Int64}, nvars::Ref{Int64}, degree::Ptr{Int64})::Cvoid
+end
+
+function mc60qr(::Type{Float128}, ::Type{Int64}, root, nsup, lirn, irn, icptr, vars, mask, ls, xls,
+                nlvl, nvars, degree)
+  @ccall libhsl_subset_64.mc60qq_64_(root::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
+                                     mask::Ptr{Int64}, ls::Ptr{Int64}, xls::Ptr{Int64},
+                                     nlvl::Ref{Int64}, nvars::Ref{Int64}, degree::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc61.jl b/src/Fortran/hsl_subset/mc61.jl
new file mode 100644
index 0000000..40c3021
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc61.jl
@@ -0,0 +1,74 @@
+function mc61ir(::Type{Float32}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.mc61i_(icntl::Ptr{Int32}, cntl::Ptr{Float32})::Cvoid
+end
+
+function mc61ir(::Type{Float64}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.mc61id_(icntl::Ptr{Int32}, cntl::Ptr{Float64})::Cvoid
+end
+
+function mc61ir(::Type{Float128}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.mc61iq_(icntl::Ptr{Int32}, cntl::Ptr{Float128})::Cvoid
+end
+
+function mc61ir(::Type{Float32}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.mc61i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32})::Cvoid
+end
+
+function mc61ir(::Type{Float64}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.mc61id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64})::Cvoid
+end
+
+function mc61ir(::Type{Float128}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.mc61iq_64_(icntl::Ptr{Int64}, cntl::Ptr{Float128})::Cvoid
+end
+
+function mc61ar(::Type{Float32}, ::Type{Int32}, job, n, lirn, irn, icptr, perm, liw, iw, w, icntl,
+                cntl, info, rinfo)
+  @ccall libhsl_subset.mc61a_(job::Ref{Int32}, n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                              icptr::Ptr{Int32}, perm::Ptr{Int32}, liw::Ref{Int32}, iw::Ptr{Int32},
+                              w::Ptr{Float32}, icntl::Ptr{Int32}, cntl::Ptr{Float32},
+                              info::Ptr{Int32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc61ar(::Type{Float64}, ::Type{Int32}, job, n, lirn, irn, icptr, perm, liw, iw, w, icntl,
+                cntl, info, rinfo)
+  @ccall libhsl_subset.mc61ad_(job::Ref{Int32}, n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, perm::Ptr{Int32}, liw::Ref{Int32}, iw::Ptr{Int32},
+                               w::Ptr{Float64}, icntl::Ptr{Int32}, cntl::Ptr{Float64},
+                               info::Ptr{Int32}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc61ar(::Type{Float128}, ::Type{Int32}, job, n, lirn, irn, icptr, perm, liw, iw, w, icntl,
+                cntl, info, rinfo)
+  @ccall libhsl_subset.mc61aq_(job::Ref{Int32}, n::Ref{Int32}, lirn::Ref{Int32}, irn::Ptr{Int32},
+                               icptr::Ptr{Int32}, perm::Ptr{Int32}, liw::Ref{Int32}, iw::Ptr{Int32},
+                               w::Ptr{Float128}, icntl::Ptr{Int32}, cntl::Ptr{Float128},
+                               info::Ptr{Int32}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc61ar(::Type{Float32}, ::Type{Int64}, job, n, lirn, irn, icptr, perm, liw, iw, w, icntl,
+                cntl, info, rinfo)
+  @ccall libhsl_subset_64.mc61a_64_(job::Ref{Int64}, n::Ref{Int64}, lirn::Ref{Int64},
+                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, perm::Ptr{Int64},
+                                    liw::Ref{Int64}, iw::Ptr{Int64}, w::Ptr{Float32},
+                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, info::Ptr{Int64},
+                                    rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc61ar(::Type{Float64}, ::Type{Int64}, job, n, lirn, irn, icptr, perm, liw, iw, w, icntl,
+                cntl, info, rinfo)
+  @ccall libhsl_subset_64.mc61ad_64_(job::Ref{Int64}, n::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, perm::Ptr{Int64},
+                                     liw::Ref{Int64}, iw::Ptr{Int64}, w::Ptr{Float64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc61ar(::Type{Float128}, ::Type{Int64}, job, n, lirn, irn, icptr, perm, liw, iw, w, icntl,
+                cntl, info, rinfo)
+  @ccall libhsl_subset_64.mc61aq_64_(job::Ref{Int64}, n::Ref{Int64}, lirn::Ref{Int64},
+                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, perm::Ptr{Int64},
+                                     liw::Ref{Int64}, iw::Ptr{Int64}, w::Ptr{Float128},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float128}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float128})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc64.jl b/src/Fortran/hsl_subset/mc64.jl
new file mode 100644
index 0000000..8aa0f1a
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc64.jl
@@ -0,0 +1,428 @@
+function mc64ir(::Type{Float32}, ::Type{Int32}, icntl)
+  @ccall libhsl_subset.mc64i_(icntl::Ptr{Int32})::Cvoid
+end
+
+function mc64ir(::Type{Float64}, ::Type{Int32}, icntl)
+  @ccall libhsl_subset.mc64id_(icntl::Ptr{Int32})::Cvoid
+end
+
+function mc64ir(::Type{Float128}, ::Type{Int32}, icntl)
+  @ccall libhsl_subset.mc64iq_(icntl::Ptr{Int32})::Cvoid
+end
+
+function mc64ir(::Type{Float32}, ::Type{Int64}, icntl)
+  @ccall libhsl_subset_64.mc64i_64_(icntl::Ptr{Int64})::Cvoid
+end
+
+function mc64ir(::Type{Float64}, ::Type{Int64}, icntl)
+  @ccall libhsl_subset_64.mc64id_64_(icntl::Ptr{Int64})::Cvoid
+end
+
+function mc64ir(::Type{Float128}, ::Type{Int64}, icntl)
+  @ccall libhsl_subset_64.mc64iq_64_(icntl::Ptr{Int64})::Cvoid
+end
+
+function mc64ar(::Type{Float32}, ::Type{Int32}, job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw,
+                dw, icntl, info)
+  @ccall libhsl_subset.mc64a_(job::Ref{Int32}, n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32},
+                              irn::Ptr{Int32}, a::Ptr{Float32}, num::Ref{Int32}, cperm::Ptr{Int32},
+                              liw::Ref{Int32}, iw::Ptr{Int32}, ldw::Ref{Int32}, dw::Ptr{Float32},
+                              icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc64ar(::Type{Float64}, ::Type{Int32}, job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw,
+                dw, icntl, info)
+  @ccall libhsl_subset.mc64ad_(job::Ref{Int32}, n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float64}, num::Ref{Int32}, cperm::Ptr{Int32},
+                               liw::Ref{Int32}, iw::Ptr{Int32}, ldw::Ref{Int32}, dw::Ptr{Float64},
+                               icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc64ar(::Type{Float128}, ::Type{Int32}, job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw,
+                dw, icntl, info)
+  @ccall libhsl_subset.mc64aq_(job::Ref{Int32}, n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float128}, num::Ref{Int32},
+                               cperm::Ptr{Int32}, liw::Ref{Int32}, iw::Ptr{Int32}, ldw::Ref{Int32},
+                               dw::Ptr{Float128}, icntl::Ptr{Int32}, info::Ptr{Int32})::Cvoid
+end
+
+function mc64ar(::Type{Float32}, ::Type{Int64}, job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw,
+                dw, icntl, info)
+  @ccall libhsl_subset_64.mc64a_64_(job::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64},
+                                    irn::Ptr{Int64}, a::Ptr{Float32}, num::Ref{Int64},
+                                    cperm::Ptr{Int64}, liw::Ref{Int64}, iw::Ptr{Int64},
+                                    ldw::Ref{Int64}, dw::Ptr{Float32}, icntl::Ptr{Int64},
+                                    info::Ptr{Int64})::Cvoid
+end
+
+function mc64ar(::Type{Float64}, ::Type{Int64}, job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw,
+                dw, icntl, info)
+  @ccall libhsl_subset_64.mc64ad_64_(job::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float64}, num::Ref{Int64},
+                                     cperm::Ptr{Int64}, liw::Ref{Int64}, iw::Ptr{Int64},
+                                     ldw::Ref{Int64}, dw::Ptr{Float64}, icntl::Ptr{Int64},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function mc64ar(::Type{Float128}, ::Type{Int64}, job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw,
+                dw, icntl, info)
+  @ccall libhsl_subset_64.mc64aq_64_(job::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float128}, num::Ref{Int64},
+                                     cperm::Ptr{Int64}, liw::Ref{Int64}, iw::Ptr{Int64},
+                                     ldw::Ref{Int64}, dw::Ptr{Float128}, icntl::Ptr{Int64},
+                                     info::Ptr{Int64})::Cvoid
+end
+
+function mc64br(::Type{Float32}, ::Type{Int32}, n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
+  @ccall libhsl_subset.mc64b_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                              a::Ptr{Float32}, iperm::Ptr{Int32}, num::Ref{Int32},
+                              jperm::Ptr{Int32}, pr::Ptr{Int32}, q::Ptr{Int32}, l::Ptr{Int32},
+                              d::Ptr{Float32})::Cvoid
+end
+
+function mc64br(::Type{Float64}, ::Type{Int32}, n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
+  @ccall libhsl_subset.mc64bd_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float64}, iperm::Ptr{Int32}, num::Ref{Int32},
+                               jperm::Ptr{Int32}, pr::Ptr{Int32}, q::Ptr{Int32}, l::Ptr{Int32},
+                               d::Ptr{Float64})::Cvoid
+end
+
+function mc64br(::Type{Float128}, ::Type{Int32}, n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
+  @ccall libhsl_subset.mc64bq_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float128}, iperm::Ptr{Int32}, num::Ref{Int32},
+                               jperm::Ptr{Int32}, pr::Ptr{Int32}, q::Ptr{Int32}, l::Ptr{Int32},
+                               d::Ptr{Float128})::Cvoid
+end
+
+function mc64br(::Type{Float32}, ::Type{Int64}, n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
+  @ccall libhsl_subset_64.mc64b_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                    a::Ptr{Float32}, iperm::Ptr{Int64}, num::Ref{Int64},
+                                    jperm::Ptr{Int64}, pr::Ptr{Int64}, q::Ptr{Int64}, l::Ptr{Int64},
+                                    d::Ptr{Float32})::Cvoid
+end
+
+function mc64br(::Type{Float64}, ::Type{Int64}, n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
+  @ccall libhsl_subset_64.mc64bd_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                     a::Ptr{Float64}, iperm::Ptr{Int64}, num::Ref{Int64},
+                                     jperm::Ptr{Int64}, pr::Ptr{Int64}, q::Ptr{Int64},
+                                     l::Ptr{Int64}, d::Ptr{Float64})::Cvoid
+end
+
+function mc64br(::Type{Float128}, ::Type{Int64}, n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
+  @ccall libhsl_subset_64.mc64bq_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                     a::Ptr{Float128}, iperm::Ptr{Int64}, num::Ref{Int64},
+                                     jperm::Ptr{Int64}, pr::Ptr{Int64}, q::Ptr{Int64},
+                                     l::Ptr{Int64}, d::Ptr{Float128})::Cvoid
+end
+
+function mc64dr(::Type{Float32}, ::Type{Int32}, i, n, q, d, l, iway)
+  @ccall libhsl_subset.mc64d_(i::Ref{Int32}, n::Ref{Int32}, q::Ptr{Int32}, d::Ptr{Float32},
+                              l::Ptr{Int32}, iway::Ref{Int32})::Cvoid
+end
+
+function mc64dr(::Type{Float64}, ::Type{Int32}, i, n, q, d, l, iway)
+  @ccall libhsl_subset.mc64dd_(i::Ref{Int32}, n::Ref{Int32}, q::Ptr{Int32}, d::Ptr{Float64},
+                               l::Ptr{Int32}, iway::Ref{Int32})::Cvoid
+end
+
+function mc64dr(::Type{Float128}, ::Type{Int32}, i, n, q, d, l, iway)
+  @ccall libhsl_subset.mc64dq_(i::Ref{Int32}, n::Ref{Int32}, q::Ptr{Int32}, d::Ptr{Float128},
+                               l::Ptr{Int32}, iway::Ref{Int32})::Cvoid
+end
+
+function mc64dr(::Type{Float32}, ::Type{Int64}, i, n, q, d, l, iway)
+  @ccall libhsl_subset_64.mc64d_64_(i::Ref{Int64}, n::Ref{Int64}, q::Ptr{Int64}, d::Ptr{Float32},
+                                    l::Ptr{Int64}, iway::Ref{Int64})::Cvoid
+end
+
+function mc64dr(::Type{Float64}, ::Type{Int64}, i, n, q, d, l, iway)
+  @ccall libhsl_subset_64.mc64dd_64_(i::Ref{Int64}, n::Ref{Int64}, q::Ptr{Int64}, d::Ptr{Float64},
+                                     l::Ptr{Int64}, iway::Ref{Int64})::Cvoid
+end
+
+function mc64dr(::Type{Float128}, ::Type{Int64}, i, n, q, d, l, iway)
+  @ccall libhsl_subset_64.mc64dq_64_(i::Ref{Int64}, n::Ref{Int64}, q::Ptr{Int64}, d::Ptr{Float128},
+                                     l::Ptr{Int64}, iway::Ref{Int64})::Cvoid
+end
+
+function mc64er(::Type{Float32}, ::Type{Int32}, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset.mc64e_(qlen::Ref{Int32}, n::Ref{Int32}, q::Ptr{Int32}, d::Ptr{Float32},
+                              l::Ptr{Int32}, iway::Ref{Int32})::Cvoid
+end
+
+function mc64er(::Type{Float64}, ::Type{Int32}, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset.mc64ed_(qlen::Ref{Int32}, n::Ref{Int32}, q::Ptr{Int32}, d::Ptr{Float64},
+                               l::Ptr{Int32}, iway::Ref{Int32})::Cvoid
+end
+
+function mc64er(::Type{Float128}, ::Type{Int32}, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset.mc64eq_(qlen::Ref{Int32}, n::Ref{Int32}, q::Ptr{Int32}, d::Ptr{Float128},
+                               l::Ptr{Int32}, iway::Ref{Int32})::Cvoid
+end
+
+function mc64er(::Type{Float32}, ::Type{Int64}, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset_64.mc64e_64_(qlen::Ref{Int64}, n::Ref{Int64}, q::Ptr{Int64}, d::Ptr{Float32},
+                                    l::Ptr{Int64}, iway::Ref{Int64})::Cvoid
+end
+
+function mc64er(::Type{Float64}, ::Type{Int64}, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset_64.mc64ed_64_(qlen::Ref{Int64}, n::Ref{Int64}, q::Ptr{Int64},
+                                     d::Ptr{Float64}, l::Ptr{Int64}, iway::Ref{Int64})::Cvoid
+end
+
+function mc64er(::Type{Float128}, ::Type{Int64}, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset_64.mc64eq_64_(qlen::Ref{Int64}, n::Ref{Int64}, q::Ptr{Int64},
+                                     d::Ptr{Float128}, l::Ptr{Int64}, iway::Ref{Int64})::Cvoid
+end
+
+function mc64fr(::Type{Float32}, ::Type{Int32}, pos0, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset.mc64f_(pos0::Ref{Int32}, qlen::Ref{Int32}, n::Ref{Int32}, q::Ptr{Int32},
+                              d::Ptr{Float32}, l::Ptr{Int32}, iway::Ref{Int32})::Cvoid
+end
+
+function mc64fr(::Type{Float64}, ::Type{Int32}, pos0, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset.mc64fd_(pos0::Ref{Int32}, qlen::Ref{Int32}, n::Ref{Int32}, q::Ptr{Int32},
+                               d::Ptr{Float64}, l::Ptr{Int32}, iway::Ref{Int32})::Cvoid
+end
+
+function mc64fr(::Type{Float128}, ::Type{Int32}, pos0, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset.mc64fq_(pos0::Ref{Int32}, qlen::Ref{Int32}, n::Ref{Int32}, q::Ptr{Int32},
+                               d::Ptr{Float128}, l::Ptr{Int32}, iway::Ref{Int32})::Cvoid
+end
+
+function mc64fr(::Type{Float32}, ::Type{Int64}, pos0, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset_64.mc64f_64_(pos0::Ref{Int64}, qlen::Ref{Int64}, n::Ref{Int64},
+                                    q::Ptr{Int64}, d::Ptr{Float32}, l::Ptr{Int64},
+                                    iway::Ref{Int64})::Cvoid
+end
+
+function mc64fr(::Type{Float64}, ::Type{Int64}, pos0, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset_64.mc64fd_64_(pos0::Ref{Int64}, qlen::Ref{Int64}, n::Ref{Int64},
+                                     q::Ptr{Int64}, d::Ptr{Float64}, l::Ptr{Int64},
+                                     iway::Ref{Int64})::Cvoid
+end
+
+function mc64fr(::Type{Float128}, ::Type{Int64}, pos0, qlen, n, q, d, l, iway)
+  @ccall libhsl_subset_64.mc64fq_64_(pos0::Ref{Int64}, qlen::Ref{Int64}, n::Ref{Int64},
+                                     q::Ptr{Int64}, d::Ptr{Float128}, l::Ptr{Int64},
+                                     iway::Ref{Int64})::Cvoid
+end
+
+function mc64rr(::Type{Float32}, ::Type{Int32}, n, ne, ip, irn, a)
+  @ccall libhsl_subset.mc64r_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                              a::Ptr{Float32})::Cvoid
+end
+
+function mc64rr(::Type{Float64}, ::Type{Int32}, n, ne, ip, irn, a)
+  @ccall libhsl_subset.mc64rd_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float64})::Cvoid
+end
+
+function mc64rr(::Type{Float128}, ::Type{Int32}, n, ne, ip, irn, a)
+  @ccall libhsl_subset.mc64rq_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float128})::Cvoid
+end
+
+function mc64rr(::Type{Float32}, ::Type{Int64}, n, ne, ip, irn, a)
+  @ccall libhsl_subset_64.mc64r_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                    a::Ptr{Float32})::Cvoid
+end
+
+function mc64rr(::Type{Float64}, ::Type{Int64}, n, ne, ip, irn, a)
+  @ccall libhsl_subset_64.mc64rd_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                     a::Ptr{Float64})::Cvoid
+end
+
+function mc64rr(::Type{Float128}, ::Type{Int64}, n, ne, ip, irn, a)
+  @ccall libhsl_subset_64.mc64rq_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                     a::Ptr{Float128})::Cvoid
+end
+
+function mc64sr(::Type{Float32}, ::Type{Int32}, n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh,
+                fc, iw, iw4)
+  @ccall libhsl_subset.mc64s_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                              a::Ptr{Float32}, iperm::Ptr{Int32}, numx::Ref{Int32}, w::Ptr{Int32},
+                              len::Ptr{Int32}, lenl::Ptr{Int32}, lenh::Ptr{Int32}, fc::Ptr{Int32},
+                              iw::Ptr{Int32}, iw4::Ptr{Int32})::Cvoid
+end
+
+function mc64sr(::Type{Float64}, ::Type{Int32}, n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh,
+                fc, iw, iw4)
+  @ccall libhsl_subset.mc64sd_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float64}, iperm::Ptr{Int32}, numx::Ref{Int32}, w::Ptr{Int32},
+                               len::Ptr{Int32}, lenl::Ptr{Int32}, lenh::Ptr{Int32}, fc::Ptr{Int32},
+                               iw::Ptr{Int32}, iw4::Ptr{Int32})::Cvoid
+end
+
+function mc64sr(::Type{Float128}, ::Type{Int32}, n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh,
+                fc, iw, iw4)
+  @ccall libhsl_subset.mc64sq_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float128}, iperm::Ptr{Int32}, numx::Ref{Int32}, w::Ptr{Int32},
+                               len::Ptr{Int32}, lenl::Ptr{Int32}, lenh::Ptr{Int32}, fc::Ptr{Int32},
+                               iw::Ptr{Int32}, iw4::Ptr{Int32})::Cvoid
+end
+
+function mc64sr(::Type{Float32}, ::Type{Int64}, n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh,
+                fc, iw, iw4)
+  @ccall libhsl_subset_64.mc64s_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                    a::Ptr{Float32}, iperm::Ptr{Int64}, numx::Ref{Int64},
+                                    w::Ptr{Int64}, len::Ptr{Int64}, lenl::Ptr{Int64},
+                                    lenh::Ptr{Int64}, fc::Ptr{Int64}, iw::Ptr{Int64},
+                                    iw4::Ptr{Int64})::Cvoid
+end
+
+function mc64sr(::Type{Float64}, ::Type{Int64}, n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh,
+                fc, iw, iw4)
+  @ccall libhsl_subset_64.mc64sd_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                     a::Ptr{Float64}, iperm::Ptr{Int64}, numx::Ref{Int64},
+                                     w::Ptr{Int64}, len::Ptr{Int64}, lenl::Ptr{Int64},
+                                     lenh::Ptr{Int64}, fc::Ptr{Int64}, iw::Ptr{Int64},
+                                     iw4::Ptr{Int64})::Cvoid
+end
+
+function mc64sr(::Type{Float128}, ::Type{Int64}, n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh,
+                fc, iw, iw4)
+  @ccall libhsl_subset_64.mc64sq_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                     a::Ptr{Float128}, iperm::Ptr{Int64}, numx::Ref{Int64},
+                                     w::Ptr{Int64}, len::Ptr{Int64}, lenl::Ptr{Int64},
+                                     lenh::Ptr{Int64}, fc::Ptr{Int64}, iw::Ptr{Int64},
+                                     iw4::Ptr{Int64})::Cvoid
+end
+
+function mc64qr(::Type{Float32}, ::Type{Int32}, ip, lenl, lenh, w, wlen, a, nval, val)
+  @ccall libhsl_subset.mc64q_(ip::Ptr{Int32}, lenl::Ptr{Int32}, lenh::Ptr{Int32}, w::Ptr{Int32},
+                              wlen::Ref{Int32}, a::Ptr{Float32}, nval::Ref{Int32},
+                              val::Ref{Float32})::Cvoid
+end
+
+function mc64qr(::Type{Float64}, ::Type{Int32}, ip, lenl, lenh, w, wlen, a, nval, val)
+  @ccall libhsl_subset.mc64qd_(ip::Ptr{Int32}, lenl::Ptr{Int32}, lenh::Ptr{Int32}, w::Ptr{Int32},
+                               wlen::Ref{Int32}, a::Ptr{Float64}, nval::Ref{Int32},
+                               val::Ref{Float64})::Cvoid
+end
+
+function mc64qr(::Type{Float128}, ::Type{Int32}, ip, lenl, lenh, w, wlen, a, nval, val)
+  @ccall libhsl_subset.mc64qq_(ip::Ptr{Int32}, lenl::Ptr{Int32}, lenh::Ptr{Int32}, w::Ptr{Int32},
+                               wlen::Ref{Int32}, a::Ptr{Float128}, nval::Ref{Int32},
+                               val::Ref{Float128})::Cvoid
+end
+
+function mc64qr(::Type{Float32}, ::Type{Int64}, ip, lenl, lenh, w, wlen, a, nval, val)
+  @ccall libhsl_subset_64.mc64q_64_(ip::Ptr{Int64}, lenl::Ptr{Int64}, lenh::Ptr{Int64},
+                                    w::Ptr{Int64}, wlen::Ref{Int64}, a::Ptr{Float32},
+                                    nval::Ref{Int64}, val::Ref{Float32})::Cvoid
+end
+
+function mc64qr(::Type{Float64}, ::Type{Int64}, ip, lenl, lenh, w, wlen, a, nval, val)
+  @ccall libhsl_subset_64.mc64qd_64_(ip::Ptr{Int64}, lenl::Ptr{Int64}, lenh::Ptr{Int64},
+                                     w::Ptr{Int64}, wlen::Ref{Int64}, a::Ptr{Float64},
+                                     nval::Ref{Int64}, val::Ref{Float64})::Cvoid
+end
+
+function mc64qr(::Type{Float128}, ::Type{Int64}, ip, lenl, lenh, w, wlen, a, nval, val)
+  @ccall libhsl_subset_64.mc64qq_64_(ip::Ptr{Int64}, lenl::Ptr{Int64}, lenh::Ptr{Int64},
+                                     w::Ptr{Int64}, wlen::Ref{Int64}, a::Ptr{Float128},
+                                     nval::Ref{Int64}, val::Ref{Float128})::Cvoid
+end
+
+function mc64ur(::Type{Float32}, ::Type{Int32}, id, mod, n, irn, lirn, ip, lenc, fc, iperm, num,
+                numx, pr, arp, cv, out)
+  @ccall libhsl_subset.mc64u_(id::Ref{Int32}, mod::Ref{Int32}, n::Ref{Int32}, irn::Ptr{Int32},
+                              lirn::Ref{Int32}, ip::Ptr{Int32}, lenc::Ptr{Int32}, fc::Ptr{Int32},
+                              iperm::Ptr{Int32}, num::Ref{Int32}, numx::Ref{Int32}, pr::Ptr{Int32},
+                              arp::Ptr{Int32}, cv::Ptr{Int32}, out::Ptr{Int32})::Cvoid
+end
+
+function mc64ur(::Type{Float64}, ::Type{Int32}, id, mod, n, irn, lirn, ip, lenc, fc, iperm, num,
+                numx, pr, arp, cv, out)
+  @ccall libhsl_subset.mc64ud_(id::Ref{Int32}, mod::Ref{Int32}, n::Ref{Int32}, irn::Ptr{Int32},
+                               lirn::Ref{Int32}, ip::Ptr{Int32}, lenc::Ptr{Int32}, fc::Ptr{Int32},
+                               iperm::Ptr{Int32}, num::Ref{Int32}, numx::Ref{Int32}, pr::Ptr{Int32},
+                               arp::Ptr{Int32}, cv::Ptr{Int32}, out::Ptr{Int32})::Cvoid
+end
+
+function mc64ur(::Type{Float128}, ::Type{Int32}, id, mod, n, irn, lirn, ip, lenc, fc, iperm, num,
+                numx, pr, arp, cv, out)
+  @ccall libhsl_subset.mc64uq_(id::Ref{Int32}, mod::Ref{Int32}, n::Ref{Int32}, irn::Ptr{Int32},
+                               lirn::Ref{Int32}, ip::Ptr{Int32}, lenc::Ptr{Int32}, fc::Ptr{Int32},
+                               iperm::Ptr{Int32}, num::Ref{Int32}, numx::Ref{Int32}, pr::Ptr{Int32},
+                               arp::Ptr{Int32}, cv::Ptr{Int32}, out::Ptr{Int32})::Cvoid
+end
+
+function mc64ur(::Type{Float32}, ::Type{Int64}, id, mod, n, irn, lirn, ip, lenc, fc, iperm, num,
+                numx, pr, arp, cv, out)
+  @ccall libhsl_subset_64.mc64u_64_(id::Ref{Int64}, mod::Ref{Int64}, n::Ref{Int64}, irn::Ptr{Int64},
+                                    lirn::Ref{Int64}, ip::Ptr{Int64}, lenc::Ptr{Int64},
+                                    fc::Ptr{Int64}, iperm::Ptr{Int64}, num::Ref{Int64},
+                                    numx::Ref{Int64}, pr::Ptr{Int64}, arp::Ptr{Int64},
+                                    cv::Ptr{Int64}, out::Ptr{Int64})::Cvoid
+end
+
+function mc64ur(::Type{Float64}, ::Type{Int64}, id, mod, n, irn, lirn, ip, lenc, fc, iperm, num,
+                numx, pr, arp, cv, out)
+  @ccall libhsl_subset_64.mc64ud_64_(id::Ref{Int64}, mod::Ref{Int64}, n::Ref{Int64},
+                                     irn::Ptr{Int64}, lirn::Ref{Int64}, ip::Ptr{Int64},
+                                     lenc::Ptr{Int64}, fc::Ptr{Int64}, iperm::Ptr{Int64},
+                                     num::Ref{Int64}, numx::Ref{Int64}, pr::Ptr{Int64},
+                                     arp::Ptr{Int64}, cv::Ptr{Int64}, out::Ptr{Int64})::Cvoid
+end
+
+function mc64ur(::Type{Float128}, ::Type{Int64}, id, mod, n, irn, lirn, ip, lenc, fc, iperm, num,
+                numx, pr, arp, cv, out)
+  @ccall libhsl_subset_64.mc64uq_64_(id::Ref{Int64}, mod::Ref{Int64}, n::Ref{Int64},
+                                     irn::Ptr{Int64}, lirn::Ref{Int64}, ip::Ptr{Int64},
+                                     lenc::Ptr{Int64}, fc::Ptr{Int64}, iperm::Ptr{Int64},
+                                     num::Ref{Int64}, numx::Ref{Int64}, pr::Ptr{Int64},
+                                     arp::Ptr{Int64}, cv::Ptr{Int64}, out::Ptr{Int64})::Cvoid
+end
+
+function mc64wr(::Type{Float32}, ::Type{Int32}, n, ne, ip, irn, a, iperm, num, jperm, out, pr, q, l,
+                u, d)
+  @ccall libhsl_subset.mc64w_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                              a::Ptr{Float32}, iperm::Ptr{Int32}, num::Ref{Int32},
+                              jperm::Ptr{Int32}, out::Ptr{Int32}, pr::Ptr{Int32}, q::Ptr{Int32},
+                              l::Ptr{Int32}, u::Ptr{Float32}, d::Ptr{Float32})::Cvoid
+end
+
+function mc64wr(::Type{Float64}, ::Type{Int32}, n, ne, ip, irn, a, iperm, num, jperm, out, pr, q, l,
+                u, d)
+  @ccall libhsl_subset.mc64wd_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float64}, iperm::Ptr{Int32}, num::Ref{Int32},
+                               jperm::Ptr{Int32}, out::Ptr{Int32}, pr::Ptr{Int32}, q::Ptr{Int32},
+                               l::Ptr{Int32}, u::Ptr{Float64}, d::Ptr{Float64})::Cvoid
+end
+
+function mc64wr(::Type{Float128}, ::Type{Int32}, n, ne, ip, irn, a, iperm, num, jperm, out, pr, q,
+                l, u, d)
+  @ccall libhsl_subset.mc64wq_(n::Ref{Int32}, ne::Ref{Int32}, ip::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float128}, iperm::Ptr{Int32}, num::Ref{Int32},
+                               jperm::Ptr{Int32}, out::Ptr{Int32}, pr::Ptr{Int32}, q::Ptr{Int32},
+                               l::Ptr{Int32}, u::Ptr{Float128}, d::Ptr{Float128})::Cvoid
+end
+
+function mc64wr(::Type{Float32}, ::Type{Int64}, n, ne, ip, irn, a, iperm, num, jperm, out, pr, q, l,
+                u, d)
+  @ccall libhsl_subset_64.mc64w_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                    a::Ptr{Float32}, iperm::Ptr{Int64}, num::Ref{Int64},
+                                    jperm::Ptr{Int64}, out::Ptr{Int64}, pr::Ptr{Int64},
+                                    q::Ptr{Int64}, l::Ptr{Int64}, u::Ptr{Float32},
+                                    d::Ptr{Float32})::Cvoid
+end
+
+function mc64wr(::Type{Float64}, ::Type{Int64}, n, ne, ip, irn, a, iperm, num, jperm, out, pr, q, l,
+                u, d)
+  @ccall libhsl_subset_64.mc64wd_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                     a::Ptr{Float64}, iperm::Ptr{Int64}, num::Ref{Int64},
+                                     jperm::Ptr{Int64}, out::Ptr{Int64}, pr::Ptr{Int64},
+                                     q::Ptr{Int64}, l::Ptr{Int64}, u::Ptr{Float64},
+                                     d::Ptr{Float64})::Cvoid
+end
+
+function mc64wr(::Type{Float128}, ::Type{Int64}, n, ne, ip, irn, a, iperm, num, jperm, out, pr, q,
+                l, u, d)
+  @ccall libhsl_subset_64.mc64wq_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
+                                     a::Ptr{Float128}, iperm::Ptr{Int64}, num::Ref{Int64},
+                                     jperm::Ptr{Int64}, out::Ptr{Int64}, pr::Ptr{Int64},
+                                     q::Ptr{Int64}, l::Ptr{Int64}, u::Ptr{Float128},
+                                     d::Ptr{Float128})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc71.jl b/src/Fortran/hsl_subset/mc71.jl
new file mode 100644
index 0000000..bb0e4a5
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc71.jl
@@ -0,0 +1,33 @@
+function mc71ar(::Type{Float32}, ::Type{Int32}, n, kase, x, est, w, iw, keep)
+  @ccall libhsl_subset.mc71a_(n::Ref{Int32}, kase::Ref{Int32}, x::Ptr{Float32}, est::Ref{Float32},
+                              w::Ptr{Float32}, iw::Ptr{Int32}, keep::Ptr{Int32})::Cvoid
+end
+
+function mc71ar(::Type{Float64}, ::Type{Int32}, n, kase, x, est, w, iw, keep)
+  @ccall libhsl_subset.mc71ad_(n::Ref{Int32}, kase::Ref{Int32}, x::Ptr{Float64}, est::Ref{Float64},
+                               w::Ptr{Float64}, iw::Ptr{Int32}, keep::Ptr{Int32})::Cvoid
+end
+
+function mc71ar(::Type{Float128}, ::Type{Int32}, n, kase, x, est, w, iw, keep)
+  @ccall libhsl_subset.mc71aq_(n::Ref{Int32}, kase::Ref{Int32}, x::Ptr{Float128},
+                               est::Ref{Float128}, w::Ptr{Float128}, iw::Ptr{Int32},
+                               keep::Ptr{Int32})::Cvoid
+end
+
+function mc71ar(::Type{Float32}, ::Type{Int64}, n, kase, x, est, w, iw, keep)
+  @ccall libhsl_subset_64.mc71a_64_(n::Ref{Int64}, kase::Ref{Int64}, x::Ptr{Float32},
+                                    est::Ref{Float32}, w::Ptr{Float32}, iw::Ptr{Int64},
+                                    keep::Ptr{Int64})::Cvoid
+end
+
+function mc71ar(::Type{Float64}, ::Type{Int64}, n, kase, x, est, w, iw, keep)
+  @ccall libhsl_subset_64.mc71ad_64_(n::Ref{Int64}, kase::Ref{Int64}, x::Ptr{Float64},
+                                     est::Ref{Float64}, w::Ptr{Float64}, iw::Ptr{Int64},
+                                     keep::Ptr{Int64})::Cvoid
+end
+
+function mc71ar(::Type{Float128}, ::Type{Int64}, n, kase, x, est, w, iw, keep)
+  @ccall libhsl_subset_64.mc71aq_64_(n::Ref{Int64}, kase::Ref{Int64}, x::Ptr{Float128},
+                                     est::Ref{Float128}, w::Ptr{Float128}, iw::Ptr{Int64},
+                                     keep::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mc77.jl b/src/Fortran/hsl_subset/mc77.jl
new file mode 100644
index 0000000..4505d91
--- /dev/null
+++ b/src/Fortran/hsl_subset/mc77.jl
@@ -0,0 +1,834 @@
+function mc77ir(::Type{Float32}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.mc77i_(icntl::Ptr{Int32}, cntl::Ptr{Float32})::Cvoid
+end
+
+function mc77ir(::Type{Float64}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.mc77id_(icntl::Ptr{Int32}, cntl::Ptr{Float64})::Cvoid
+end
+
+function mc77ir(::Type{Float128}, ::Type{Int32}, icntl, cntl)
+  @ccall libhsl_subset.mc77iq_(icntl::Ptr{Int32}, cntl::Ptr{Float128})::Cvoid
+end
+
+function mc77ir(::Type{Float32}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.mc77i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32})::Cvoid
+end
+
+function mc77ir(::Type{Float64}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.mc77id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64})::Cvoid
+end
+
+function mc77ir(::Type{Float128}, ::Type{Int64}, icntl, cntl)
+  @ccall libhsl_subset_64.mc77iq_64_(icntl::Ptr{Int64}, cntl::Ptr{Float128})::Cvoid
+end
+
+function mc77ar(::Type{Float32}, ::Type{Int32}, job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.mc77a_(job::Ref{Int32}, m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32},
+                              jcst::Ptr{Int32}, irn::Ptr{Int32}, a::Ptr{Float32}, iw::Ptr{Int32},
+                              liw::Ref{Int32}, dw::Ptr{Float32}, ldw::Ref{Int32}, icntl::Ptr{Int32},
+                              cntl::Ptr{Float32}, info::Ptr{Int32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc77ar(::Type{Float64}, ::Type{Int32}, job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.mc77ad_(job::Ref{Int32}, m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32},
+                               jcst::Ptr{Int32}, irn::Ptr{Int32}, a::Ptr{Float64}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, dw::Ptr{Float64}, ldw::Ref{Int32},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float64}, info::Ptr{Int32},
+                               rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc77ar(::Type{Float128}, ::Type{Int32}, job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.mc77aq_(job::Ref{Int32}, m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32},
+                               jcst::Ptr{Int32}, irn::Ptr{Int32}, a::Ptr{Float128}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, dw::Ptr{Float128}, ldw::Ref{Int32},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float128}, info::Ptr{Int32},
+                               rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc77ar(::Type{Float32}, ::Type{Int64}, job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.mc77a_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
+                                    jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float32},
+                                    iw::Ptr{Int64}, liw::Ref{Int64}, dw::Ptr{Float32},
+                                    ldw::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
+                                    info::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc77ar(::Type{Float64}, ::Type{Int64}, job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.mc77ad_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
+                                     jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float64},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, dw::Ptr{Float64},
+                                     ldw::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
+                                     info::Ptr{Int64}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc77ar(::Type{Float128}, ::Type{Int64}, job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.mc77aq_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
+                                     jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float128},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, dw::Ptr{Float128},
+                                     ldw::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     info::Ptr{Int64}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc77nr(::Type{Float32}, ::Type{Int32}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77n_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32},
+                              irn::Ptr{Int32}, a::Ptr{Float32}, d::Ptr{Float32}, e::Ptr{Float32},
+                              check::Ref{Int32}, thresh::Ref{Float32}, err::Ptr{Float32},
+                              maxit::Ref{Int32}, niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32},
+                              dw::Ptr{Float32}, ew::Ptr{Float32}, info::Ref{Int32})::Cvoid
+end
+
+function mc77nr(::Type{Float64}, ::Type{Int32}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77nd_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float64}, d::Ptr{Float64}, e::Ptr{Float64},
+                               check::Ref{Int32}, thresh::Ref{Float64}, err::Ptr{Float64},
+                               maxit::Ref{Int32}, niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32},
+                               dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int32})::Cvoid
+end
+
+function mc77nr(::Type{Float128}, ::Type{Int32}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77nq_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float128}, d::Ptr{Float128},
+                               e::Ptr{Float128}, check::Ref{Int32}, thresh::Ref{Float128},
+                               err::Ptr{Float128}, maxit::Ref{Int32}, niter::Ref{Int32},
+                               iw::Ptr{Int32}, jw::Ptr{Int32}, dw::Ptr{Float128}, ew::Ptr{Float128},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77nr(::Type{Float32}, ::Type{Int64}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77n_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
+                                    irn::Ptr{Int64}, a::Ptr{Float32}, d::Ptr{Float32},
+                                    e::Ptr{Float32}, check::Ref{Int64}, thresh::Ref{Float32},
+                                    err::Ptr{Float32}, maxit::Ref{Int64}, niter::Ref{Int64},
+                                    iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float32},
+                                    ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77nr(::Type{Float64}, ::Type{Int64}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77nd_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
+                                     jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float64},
+                                     d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Int64},
+                                     thresh::Ref{Float64}, err::Ptr{Float64}, maxit::Ref{Int64},
+                                     niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
+                                     dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77nr(::Type{Float128}, ::Type{Int64}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77nq_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
+                                     jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float128},
+                                     d::Ptr{Float128}, e::Ptr{Float128}, check::Ref{Int64},
+                                     thresh::Ref{Float128}, err::Ptr{Float128}, maxit::Ref{Int64},
+                                     niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
+                                     dw::Ptr{Float128}, ew::Ptr{Float128}, info::Ref{Int64})::Cvoid
+end
+
+function mc77or(::Type{Float32}, ::Type{Int32}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77o_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32},
+                              irn::Ptr{Int32}, a::Ptr{Float32}, d::Ptr{Float32}, e::Ptr{Float32},
+                              check::Ref{Int32}, thresh::Ref{Float32}, err::Ptr{Float32},
+                              maxit::Ref{Int32}, niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32},
+                              dw::Ptr{Float32}, ew::Ptr{Float32}, info::Ref{Int32})::Cvoid
+end
+
+function mc77or(::Type{Float64}, ::Type{Int32}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77od_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float64}, d::Ptr{Float64}, e::Ptr{Float64},
+                               check::Ref{Int32}, thresh::Ref{Float64}, err::Ptr{Float64},
+                               maxit::Ref{Int32}, niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32},
+                               dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int32})::Cvoid
+end
+
+function mc77or(::Type{Float128}, ::Type{Int32}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77oq_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float128}, d::Ptr{Float128},
+                               e::Ptr{Float128}, check::Ref{Int32}, thresh::Ref{Float128},
+                               err::Ptr{Float128}, maxit::Ref{Int32}, niter::Ref{Int32},
+                               iw::Ptr{Int32}, jw::Ptr{Int32}, dw::Ptr{Float128}, ew::Ptr{Float128},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77or(::Type{Float32}, ::Type{Int64}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77o_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
+                                    irn::Ptr{Int64}, a::Ptr{Float32}, d::Ptr{Float32},
+                                    e::Ptr{Float32}, check::Ref{Int64}, thresh::Ref{Float32},
+                                    err::Ptr{Float32}, maxit::Ref{Int64}, niter::Ref{Int64},
+                                    iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float32},
+                                    ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77or(::Type{Float64}, ::Type{Int64}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77od_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
+                                     jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float64},
+                                     d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Int64},
+                                     thresh::Ref{Float64}, err::Ptr{Float64}, maxit::Ref{Int64},
+                                     niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
+                                     dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77or(::Type{Float128}, ::Type{Int64}, m, n, nnz, jcst, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77oq_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
+                                     jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float128},
+                                     d::Ptr{Float128}, e::Ptr{Float128}, check::Ref{Int64},
+                                     thresh::Ref{Float128}, err::Ptr{Float128}, maxit::Ref{Int64},
+                                     niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
+                                     dw::Ptr{Float128}, ew::Ptr{Float128}, info::Ref{Int64})::Cvoid
+end
+
+function mc77pr(::Type{Float32}, ::Type{Int32}, n, nnz, jcst, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77p_(n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32}, irn::Ptr{Int32},
+                              a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Int32},
+                              thresh::Ref{Float32}, err::Ref{Float32}, maxit::Ref{Int32},
+                              niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float32},
+                              info::Ref{Int32})::Cvoid
+end
+
+function mc77pr(::Type{Float64}, ::Type{Int32}, n, nnz, jcst, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77pd_(n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Int32},
+                               thresh::Ref{Float64}, err::Ref{Float64}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float64},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77pr(::Type{Float128}, ::Type{Int32}, n, nnz, jcst, irn, a, de, check, thresh, err,
+                maxit, niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77pq_(n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float128}, de::Ptr{Float128}, check::Ref{Int32},
+                               thresh::Ref{Float128}, err::Ref{Float128}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float128},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77pr(::Type{Float32}, ::Type{Int64}, n, nnz, jcst, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77p_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
+                                    irn::Ptr{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
+                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
+                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77pr(::Type{Float64}, ::Type{Int64}, n, nnz, jcst, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77pd_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
+                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77pr(::Type{Float128}, ::Type{Int64}, n, nnz, jcst, irn, a, de, check, thresh, err,
+                maxit, niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77pq_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float128}, de::Ptr{Float128},
+                                     check::Ref{Int64}, thresh::Ref{Float128}, err::Ref{Float128},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float128}, info::Ref{Int64})::Cvoid
+end
+
+function mc77qr(::Type{Float32}, ::Type{Int32}, n, nnz, jcst, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77q_(n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32}, irn::Ptr{Int32},
+                              a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Int32},
+                              thresh::Ref{Float32}, err::Ref{Float32}, maxit::Ref{Int32},
+                              niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float32},
+                              info::Ref{Int32})::Cvoid
+end
+
+function mc77qr(::Type{Float64}, ::Type{Int32}, n, nnz, jcst, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77qd_(n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Int32},
+                               thresh::Ref{Float64}, err::Ref{Float64}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float64},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77qr(::Type{Float128}, ::Type{Int32}, n, nnz, jcst, irn, a, de, check, thresh, err,
+                maxit, niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77qq_(n::Ref{Int32}, nnz::Ref{Int32}, jcst::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float128}, de::Ptr{Float128}, check::Ref{Int32},
+                               thresh::Ref{Float128}, err::Ref{Float128}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float128},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77qr(::Type{Float32}, ::Type{Int64}, n, nnz, jcst, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77q_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
+                                    irn::Ptr{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
+                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
+                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77qr(::Type{Float64}, ::Type{Int64}, n, nnz, jcst, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77qd_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
+                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77qr(::Type{Float128}, ::Type{Int64}, n, nnz, jcst, irn, a, de, check, thresh, err,
+                maxit, niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77qq_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float128}, de::Ptr{Float128},
+                                     check::Ref{Int64}, thresh::Ref{Float128}, err::Ref{Float128},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float128}, info::Ref{Int64})::Cvoid
+end
+
+function mc77br(::Type{Float32}, ::Type{Int32}, job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.mc77b_(job::Ref{Int32}, m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32},
+                              irn::Ptr{Int32}, jcn::Ptr{Int32}, a::Ptr{Float32}, iw::Ptr{Int32},
+                              liw::Ref{Int32}, dw::Ptr{Float32}, ldw::Ref{Int32}, icntl::Ptr{Int32},
+                              cntl::Ptr{Float32}, info::Ptr{Int32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc77br(::Type{Float64}, ::Type{Int32}, job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.mc77bd_(job::Ref{Int32}, m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32},
+                               irn::Ptr{Int32}, jcn::Ptr{Int32}, a::Ptr{Float64}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, dw::Ptr{Float64}, ldw::Ref{Int32},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float64}, info::Ptr{Int32},
+                               rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc77br(::Type{Float128}, ::Type{Int32}, job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset.mc77bq_(job::Ref{Int32}, m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32},
+                               irn::Ptr{Int32}, jcn::Ptr{Int32}, a::Ptr{Float128}, iw::Ptr{Int32},
+                               liw::Ref{Int32}, dw::Ptr{Float128}, ldw::Ref{Int32},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float128}, info::Ptr{Int32},
+                               rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc77br(::Type{Float32}, ::Type{Int64}, job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.mc77b_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
+                                    irn::Ptr{Int64}, jcn::Ptr{Int64}, a::Ptr{Float32},
+                                    iw::Ptr{Int64}, liw::Ref{Int64}, dw::Ptr{Float32},
+                                    ldw::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
+                                    info::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc77br(::Type{Float64}, ::Type{Int64}, job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.mc77bd_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
+                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, a::Ptr{Float64},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, dw::Ptr{Float64},
+                                     ldw::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
+                                     info::Ptr{Int64}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc77br(::Type{Float128}, ::Type{Int64}, job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw,
+                icntl, cntl, info, rinfo)
+  @ccall libhsl_subset_64.mc77bq_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
+                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, a::Ptr{Float128},
+                                     iw::Ptr{Int64}, liw::Ref{Int64}, dw::Ptr{Float128},
+                                     ldw::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     info::Ptr{Int64}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc77rr(::Type{Float32}, ::Type{Int32}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77r_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32},
+                              irn::Ptr{Int32}, a::Ptr{Float32}, d::Ptr{Float32}, e::Ptr{Float32},
+                              check::Ref{Int32}, thresh::Ref{Float32}, err::Ptr{Float32},
+                              maxit::Ref{Int32}, niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32},
+                              dw::Ptr{Float32}, ew::Ptr{Float32}, info::Ref{Int32})::Cvoid
+end
+
+function mc77rr(::Type{Float64}, ::Type{Int32}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77rd_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float64}, d::Ptr{Float64}, e::Ptr{Float64},
+                               check::Ref{Int32}, thresh::Ref{Float64}, err::Ptr{Float64},
+                               maxit::Ref{Int32}, niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32},
+                               dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int32})::Cvoid
+end
+
+function mc77rr(::Type{Float128}, ::Type{Int32}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77rq_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float128}, d::Ptr{Float128},
+                               e::Ptr{Float128}, check::Ref{Int32}, thresh::Ref{Float128},
+                               err::Ptr{Float128}, maxit::Ref{Int32}, niter::Ref{Int32},
+                               iw::Ptr{Int32}, jw::Ptr{Int32}, dw::Ptr{Float128}, ew::Ptr{Float128},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77rr(::Type{Float32}, ::Type{Int64}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77r_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                    irn::Ptr{Int64}, a::Ptr{Float32}, d::Ptr{Float32},
+                                    e::Ptr{Float32}, check::Ref{Int64}, thresh::Ref{Float32},
+                                    err::Ptr{Float32}, maxit::Ref{Int64}, niter::Ref{Int64},
+                                    iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float32},
+                                    ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77rr(::Type{Float64}, ::Type{Int64}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77rd_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float64}, d::Ptr{Float64},
+                                     e::Ptr{Float64}, check::Ref{Int64}, thresh::Ref{Float64},
+                                     err::Ptr{Float64}, maxit::Ref{Int64}, niter::Ref{Int64},
+                                     iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float64},
+                                     ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77rr(::Type{Float128}, ::Type{Int64}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77rq_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float128}, d::Ptr{Float128},
+                                     e::Ptr{Float128}, check::Ref{Int64}, thresh::Ref{Float128},
+                                     err::Ptr{Float128}, maxit::Ref{Int64}, niter::Ref{Int64},
+                                     iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float128},
+                                     ew::Ptr{Float128}, info::Ref{Int64})::Cvoid
+end
+
+function mc77sr(::Type{Float32}, ::Type{Int32}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77s_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32},
+                              irn::Ptr{Int32}, a::Ptr{Float32}, d::Ptr{Float32}, e::Ptr{Float32},
+                              check::Ref{Int32}, thresh::Ref{Float32}, err::Ptr{Float32},
+                              maxit::Ref{Int32}, niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32},
+                              dw::Ptr{Float32}, ew::Ptr{Float32}, info::Ref{Int32})::Cvoid
+end
+
+function mc77sr(::Type{Float64}, ::Type{Int32}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77sd_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float64}, d::Ptr{Float64}, e::Ptr{Float64},
+                               check::Ref{Int32}, thresh::Ref{Float64}, err::Ptr{Float64},
+                               maxit::Ref{Int32}, niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32},
+                               dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int32})::Cvoid
+end
+
+function mc77sr(::Type{Float128}, ::Type{Int32}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77sq_(m::Ref{Int32}, n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float128}, d::Ptr{Float128},
+                               e::Ptr{Float128}, check::Ref{Int32}, thresh::Ref{Float128},
+                               err::Ptr{Float128}, maxit::Ref{Int32}, niter::Ref{Int32},
+                               iw::Ptr{Int32}, jw::Ptr{Int32}, dw::Ptr{Float128}, ew::Ptr{Float128},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77sr(::Type{Float32}, ::Type{Int64}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77s_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                    irn::Ptr{Int64}, a::Ptr{Float32}, d::Ptr{Float32},
+                                    e::Ptr{Float32}, check::Ref{Int64}, thresh::Ref{Float32},
+                                    err::Ptr{Float32}, maxit::Ref{Int64}, niter::Ref{Int64},
+                                    iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float32},
+                                    ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77sr(::Type{Float64}, ::Type{Int64}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77sd_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float64}, d::Ptr{Float64},
+                                     e::Ptr{Float64}, check::Ref{Int64}, thresh::Ref{Float64},
+                                     err::Ptr{Float64}, maxit::Ref{Int64}, niter::Ref{Int64},
+                                     iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float64},
+                                     ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77sr(::Type{Float128}, ::Type{Int64}, m, n, nnz, jcn, irn, a, d, e, check, thresh, err,
+                maxit, niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77sq_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float128}, d::Ptr{Float128},
+                                     e::Ptr{Float128}, check::Ref{Int64}, thresh::Ref{Float128},
+                                     err::Ptr{Float128}, maxit::Ref{Int64}, niter::Ref{Int64},
+                                     iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float128},
+                                     ew::Ptr{Float128}, info::Ref{Int64})::Cvoid
+end
+
+function mc77tr(::Type{Float32}, ::Type{Int32}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77t_(n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32}, irn::Ptr{Int32},
+                              a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Int32},
+                              thresh::Ref{Float32}, err::Ref{Float32}, maxit::Ref{Int32},
+                              niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float32},
+                              info::Ref{Int32})::Cvoid
+end
+
+function mc77tr(::Type{Float64}, ::Type{Int32}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77td_(n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Int32},
+                               thresh::Ref{Float64}, err::Ref{Float64}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float64},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77tr(::Type{Float128}, ::Type{Int32}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77tq_(n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float128}, de::Ptr{Float128}, check::Ref{Int32},
+                               thresh::Ref{Float128}, err::Ref{Float128}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float128},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77tr(::Type{Float32}, ::Type{Int64}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77t_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                    irn::Ptr{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
+                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
+                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77tr(::Type{Float64}, ::Type{Int64}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77td_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
+                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77tr(::Type{Float128}, ::Type{Int64}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77tq_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float128}, de::Ptr{Float128},
+                                     check::Ref{Int64}, thresh::Ref{Float128}, err::Ref{Float128},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float128}, info::Ref{Int64})::Cvoid
+end
+
+function mc77ur(::Type{Float32}, ::Type{Int32}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77u_(n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32}, irn::Ptr{Int32},
+                              a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Int32},
+                              thresh::Ref{Float32}, err::Ref{Float32}, maxit::Ref{Int32},
+                              niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float32},
+                              info::Ref{Int32})::Cvoid
+end
+
+function mc77ur(::Type{Float64}, ::Type{Int32}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77ud_(n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Int32},
+                               thresh::Ref{Float64}, err::Ref{Float64}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float64},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77ur(::Type{Float128}, ::Type{Int32}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset.mc77uq_(n::Ref{Int32}, nnz::Ref{Int32}, jcn::Ptr{Int32}, irn::Ptr{Int32},
+                               a::Ptr{Float128}, de::Ptr{Float128}, check::Ref{Int32},
+                               thresh::Ref{Float128}, err::Ref{Float128}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float128},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77ur(::Type{Float32}, ::Type{Int64}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77u_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                    irn::Ptr{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
+                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
+                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77ur(::Type{Float64}, ::Type{Int64}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77ud_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
+                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77ur(::Type{Float128}, ::Type{Int64}, n, nnz, jcn, irn, a, de, check, thresh, err, maxit,
+                niter, ijw, dew, info)
+  @ccall libhsl_subset_64.mc77uq_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
+                                     irn::Ptr{Int64}, a::Ptr{Float128}, de::Ptr{Float128},
+                                     check::Ref{Int64}, thresh::Ref{Float128}, err::Ref{Float128},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float128}, info::Ref{Int64})::Cvoid
+end
+
+function mc77cr(::Type{Float32}, ::Type{Int32}, job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset.mc77c_(job::Ref{Int32}, m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float32},
+                              lda::Ref{Int32}, iw::Ptr{Int32}, liw::Ref{Int32}, dw::Ptr{Float32},
+                              ldw::Ref{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float32},
+                              info::Ptr{Int32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc77cr(::Type{Float64}, ::Type{Int32}, job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset.mc77cd_(job::Ref{Int32}, m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float64},
+                               lda::Ref{Int32}, iw::Ptr{Int32}, liw::Ref{Int32}, dw::Ptr{Float64},
+                               ldw::Ref{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float64},
+                               info::Ptr{Int32}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc77cr(::Type{Float128}, ::Type{Int32}, job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset.mc77cq_(job::Ref{Int32}, m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float128},
+                               lda::Ref{Int32}, iw::Ptr{Int32}, liw::Ref{Int32}, dw::Ptr{Float128},
+                               ldw::Ref{Int32}, icntl::Ptr{Int32}, cntl::Ptr{Float128},
+                               info::Ptr{Int32}, rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc77cr(::Type{Float32}, ::Type{Int64}, job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset_64.mc77c_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float32},
+                                    lda::Ref{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
+                                    dw::Ptr{Float32}, ldw::Ref{Int64}, icntl::Ptr{Int64},
+                                    cntl::Ptr{Float32}, info::Ptr{Int64},
+                                    rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc77cr(::Type{Float64}, ::Type{Int64}, job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset_64.mc77cd_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float64},
+                                     lda::Ref{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
+                                     dw::Ptr{Float64}, ldw::Ref{Int64}, icntl::Ptr{Int64},
+                                     cntl::Ptr{Float64}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc77cr(::Type{Float128}, ::Type{Int64}, job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl,
+                info, rinfo)
+  @ccall libhsl_subset_64.mc77cq_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64},
+                                     a::Ptr{Float128}, lda::Ref{Int64}, iw::Ptr{Int64},
+                                     liw::Ref{Int64}, dw::Ptr{Float128}, ldw::Ref{Int64},
+                                     icntl::Ptr{Int64}, cntl::Ptr{Float128}, info::Ptr{Int64},
+                                     rinfo::Ptr{Float128})::Cvoid
+end
+
+function mc77jr(::Type{Float32}, ::Type{Int32}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77j_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float32}, lda::Ref{Int32},
+                              d::Ptr{Float32}, e::Ptr{Float32}, check::Ref{Int32},
+                              thresh::Ref{Float32}, err::Ptr{Float32}, maxit::Ref{Int32},
+                              niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32}, dw::Ptr{Float32},
+                              ew::Ptr{Float32}, info::Ref{Int32})::Cvoid
+end
+
+function mc77jr(::Type{Float64}, ::Type{Int32}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77jd_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float64}, lda::Ref{Int32},
+                               d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Int32},
+                               thresh::Ref{Float64}, err::Ptr{Float64}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32}, dw::Ptr{Float64},
+                               ew::Ptr{Float64}, info::Ref{Int32})::Cvoid
+end
+
+function mc77jr(::Type{Float128}, ::Type{Int32}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77jq_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float128}, lda::Ref{Int32},
+                               d::Ptr{Float128}, e::Ptr{Float128}, check::Ref{Int32},
+                               thresh::Ref{Float128}, err::Ptr{Float128}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32}, dw::Ptr{Float128},
+                               ew::Ptr{Float128}, info::Ref{Int32})::Cvoid
+end
+
+function mc77jr(::Type{Float32}, ::Type{Int64}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77j_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float32}, lda::Ref{Int64},
+                                    d::Ptr{Float32}, e::Ptr{Float32}, check::Ref{Int64},
+                                    thresh::Ref{Float32}, err::Ptr{Float32}, maxit::Ref{Int64},
+                                    niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
+                                    dw::Ptr{Float32}, ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77jr(::Type{Float64}, ::Type{Int64}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77jd_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float64}, lda::Ref{Int64},
+                                     d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Int64},
+                                     thresh::Ref{Float64}, err::Ptr{Float64}, maxit::Ref{Int64},
+                                     niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
+                                     dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77jr(::Type{Float128}, ::Type{Int64}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77jq_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float128},
+                                     lda::Ref{Int64}, d::Ptr{Float128}, e::Ptr{Float128},
+                                     check::Ref{Int64}, thresh::Ref{Float128}, err::Ptr{Float128},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, iw::Ptr{Int64},
+                                     jw::Ptr{Int64}, dw::Ptr{Float128}, ew::Ptr{Float128},
+                                     info::Ref{Int64})::Cvoid
+end
+
+function mc77kr(::Type{Float32}, ::Type{Int32}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77k_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float32}, lda::Ref{Int32},
+                              d::Ptr{Float32}, e::Ptr{Float32}, check::Ref{Int32},
+                              thresh::Ref{Float32}, err::Ptr{Float32}, maxit::Ref{Int32},
+                              niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32}, dw::Ptr{Float32},
+                              ew::Ptr{Float32}, info::Ref{Int32})::Cvoid
+end
+
+function mc77kr(::Type{Float64}, ::Type{Int32}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77kd_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float64}, lda::Ref{Int32},
+                               d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Int32},
+                               thresh::Ref{Float64}, err::Ptr{Float64}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32}, dw::Ptr{Float64},
+                               ew::Ptr{Float64}, info::Ref{Int32})::Cvoid
+end
+
+function mc77kr(::Type{Float128}, ::Type{Int32}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset.mc77kq_(m::Ref{Int32}, n::Ref{Int32}, a::Ptr{Float128}, lda::Ref{Int32},
+                               d::Ptr{Float128}, e::Ptr{Float128}, check::Ref{Int32},
+                               thresh::Ref{Float128}, err::Ptr{Float128}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, iw::Ptr{Int32}, jw::Ptr{Int32}, dw::Ptr{Float128},
+                               ew::Ptr{Float128}, info::Ref{Int32})::Cvoid
+end
+
+function mc77kr(::Type{Float32}, ::Type{Int64}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77k_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float32}, lda::Ref{Int64},
+                                    d::Ptr{Float32}, e::Ptr{Float32}, check::Ref{Int64},
+                                    thresh::Ref{Float32}, err::Ptr{Float32}, maxit::Ref{Int64},
+                                    niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
+                                    dw::Ptr{Float32}, ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77kr(::Type{Float64}, ::Type{Int64}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77kd_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float64}, lda::Ref{Int64},
+                                     d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Int64},
+                                     thresh::Ref{Float64}, err::Ptr{Float64}, maxit::Ref{Int64},
+                                     niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
+                                     dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77kr(::Type{Float128}, ::Type{Int64}, m, n, a, lda, d, e, check, thresh, err, maxit,
+                niter, iw, jw, dw, ew, info)
+  @ccall libhsl_subset_64.mc77kq_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float128},
+                                     lda::Ref{Int64}, d::Ptr{Float128}, e::Ptr{Float128},
+                                     check::Ref{Int64}, thresh::Ref{Float128}, err::Ptr{Float128},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, iw::Ptr{Int64},
+                                     jw::Ptr{Int64}, dw::Ptr{Float128}, ew::Ptr{Float128},
+                                     info::Ref{Int64})::Cvoid
+end
+
+function mc77lr(::Type{Float32}, ::Type{Int32}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset.mc77l_(n::Ref{Int32}, a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Int32},
+                              thresh::Ref{Float32}, err::Ref{Float32}, maxit::Ref{Int32},
+                              niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float32},
+                              info::Ref{Int32})::Cvoid
+end
+
+function mc77lr(::Type{Float64}, ::Type{Int32}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset.mc77ld_(n::Ref{Int32}, a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Int32},
+                               thresh::Ref{Float64}, err::Ref{Float64}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float64},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77lr(::Type{Float128}, ::Type{Int32}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset.mc77lq_(n::Ref{Int32}, a::Ptr{Float128}, de::Ptr{Float128},
+                               check::Ref{Int32}, thresh::Ref{Float128}, err::Ref{Float128},
+                               maxit::Ref{Int32}, niter::Ref{Int32}, ijw::Ptr{Int32},
+                               dew::Ptr{Float128}, info::Ref{Int32})::Cvoid
+end
+
+function mc77lr(::Type{Float32}, ::Type{Int64}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset_64.mc77l_64_(n::Ref{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
+                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
+                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77lr(::Type{Float64}, ::Type{Int64}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset_64.mc77ld_64_(n::Ref{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
+                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77lr(::Type{Float128}, ::Type{Int64}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset_64.mc77lq_64_(n::Ref{Int64}, a::Ptr{Float128}, de::Ptr{Float128},
+                                     check::Ref{Int64}, thresh::Ref{Float128}, err::Ref{Float128},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float128}, info::Ref{Int64})::Cvoid
+end
+
+function mc77mr(::Type{Float32}, ::Type{Int32}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset.mc77m_(n::Ref{Int32}, a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Int32},
+                              thresh::Ref{Float32}, err::Ref{Float32}, maxit::Ref{Int32},
+                              niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float32},
+                              info::Ref{Int32})::Cvoid
+end
+
+function mc77mr(::Type{Float64}, ::Type{Int32}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset.mc77md_(n::Ref{Int32}, a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Int32},
+                               thresh::Ref{Float64}, err::Ref{Float64}, maxit::Ref{Int32},
+                               niter::Ref{Int32}, ijw::Ptr{Int32}, dew::Ptr{Float64},
+                               info::Ref{Int32})::Cvoid
+end
+
+function mc77mr(::Type{Float128}, ::Type{Int32}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset.mc77mq_(n::Ref{Int32}, a::Ptr{Float128}, de::Ptr{Float128},
+                               check::Ref{Int32}, thresh::Ref{Float128}, err::Ref{Float128},
+                               maxit::Ref{Int32}, niter::Ref{Int32}, ijw::Ptr{Int32},
+                               dew::Ptr{Float128}, info::Ref{Int32})::Cvoid
+end
+
+function mc77mr(::Type{Float32}, ::Type{Int64}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset_64.mc77m_64_(n::Ref{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
+                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
+                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
+end
+
+function mc77mr(::Type{Float64}, ::Type{Int64}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset_64.mc77md_64_(n::Ref{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
+                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
+end
+
+function mc77mr(::Type{Float128}, ::Type{Int64}, n, a, de, check, thresh, err, maxit, niter, ijw,
+                dew, info)
+  @ccall libhsl_subset_64.mc77mq_64_(n::Ref{Int64}, a::Ptr{Float128}, de::Ptr{Float128},
+                                     check::Ref{Int64}, thresh::Ref{Float128}, err::Ref{Float128},
+                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
+                                     dew::Ptr{Float128}, info::Ref{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mi21.jl b/src/Fortran/hsl_subset/mi21.jl
new file mode 100644
index 0000000..05a61fe
--- /dev/null
+++ b/src/Fortran/hsl_subset/mi21.jl
@@ -0,0 +1,79 @@
+function mi21ir(::Type{Float32}, ::Type{Int32}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset.mi21i_(icntl::Ptr{Int32}, cntl::Ptr{Float32}, isave::Ptr{Int32},
+                              rsave::Ptr{Float32})::Cvoid
+end
+
+function mi21ir(::Type{Float64}, ::Type{Int32}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset.mi21id_(icntl::Ptr{Int32}, cntl::Ptr{Float64}, isave::Ptr{Int32},
+                               rsave::Ptr{Float64})::Cvoid
+end
+
+function mi21ir(::Type{Float128}, ::Type{Int32}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset.mi21iq_(icntl::Ptr{Int32}, cntl::Ptr{Float128}, isave::Ptr{Int32},
+                               rsave::Ptr{Float128})::Cvoid
+end
+
+function mi21ir(::Type{Float32}, ::Type{Int64}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset_64.mi21i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32}, isave::Ptr{Int64},
+                                    rsave::Ptr{Float32})::Cvoid
+end
+
+function mi21ir(::Type{Float64}, ::Type{Int64}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset_64.mi21id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64}, isave::Ptr{Int64},
+                                     rsave::Ptr{Float64})::Cvoid
+end
+
+function mi21ir(::Type{Float128}, ::Type{Int64}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset_64.mi21iq_64_(icntl::Ptr{Int64}, cntl::Ptr{Float128}, isave::Ptr{Int64},
+                                     rsave::Ptr{Float128})::Cvoid
+end
+
+function mi21ar(::Type{Float32}, ::Type{Int32}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset.mi21a_(iact::Ref{Int32}, n::Ref{Int32}, w::Ptr{Float32}, ldw::Ref{Int32},
+                              locy::Ref{Int32}, locz::Ref{Int32}, resid::Ref{Float32},
+                              icntl::Ptr{Int32}, cntl::Ptr{Float32}, info::Ptr{Int32},
+                              isave::Ptr{Int32}, rsave::Ptr{Float32})::Cvoid
+end
+
+function mi21ar(::Type{Float64}, ::Type{Int32}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset.mi21ad_(iact::Ref{Int32}, n::Ref{Int32}, w::Ptr{Float64}, ldw::Ref{Int32},
+                               locy::Ref{Int32}, locz::Ref{Int32}, resid::Ref{Float64},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float64}, info::Ptr{Int32},
+                               isave::Ptr{Int32}, rsave::Ptr{Float64})::Cvoid
+end
+
+function mi21ar(::Type{Float128}, ::Type{Int32}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset.mi21aq_(iact::Ref{Int32}, n::Ref{Int32}, w::Ptr{Float128}, ldw::Ref{Int32},
+                               locy::Ref{Int32}, locz::Ref{Int32}, resid::Ref{Float128},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float128}, info::Ptr{Int32},
+                               isave::Ptr{Int32}, rsave::Ptr{Float128})::Cvoid
+end
+
+function mi21ar(::Type{Float32}, ::Type{Int64}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset_64.mi21a_64_(iact::Ref{Int64}, n::Ref{Int64}, w::Ptr{Float32},
+                                    ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
+                                    resid::Ref{Float32}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
+                                    info::Ptr{Int64}, isave::Ptr{Int64}, rsave::Ptr{Float32})::Cvoid
+end
+
+function mi21ar(::Type{Float64}, ::Type{Int64}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset_64.mi21ad_64_(iact::Ref{Int64}, n::Ref{Int64}, w::Ptr{Float64},
+                                     ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
+                                     resid::Ref{Float64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
+                                     info::Ptr{Int64}, isave::Ptr{Int64},
+                                     rsave::Ptr{Float64})::Cvoid
+end
+
+function mi21ar(::Type{Float128}, ::Type{Int64}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset_64.mi21aq_64_(iact::Ref{Int64}, n::Ref{Int64}, w::Ptr{Float128},
+                                     ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
+                                     resid::Ref{Float128}, icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     info::Ptr{Int64}, isave::Ptr{Int64},
+                                     rsave::Ptr{Float128})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mi24.jl b/src/Fortran/hsl_subset/mi24.jl
new file mode 100644
index 0000000..f6e156e
--- /dev/null
+++ b/src/Fortran/hsl_subset/mi24.jl
@@ -0,0 +1,85 @@
+function mi24ir(::Type{Float32}, ::Type{Int32}, icntl, cntl, isave, rsave, lsave)
+  @ccall libhsl_subset.mi24i_(icntl::Ptr{Int32}, cntl::Ptr{Float32}, isave::Ptr{Int32},
+                              rsave::Ptr{Float32}, lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ir(::Type{Float64}, ::Type{Int32}, icntl, cntl, isave, rsave, lsave)
+  @ccall libhsl_subset.mi24id_(icntl::Ptr{Int32}, cntl::Ptr{Float64}, isave::Ptr{Int32},
+                               rsave::Ptr{Float64}, lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ir(::Type{Float128}, ::Type{Int32}, icntl, cntl, isave, rsave, lsave)
+  @ccall libhsl_subset.mi24iq_(icntl::Ptr{Int32}, cntl::Ptr{Float128}, isave::Ptr{Int32},
+                               rsave::Ptr{Float128}, lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ir(::Type{Float32}, ::Type{Int64}, icntl, cntl, isave, rsave, lsave)
+  @ccall libhsl_subset_64.mi24i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32}, isave::Ptr{Int64},
+                                    rsave::Ptr{Float32}, lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ir(::Type{Float64}, ::Type{Int64}, icntl, cntl, isave, rsave, lsave)
+  @ccall libhsl_subset_64.mi24id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64}, isave::Ptr{Int64},
+                                     rsave::Ptr{Float64}, lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ir(::Type{Float128}, ::Type{Int64}, icntl, cntl, isave, rsave, lsave)
+  @ccall libhsl_subset_64.mi24iq_64_(icntl::Ptr{Int64}, cntl::Ptr{Float128}, isave::Ptr{Int64},
+                                     rsave::Ptr{Float128}, lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ar(::Type{Float32}, ::Type{Int32}, iact, n, m, w, ldw, locy, locz, h, ldh, resid,
+                icntl, cntl, info, isave, rsave, lsave)
+  @ccall libhsl_subset.mi24a_(iact::Ref{Int32}, n::Ref{Int32}, m::Ref{Int32}, w::Ptr{Float32},
+                              ldw::Ref{Int32}, locy::Ref{Int32}, locz::Ref{Int32}, h::Ptr{Float32},
+                              ldh::Ref{Int32}, resid::Ref{Float32}, icntl::Ptr{Int32},
+                              cntl::Ptr{Float32}, info::Ptr{Int32}, isave::Ptr{Int32},
+                              rsave::Ptr{Float32}, lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ar(::Type{Float64}, ::Type{Int32}, iact, n, m, w, ldw, locy, locz, h, ldh, resid,
+                icntl, cntl, info, isave, rsave, lsave)
+  @ccall libhsl_subset.mi24ad_(iact::Ref{Int32}, n::Ref{Int32}, m::Ref{Int32}, w::Ptr{Float64},
+                               ldw::Ref{Int32}, locy::Ref{Int32}, locz::Ref{Int32}, h::Ptr{Float64},
+                               ldh::Ref{Int32}, resid::Ref{Float64}, icntl::Ptr{Int32},
+                               cntl::Ptr{Float64}, info::Ptr{Int32}, isave::Ptr{Int32},
+                               rsave::Ptr{Float64}, lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ar(::Type{Float128}, ::Type{Int32}, iact, n, m, w, ldw, locy, locz, h, ldh, resid,
+                icntl, cntl, info, isave, rsave, lsave)
+  @ccall libhsl_subset.mi24aq_(iact::Ref{Int32}, n::Ref{Int32}, m::Ref{Int32}, w::Ptr{Float128},
+                               ldw::Ref{Int32}, locy::Ref{Int32}, locz::Ref{Int32},
+                               h::Ptr{Float128}, ldh::Ref{Int32}, resid::Ref{Float128},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float128}, info::Ptr{Int32},
+                               isave::Ptr{Int32}, rsave::Ptr{Float128}, lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ar(::Type{Float32}, ::Type{Int64}, iact, n, m, w, ldw, locy, locz, h, ldh, resid,
+                icntl, cntl, info, isave, rsave, lsave)
+  @ccall libhsl_subset_64.mi24a_64_(iact::Ref{Int64}, n::Ref{Int64}, m::Ref{Int64}, w::Ptr{Float32},
+                                    ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
+                                    h::Ptr{Float32}, ldh::Ref{Int64}, resid::Ref{Float32},
+                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, info::Ptr{Int64},
+                                    isave::Ptr{Int64}, rsave::Ptr{Float32}, lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ar(::Type{Float64}, ::Type{Int64}, iact, n, m, w, ldw, locy, locz, h, ldh, resid,
+                icntl, cntl, info, isave, rsave, lsave)
+  @ccall libhsl_subset_64.mi24ad_64_(iact::Ref{Int64}, n::Ref{Int64}, m::Ref{Int64},
+                                     w::Ptr{Float64}, ldw::Ref{Int64}, locy::Ref{Int64},
+                                     locz::Ref{Int64}, h::Ptr{Float64}, ldh::Ref{Int64},
+                                     resid::Ref{Float64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
+                                     info::Ptr{Int64}, isave::Ptr{Int64}, rsave::Ptr{Float64},
+                                     lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ar(::Type{Float128}, ::Type{Int64}, iact, n, m, w, ldw, locy, locz, h, ldh, resid,
+                icntl, cntl, info, isave, rsave, lsave)
+  @ccall libhsl_subset_64.mi24aq_64_(iact::Ref{Int64}, n::Ref{Int64}, m::Ref{Int64},
+                                     w::Ptr{Float128}, ldw::Ref{Int64}, locy::Ref{Int64},
+                                     locz::Ref{Int64}, h::Ptr{Float128}, ldh::Ref{Int64},
+                                     resid::Ref{Float128}, icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     info::Ptr{Int64}, isave::Ptr{Int64}, rsave::Ptr{Float128},
+                                     lsave::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/mi26.jl b/src/Fortran/hsl_subset/mi26.jl
new file mode 100644
index 0000000..7f0c58e
--- /dev/null
+++ b/src/Fortran/hsl_subset/mi26.jl
@@ -0,0 +1,79 @@
+function mi26ir(::Type{Float32}, ::Type{Int32}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset.mi26i_(icntl::Ptr{Int32}, cntl::Ptr{Float32}, isave::Ptr{Int32},
+                              rsave::Ptr{Float32})::Cvoid
+end
+
+function mi26ir(::Type{Float64}, ::Type{Int32}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset.mi26id_(icntl::Ptr{Int32}, cntl::Ptr{Float64}, isave::Ptr{Int32},
+                               rsave::Ptr{Float64})::Cvoid
+end
+
+function mi26ir(::Type{Float128}, ::Type{Int32}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset.mi26iq_(icntl::Ptr{Int32}, cntl::Ptr{Float128}, isave::Ptr{Int32},
+                               rsave::Ptr{Float128})::Cvoid
+end
+
+function mi26ir(::Type{Float32}, ::Type{Int64}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset_64.mi26i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32}, isave::Ptr{Int64},
+                                    rsave::Ptr{Float32})::Cvoid
+end
+
+function mi26ir(::Type{Float64}, ::Type{Int64}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset_64.mi26id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64}, isave::Ptr{Int64},
+                                     rsave::Ptr{Float64})::Cvoid
+end
+
+function mi26ir(::Type{Float128}, ::Type{Int64}, icntl, cntl, isave, rsave)
+  @ccall libhsl_subset_64.mi26iq_64_(icntl::Ptr{Int64}, cntl::Ptr{Float128}, isave::Ptr{Int64},
+                                     rsave::Ptr{Float128})::Cvoid
+end
+
+function mi26ar(::Type{Float32}, ::Type{Int32}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset.mi26a_(iact::Ref{Int32}, n::Ref{Int32}, w::Ptr{Float32}, ldw::Ref{Int32},
+                              locy::Ref{Int32}, locz::Ref{Int32}, resid::Ref{Float32},
+                              icntl::Ptr{Int32}, cntl::Ptr{Float32}, info::Ptr{Int32},
+                              isave::Ptr{Int32}, rsave::Ptr{Float32})::Cvoid
+end
+
+function mi26ar(::Type{Float64}, ::Type{Int32}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset.mi26ad_(iact::Ref{Int32}, n::Ref{Int32}, w::Ptr{Float64}, ldw::Ref{Int32},
+                               locy::Ref{Int32}, locz::Ref{Int32}, resid::Ref{Float64},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float64}, info::Ptr{Int32},
+                               isave::Ptr{Int32}, rsave::Ptr{Float64})::Cvoid
+end
+
+function mi26ar(::Type{Float128}, ::Type{Int32}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset.mi26aq_(iact::Ref{Int32}, n::Ref{Int32}, w::Ptr{Float128}, ldw::Ref{Int32},
+                               locy::Ref{Int32}, locz::Ref{Int32}, resid::Ref{Float128},
+                               icntl::Ptr{Int32}, cntl::Ptr{Float128}, info::Ptr{Int32},
+                               isave::Ptr{Int32}, rsave::Ptr{Float128})::Cvoid
+end
+
+function mi26ar(::Type{Float32}, ::Type{Int64}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset_64.mi26a_64_(iact::Ref{Int64}, n::Ref{Int64}, w::Ptr{Float32},
+                                    ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
+                                    resid::Ref{Float32}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
+                                    info::Ptr{Int64}, isave::Ptr{Int64}, rsave::Ptr{Float32})::Cvoid
+end
+
+function mi26ar(::Type{Float64}, ::Type{Int64}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset_64.mi26ad_64_(iact::Ref{Int64}, n::Ref{Int64}, w::Ptr{Float64},
+                                     ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
+                                     resid::Ref{Float64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
+                                     info::Ptr{Int64}, isave::Ptr{Int64},
+                                     rsave::Ptr{Float64})::Cvoid
+end
+
+function mi26ar(::Type{Float128}, ::Type{Int64}, iact, n, w, ldw, locy, locz, resid, icntl, cntl,
+                info, isave, rsave)
+  @ccall libhsl_subset_64.mi26aq_64_(iact::Ref{Int64}, n::Ref{Int64}, w::Ptr{Float128},
+                                     ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
+                                     resid::Ref{Float128}, icntl::Ptr{Int64}, cntl::Ptr{Float128},
+                                     info::Ptr{Int64}, isave::Ptr{Int64},
+                                     rsave::Ptr{Float128})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/ym01.jl b/src/Fortran/hsl_subset/ym01.jl
new file mode 100644
index 0000000..db0dc1f
--- /dev/null
+++ b/src/Fortran/hsl_subset/ym01.jl
@@ -0,0 +1,77 @@
+function ym01ar(::Type{Float32}, ::Type{Int32}, m, n, nzin, nzout, ibw, itype, nonsin, irn, a,
+                jcolst, iw)
+  @ccall libhsl_subset.ym01a_(m::Ref{Int32}, n::Ref{Int32}, nzin::Ref{Int32}, nzout::Ref{Int32},
+                              ibw::Ref{Int32}, itype::Ref{Int32}, nonsin::Ref{Cint},
+                              irn::Ptr{Int32}, a::Ptr{Float32}, jcolst::Ptr{Int32},
+                              iw::Ptr{Int32})::Cvoid
+end
+
+function ym01ar(::Type{Float64}, ::Type{Int32}, m, n, nzin, nzout, ibw, itype, nonsin, irn, a,
+                jcolst, iw)
+  @ccall libhsl_subset.ym01ad_(m::Ref{Int32}, n::Ref{Int32}, nzin::Ref{Int32}, nzout::Ref{Int32},
+                               ibw::Ref{Int32}, itype::Ref{Int32}, nonsin::Ref{Cint},
+                               irn::Ptr{Int32}, a::Ptr{Float64}, jcolst::Ptr{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function ym01ar(::Type{Float128}, ::Type{Int32}, m, n, nzin, nzout, ibw, itype, nonsin, irn, a,
+                jcolst, iw)
+  @ccall libhsl_subset.ym01aq_(m::Ref{Int32}, n::Ref{Int32}, nzin::Ref{Int32}, nzout::Ref{Int32},
+                               ibw::Ref{Int32}, itype::Ref{Int32}, nonsin::Ref{Cint},
+                               irn::Ptr{Int32}, a::Ptr{Float128}, jcolst::Ptr{Int32},
+                               iw::Ptr{Int32})::Cvoid
+end
+
+function ym01ar(::Type{Float32}, ::Type{Int64}, m, n, nzin, nzout, ibw, itype, nonsin, irn, a,
+                jcolst, iw)
+  @ccall libhsl_subset_64.ym01a_64_(m::Ref{Int64}, n::Ref{Int64}, nzin::Ref{Int64},
+                                    nzout::Ref{Int64}, ibw::Ref{Int64}, itype::Ref{Int64},
+                                    nonsin::Ref{Cint}, irn::Ptr{Int64}, a::Ptr{Float32},
+                                    jcolst::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function ym01ar(::Type{Float64}, ::Type{Int64}, m, n, nzin, nzout, ibw, itype, nonsin, irn, a,
+                jcolst, iw)
+  @ccall libhsl_subset_64.ym01ad_64_(m::Ref{Int64}, n::Ref{Int64}, nzin::Ref{Int64},
+                                     nzout::Ref{Int64}, ibw::Ref{Int64}, itype::Ref{Int64},
+                                     nonsin::Ref{Cint}, irn::Ptr{Int64}, a::Ptr{Float64},
+                                     jcolst::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function ym01ar(::Type{Float128}, ::Type{Int64}, m, n, nzin, nzout, ibw, itype, nonsin, irn, a,
+                jcolst, iw)
+  @ccall libhsl_subset_64.ym01aq_64_(m::Ref{Int64}, n::Ref{Int64}, nzin::Ref{Int64},
+                                     nzout::Ref{Int64}, ibw::Ref{Int64}, itype::Ref{Int64},
+                                     nonsin::Ref{Cint}, irn::Ptr{Int64}, a::Ptr{Float128},
+                                     jcolst::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
+end
+
+function ym01br(::Type{Float32}, ::Type{Int32}, n, m, perm, invprm)
+  @ccall libhsl_subset.ym01b_(n::Ref{Int32}, m::Ref{Int32}, perm::Ptr{Int32},
+                              invprm::Ptr{Int32})::Cvoid
+end
+
+function ym01br(::Type{Float64}, ::Type{Int32}, n, m, perm, invprm)
+  @ccall libhsl_subset.ym01bd_(n::Ref{Int32}, m::Ref{Int32}, perm::Ptr{Int32},
+                               invprm::Ptr{Int32})::Cvoid
+end
+
+function ym01br(::Type{Float128}, ::Type{Int32}, n, m, perm, invprm)
+  @ccall libhsl_subset.ym01bq_(n::Ref{Int32}, m::Ref{Int32}, perm::Ptr{Int32},
+                               invprm::Ptr{Int32})::Cvoid
+end
+
+function ym01br(::Type{Float32}, ::Type{Int64}, n, m, perm, invprm)
+  @ccall libhsl_subset_64.ym01b_64_(n::Ref{Int64}, m::Ref{Int64}, perm::Ptr{Int64},
+                                    invprm::Ptr{Int64})::Cvoid
+end
+
+function ym01br(::Type{Float64}, ::Type{Int64}, n, m, perm, invprm)
+  @ccall libhsl_subset_64.ym01bd_64_(n::Ref{Int64}, m::Ref{Int64}, perm::Ptr{Int64},
+                                     invprm::Ptr{Int64})::Cvoid
+end
+
+function ym01br(::Type{Float128}, ::Type{Int64}, n, m, perm, invprm)
+  @ccall libhsl_subset_64.ym01bq_64_(n::Ref{Int64}, m::Ref{Int64}, perm::Ptr{Int64},
+                                     invprm::Ptr{Int64})::Cvoid
+end
diff --git a/src/Fortran/hsl_subset/ym11.jl b/src/Fortran/hsl_subset/ym11.jl
new file mode 100644
index 0000000..e818fa4
--- /dev/null
+++ b/src/Fortran/hsl_subset/ym11.jl
@@ -0,0 +1,101 @@
+function ym11ir(::Type{Float32}, ::Type{Int32}, icntl, iseed)
+  @ccall libhsl_subset.ym11i_(icntl::Ptr{Int32}, iseed::Ref{Int32})::Cvoid
+end
+
+function ym11ir(::Type{Float64}, ::Type{Int32}, icntl, iseed)
+  @ccall libhsl_subset.ym11id_(icntl::Ptr{Int32}, iseed::Ref{Int32})::Cvoid
+end
+
+function ym11ir(::Type{Float128}, ::Type{Int32}, icntl, iseed)
+  @ccall libhsl_subset.ym11iq_(icntl::Ptr{Int32}, iseed::Ref{Int32})::Cvoid
+end
+
+function ym11ir(::Type{Float32}, ::Type{Int64}, icntl, iseed)
+  @ccall libhsl_subset_64.ym11i_64_(icntl::Ptr{Int64}, iseed::Ref{Int64})::Cvoid
+end
+
+function ym11ir(::Type{Float64}, ::Type{Int64}, icntl, iseed)
+  @ccall libhsl_subset_64.ym11id_64_(icntl::Ptr{Int64}, iseed::Ref{Int64})::Cvoid
+end
+
+function ym11ir(::Type{Float128}, ::Type{Int64}, icntl, iseed)
+  @ccall libhsl_subset_64.ym11iq_64_(icntl::Ptr{Int64}, iseed::Ref{Int64})::Cvoid
+end
+
+function ym11ar(::Type{Float32}, ::Type{Int32}, m, n, nzin, nzout, irn, a, jcolst, iw, icntl, key,
+                iseed)
+  @ccall libhsl_subset.ym11a_(m::Ref{Int32}, n::Ref{Int32}, nzin::Ref{Int32}, nzout::Ref{Int32},
+                              irn::Ptr{Int32}, a::Ptr{Float32}, jcolst::Ptr{Int32}, iw::Ptr{Int32},
+                              icntl::Ptr{Int32}, key::Ptr{UInt8}, iseed::Ref{Int32},
+                              8::Csize_t)::Cvoid
+end
+
+function ym11ar(::Type{Float64}, ::Type{Int32}, m, n, nzin, nzout, irn, a, jcolst, iw, icntl, key,
+                iseed)
+  @ccall libhsl_subset.ym11ad_(m::Ref{Int32}, n::Ref{Int32}, nzin::Ref{Int32}, nzout::Ref{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float64}, jcolst::Ptr{Int32}, iw::Ptr{Int32},
+                               icntl::Ptr{Int32}, key::Ptr{UInt8}, iseed::Ref{Int32},
+                               8::Csize_t)::Cvoid
+end
+
+function ym11ar(::Type{Float128}, ::Type{Int32}, m, n, nzin, nzout, irn, a, jcolst, iw, icntl, key,
+                iseed)
+  @ccall libhsl_subset.ym11aq_(m::Ref{Int32}, n::Ref{Int32}, nzin::Ref{Int32}, nzout::Ref{Int32},
+                               irn::Ptr{Int32}, a::Ptr{Float128}, jcolst::Ptr{Int32},
+                               iw::Ptr{Int32}, icntl::Ptr{Int32}, key::Ptr{UInt8},
+                               iseed::Ref{Int32}, 8::Csize_t)::Cvoid
+end
+
+function ym11ar(::Type{Float32}, ::Type{Int64}, m, n, nzin, nzout, irn, a, jcolst, iw, icntl, key,
+                iseed)
+  @ccall libhsl_subset_64.ym11a_64_(m::Ref{Int64}, n::Ref{Int64}, nzin::Ref{Int64},
+                                    nzout::Ref{Int64}, irn::Ptr{Int64}, a::Ptr{Float32},
+                                    jcolst::Ptr{Int64}, iw::Ptr{Int64}, icntl::Ptr{Int64},
+                                    key::Ptr{UInt8}, iseed::Ref{Int64}, 8::Csize_t)::Cvoid
+end
+
+function ym11ar(::Type{Float64}, ::Type{Int64}, m, n, nzin, nzout, irn, a, jcolst, iw, icntl, key,
+                iseed)
+  @ccall libhsl_subset_64.ym11ad_64_(m::Ref{Int64}, n::Ref{Int64}, nzin::Ref{Int64},
+                                     nzout::Ref{Int64}, irn::Ptr{Int64}, a::Ptr{Float64},
+                                     jcolst::Ptr{Int64}, iw::Ptr{Int64}, icntl::Ptr{Int64},
+                                     key::Ptr{UInt8}, iseed::Ref{Int64}, 8::Csize_t)::Cvoid
+end
+
+function ym11ar(::Type{Float128}, ::Type{Int64}, m, n, nzin, nzout, irn, a, jcolst, iw, icntl, key,
+                iseed)
+  @ccall libhsl_subset_64.ym11aq_64_(m::Ref{Int64}, n::Ref{Int64}, nzin::Ref{Int64},
+                                     nzout::Ref{Int64}, irn::Ptr{Int64}, a::Ptr{Float128},
+                                     jcolst::Ptr{Int64}, iw::Ptr{Int64}, icntl::Ptr{Int64},
+                                     key::Ptr{UInt8}, iseed::Ref{Int64}, 8::Csize_t)::Cvoid
+end
+
+function ym11br(::Type{Float32}, ::Type{Int32}, n, m, perm, invprm, iseed)
+  @ccall libhsl_subset.ym11b_(n::Ref{Int32}, m::Ref{Int32}, perm::Ptr{Int32}, invprm::Ptr{Int32},
+                              iseed::Ref{Int32})::Cvoid
+end
+
+function ym11br(::Type{Float64}, ::Type{Int32}, n, m, perm, invprm, iseed)
+  @ccall libhsl_subset.ym11bd_(n::Ref{Int32}, m::Ref{Int32}, perm::Ptr{Int32}, invprm::Ptr{Int32},
+                               iseed::Ref{Int32})::Cvoid
+end
+
+function ym11br(::Type{Float128}, ::Type{Int32}, n, m, perm, invprm, iseed)
+  @ccall libhsl_subset.ym11bq_(n::Ref{Int32}, m::Ref{Int32}, perm::Ptr{Int32}, invprm::Ptr{Int32},
+                               iseed::Ref{Int32})::Cvoid
+end
+
+function ym11br(::Type{Float32}, ::Type{Int64}, n, m, perm, invprm, iseed)
+  @ccall libhsl_subset_64.ym11b_64_(n::Ref{Int64}, m::Ref{Int64}, perm::Ptr{Int64},
+                                    invprm::Ptr{Int64}, iseed::Ref{Int64})::Cvoid
+end
+
+function ym11br(::Type{Float64}, ::Type{Int64}, n, m, perm, invprm, iseed)
+  @ccall libhsl_subset_64.ym11bd_64_(n::Ref{Int64}, m::Ref{Int64}, perm::Ptr{Int64},
+                                     invprm::Ptr{Int64}, iseed::Ref{Int64})::Cvoid
+end
+
+function ym11br(::Type{Float128}, ::Type{Int64}, n, m, perm, invprm, iseed)
+  @ccall libhsl_subset_64.ym11bq_64_(n::Ref{Int64}, m::Ref{Int64}, perm::Ptr{Int64},
+                                     invprm::Ptr{Int64}, iseed::Ref{Int64})::Cvoid
+end
diff --git a/src/Fortran/kb07.jl b/src/Fortran/kb07.jl
deleted file mode 100644
index 1b846c8..0000000
--- a/src/Fortran/kb07.jl
+++ /dev/null
@@ -1,23 +0,0 @@
-function kb07ad(count, n, index)
-  @ccall libhsl.kb07ad_(count::Ptr{Float64}, n::Ref{Cint}, index::Ptr{Cint})::Cvoid
-end
-
-function kb07ad_64(count, n, index)
-  @ccall libhsl_subset_64.kb07ad_64_(count::Ptr{Float64}, n::Ref{Int64}, index::Ptr{Int64})::Cvoid
-end
-
-function kb07ai(count, n, index)
-  @ccall libhsl.kb07ai_(count::Ptr{Cint}, n::Ref{Cint}, index::Ptr{Cint})::Cvoid
-end
-
-function kb07ai_64(count, n, index)
-  @ccall libhsl_subset_64.kb07ai_64_(count::Ptr{Int64}, n::Ref{Int64}, index::Ptr{Int64})::Cvoid
-end
-
-function kb07a(count, n, index)
-  @ccall libhsl.kb07a_(count::Ptr{Float32}, n::Ref{Cint}, index::Ptr{Cint})::Cvoid
-end
-
-function kb07a_64(count, n, index)
-  @ccall libhsl_subset_64.kb07a_64_(count::Ptr{Float32}, n::Ref{Int64}, index::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/la04.jl b/src/Fortran/la04.jl
deleted file mode 100644
index efb7ca7..0000000
--- a/src/Fortran/la04.jl
+++ /dev/null
@@ -1,266 +0,0 @@
-function la04ad(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, x, z, g, rinfo, ws, lws,
-                iws, liws)
-  @ccall libhsl.la04ad_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                        n::Ref{Cint}, b::Ptr{Float64}, c::Ptr{Float64}, bnd::Ptr{Float64},
-                        kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float64},
-                        ix::Ptr{Cint}, jx::Ptr{Cint}, x::Ptr{Float64}, z::Ptr{Float64},
-                        g::Ptr{Float64}, rinfo::Ptr{Float64}, ws::Ptr{Float64}, lws::Ref{Cint},
-                        iws::Ptr{Cint}, liws::Ref{Cint})::Cvoid
-end
-
-function la04ad_64(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, x, z, g, rinfo, ws,
-                   lws, iws, liws)
-  @ccall libhsl_subset_64.la04ad_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
-                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
-                                     c::Ptr{Float64}, bnd::Ptr{Float64}, kb::Ref{Int64},
-                                     lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float64},
-                                     ix::Ptr{Int64}, jx::Ptr{Int64}, x::Ptr{Float64},
-                                     z::Ptr{Float64}, g::Ptr{Float64}, rinfo::Ptr{Float64},
-                                     ws::Ptr{Float64}, lws::Ref{Int64}, iws::Ptr{Int64},
-                                     liws::Ref{Int64})::Cvoid
-end
-
-function la04id(cntl)
-  @ccall libhsl.la04id_(cntl::Ptr{Float64})::Cvoid
-end
-
-function la04id_64(cntl)
-  @ccall libhsl_subset_64.la04id_64_(cntl::Ptr{Float64})::Cvoid
-end
-
-function la04bd(a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo, iw, irow, pv, y)
-  @ccall libhsl.la04bd_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                        n::Ref{Cint}, bnd::Ptr{Float64}, kb::Ref{Cint}, cntl::Ptr{Float64},
-                        ix::Ptr{Cint}, g::Ptr{Float64}, rinfo::Ptr{Float64}, iw::Ptr{Cint},
-                        irow::Ptr{Cint}, pv::Ptr{Float64}, y::Ptr{Float64})::Cvoid
-end
-
-function la04bd_64(a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo, iw, irow, pv, y)
-  @ccall libhsl_subset_64.la04bd_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
-                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64},
-                                     bnd::Ptr{Float64}, kb::Ref{Int64}, cntl::Ptr{Float64},
-                                     ix::Ptr{Int64}, g::Ptr{Float64}, rinfo::Ptr{Float64},
-                                     iw::Ptr{Int64}, irow::Ptr{Int64}, pv::Ptr{Float64},
-                                     y::Ptr{Float64})::Cvoid
-end
-
-function la04cd(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, g, rinfo, x, z, ba, ib,
-                indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
-  @ccall libhsl.la04cd_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                        n::Ref{Cint}, b::Ptr{Float64}, c::Ptr{Float64}, bnd::Ptr{Float64},
-                        kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float64},
-                        ix::Ptr{Cint}, jx::Ptr{Cint}, g::Ptr{Float64}, rinfo::Ptr{Float64},
-                        x::Ptr{Float64}, z::Ptr{Float64}, ba::Ptr{Float64}, ib::Ref{Cint},
-                        indb::Ptr{Cint}, ipb::Ptr{Cint}, iwb::Ptr{Cint}, v::Ptr{Float64},
-                        w::Ptr{Float64}, y::Ptr{Float64}, yy::Ptr{Float64}, i15::Ptr{Cint},
-                        c15::Ptr{Float64}, iseed::Ref{Cint})::Cvoid
-end
-
-function la04cd_64(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, g, rinfo, x, z, ba,
-                   ib, indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
-  @ccall libhsl_subset_64.la04cd_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
-                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
-                                     c::Ptr{Float64}, bnd::Ptr{Float64}, kb::Ref{Int64},
-                                     lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float64},
-                                     ix::Ptr{Int64}, jx::Ptr{Int64}, g::Ptr{Float64},
-                                     rinfo::Ptr{Float64}, x::Ptr{Float64}, z::Ptr{Float64},
-                                     ba::Ptr{Float64}, ib::Ref{Int64}, indb::Ptr{Int64},
-                                     ipb::Ptr{Int64}, iwb::Ptr{Int64}, v::Ptr{Float64},
-                                     w::Ptr{Float64}, y::Ptr{Float64}, yy::Ptr{Float64},
-                                     i15::Ptr{Int64}, c15::Ptr{Float64}, iseed::Ref{Int64})::Cvoid
-end
-
-function la04dd(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, x, ix, jx, z, g, rinfo, ba,
-                indb, ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
-  @ccall libhsl.la04dd_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                        n::Ref{Cint}, b::Ptr{Float64}, c::Ptr{Float64}, bnd::Ptr{Float64},
-                        kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float64},
-                        x::Ptr{Float64}, ix::Ptr{Cint}, jx::Ptr{Cint}, z::Ptr{Float64},
-                        g::Ptr{Float64}, rinfo::Ptr{Float64}, ba::Ptr{Float64}, indb::Ptr{Cint},
-                        ipb::Ptr{Cint}, iwb::Ptr{Cint}, w::Ptr{Float64}, v::Ptr{Float64},
-                        ir::Ptr{Cint}, y::Ptr{Float64}, yy::Ptr{Float64}, ib::Ref{Cint},
-                        i15::Ptr{Cint}, c15::Ptr{Float64})::Cvoid
-end
-
-function la04dd_64(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, x, ix, jx, z, g, rinfo, ba,
-                   indb, ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
-  @ccall libhsl_subset_64.la04dd_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
-                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
-                                     c::Ptr{Float64}, bnd::Ptr{Float64}, kb::Ref{Int64},
-                                     lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float64},
-                                     x::Ptr{Float64}, ix::Ptr{Int64}, jx::Ptr{Int64},
-                                     z::Ptr{Float64}, g::Ptr{Float64}, rinfo::Ptr{Float64},
-                                     ba::Ptr{Float64}, indb::Ptr{Int64}, ipb::Ptr{Int64},
-                                     iwb::Ptr{Int64}, w::Ptr{Float64}, v::Ptr{Float64},
-                                     ir::Ptr{Int64}, y::Ptr{Float64}, yy::Ptr{Float64},
-                                     ib::Ref{Int64}, i15::Ptr{Int64}, c15::Ptr{Float64})::Cvoid
-end
-
-function la04ed(a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba, indb, ipb, iwb, w, y, ib, trans,
-                i15, c15)
-  @ccall libhsl.la04ed_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                        n::Ref{Cint}, b::Ptr{Float64}, x::Ptr{Float64}, dx::Ref{Float64},
-                        ix::Ptr{Cint}, jin::Ref{Cint}, rinfo::Ptr{Float64}, ba::Ptr{Float64},
-                        indb::Ptr{Cint}, ipb::Ptr{Cint}, iwb::Ptr{Cint}, w::Ptr{Float64},
-                        y::Ptr{Float64}, ib::Ref{Cint}, trans::Ref{Cint}, i15::Ptr{Cint},
-                        c15::Ptr{Float64})::Cvoid
-end
-
-function la04ed_64(a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba, indb, ipb, iwb, w, y, ib,
-                   trans, i15, c15)
-  @ccall libhsl_subset_64.la04ed_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
-                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
-                                     x::Ptr{Float64}, dx::Ref{Float64}, ix::Ptr{Int64},
-                                     jin::Ref{Int64}, rinfo::Ptr{Float64}, ba::Ptr{Float64},
-                                     indb::Ptr{Int64}, ipb::Ptr{Int64}, iwb::Ptr{Int64},
-                                     w::Ptr{Float64}, y::Ptr{Float64}, ib::Ref{Int64},
-                                     trans::Ref{Int64}, i15::Ptr{Int64}, c15::Ptr{Float64})::Cvoid
-end
-
-function la04sd(a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs, ws, jcn)
-  @ccall libhsl.la04sd_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                        n::Ref{Cint}, b::Ptr{Float64}, c::Ptr{Float64}, bnd::Ptr{Float64},
-                        kb::Ref{Cint}, sigma::Ref{Float64}, rs::Ptr{Float64}, cs::Ptr{Float64},
-                        ws::Ptr{Float64}, jcn::Ptr{Cint})::Cvoid
-end
-
-function la04sd_64(a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs, ws, jcn)
-  @ccall libhsl_subset_64.la04sd_64_(a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
-                                     ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
-                                     c::Ptr{Float64}, bnd::Ptr{Float64}, kb::Ref{Int64},
-                                     sigma::Ref{Float64}, rs::Ptr{Float64}, cs::Ptr{Float64},
-                                     ws::Ptr{Float64}, jcn::Ptr{Int64})::Cvoid
-end
-
-function la04a(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, x, z, g, rinfo, ws, lws,
-               iws, liws)
-  @ccall libhsl.la04a_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                       n::Ref{Cint}, b::Ptr{Float32}, c::Ptr{Float32}, bnd::Ptr{Float32},
-                       kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float32},
-                       ix::Ptr{Cint}, jx::Ptr{Cint}, x::Ptr{Float32}, z::Ptr{Float32},
-                       g::Ptr{Float32}, rinfo::Ptr{Float32}, ws::Ptr{Float32}, lws::Ref{Cint},
-                       iws::Ptr{Cint}, liws::Ref{Cint})::Cvoid
-end
-
-function la04a_64(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, x, z, g, rinfo, ws,
-                  lws, iws, liws)
-  @ccall libhsl_subset_64.la04a_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
-                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
-                                    c::Ptr{Float32}, bnd::Ptr{Float32}, kb::Ref{Int64},
-                                    lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float32},
-                                    ix::Ptr{Int64}, jx::Ptr{Int64}, x::Ptr{Float32},
-                                    z::Ptr{Float32}, g::Ptr{Float32}, rinfo::Ptr{Float32},
-                                    ws::Ptr{Float32}, lws::Ref{Int64}, iws::Ptr{Int64},
-                                    liws::Ref{Int64})::Cvoid
-end
-
-function la04i(cntl)
-  @ccall libhsl.la04i_(cntl::Ptr{Float32})::Cvoid
-end
-
-function la04i_64(cntl)
-  @ccall libhsl_subset_64.la04i_64_(cntl::Ptr{Float32})::Cvoid
-end
-
-function la04b(a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo, iw, irow, pv, y)
-  @ccall libhsl.la04b_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                       n::Ref{Cint}, bnd::Ptr{Float32}, kb::Ref{Cint}, cntl::Ptr{Float32},
-                       ix::Ptr{Cint}, g::Ptr{Float32}, rinfo::Ptr{Float32}, iw::Ptr{Cint},
-                       irow::Ptr{Cint}, pv::Ptr{Float32}, y::Ptr{Float32})::Cvoid
-end
-
-function la04b_64(a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo, iw, irow, pv, y)
-  @ccall libhsl_subset_64.la04b_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
-                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, bnd::Ptr{Float32},
-                                    kb::Ref{Int64}, cntl::Ptr{Float32}, ix::Ptr{Int64},
-                                    g::Ptr{Float32}, rinfo::Ptr{Float32}, iw::Ptr{Int64},
-                                    irow::Ptr{Int64}, pv::Ptr{Float32}, y::Ptr{Float32})::Cvoid
-end
-
-function la04c(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, g, rinfo, x, z, ba, ib,
-               indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
-  @ccall libhsl.la04c_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                       n::Ref{Cint}, b::Ptr{Float32}, c::Ptr{Float32}, bnd::Ptr{Float32},
-                       kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float32},
-                       ix::Ptr{Cint}, jx::Ptr{Cint}, g::Ptr{Float32}, rinfo::Ptr{Float32},
-                       x::Ptr{Float32}, z::Ptr{Float32}, ba::Ptr{Float32}, ib::Ref{Cint},
-                       indb::Ptr{Cint}, ipb::Ptr{Cint}, iwb::Ptr{Cint}, v::Ptr{Float32},
-                       w::Ptr{Float32}, y::Ptr{Float32}, yy::Ptr{Float32}, i15::Ptr{Cint},
-                       c15::Ptr{Float32}, iseed::Ref{Cint})::Cvoid
-end
-
-function la04c_64(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, g, rinfo, x, z, ba,
-                  ib, indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
-  @ccall libhsl_subset_64.la04c_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
-                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
-                                    c::Ptr{Float32}, bnd::Ptr{Float32}, kb::Ref{Int64},
-                                    lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float32},
-                                    ix::Ptr{Int64}, jx::Ptr{Int64}, g::Ptr{Float32},
-                                    rinfo::Ptr{Float32}, x::Ptr{Float32}, z::Ptr{Float32},
-                                    ba::Ptr{Float32}, ib::Ref{Int64}, indb::Ptr{Int64},
-                                    ipb::Ptr{Int64}, iwb::Ptr{Int64}, v::Ptr{Float32},
-                                    w::Ptr{Float32}, y::Ptr{Float32}, yy::Ptr{Float32},
-                                    i15::Ptr{Int64}, c15::Ptr{Float32}, iseed::Ref{Int64})::Cvoid
-end
-
-function la04d(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, x, ix, jx, z, g, rinfo, ba, indb,
-               ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
-  @ccall libhsl.la04d_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                       n::Ref{Cint}, b::Ptr{Float32}, c::Ptr{Float32}, bnd::Ptr{Float32},
-                       kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float32},
-                       x::Ptr{Float32}, ix::Ptr{Cint}, jx::Ptr{Cint}, z::Ptr{Float32},
-                       g::Ptr{Float32}, rinfo::Ptr{Float32}, ba::Ptr{Float32}, indb::Ptr{Cint},
-                       ipb::Ptr{Cint}, iwb::Ptr{Cint}, w::Ptr{Float32}, v::Ptr{Float32},
-                       ir::Ptr{Cint}, y::Ptr{Float32}, yy::Ptr{Float32}, ib::Ref{Cint},
-                       i15::Ptr{Cint}, c15::Ptr{Float32})::Cvoid
-end
-
-function la04d_64(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, x, ix, jx, z, g, rinfo, ba,
-                  indb, ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
-  @ccall libhsl_subset_64.la04d_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
-                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
-                                    c::Ptr{Float32}, bnd::Ptr{Float32}, kb::Ref{Int64},
-                                    lb::Ref{Int64}, job::Ref{Int64}, cntl::Ptr{Float32},
-                                    x::Ptr{Float32}, ix::Ptr{Int64}, jx::Ptr{Int64},
-                                    z::Ptr{Float32}, g::Ptr{Float32}, rinfo::Ptr{Float32},
-                                    ba::Ptr{Float32}, indb::Ptr{Int64}, ipb::Ptr{Int64},
-                                    iwb::Ptr{Int64}, w::Ptr{Float32}, v::Ptr{Float32},
-                                    ir::Ptr{Int64}, y::Ptr{Float32}, yy::Ptr{Float32},
-                                    ib::Ref{Int64}, i15::Ptr{Int64}, c15::Ptr{Float32})::Cvoid
-end
-
-function la04e(a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba, indb, ipb, iwb, w, y, ib, trans,
-               i15, c15)
-  @ccall libhsl.la04e_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                       n::Ref{Cint}, b::Ptr{Float32}, x::Ptr{Float32}, dx::Ref{Float32},
-                       ix::Ptr{Cint}, jin::Ref{Cint}, rinfo::Ptr{Float32}, ba::Ptr{Float32},
-                       indb::Ptr{Cint}, ipb::Ptr{Cint}, iwb::Ptr{Cint}, w::Ptr{Float32},
-                       y::Ptr{Float32}, ib::Ref{Cint}, trans::Ref{Cint}, i15::Ptr{Cint},
-                       c15::Ptr{Float32})::Cvoid
-end
-
-function la04e_64(a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba, indb, ipb, iwb, w, y, ib,
-                  trans, i15, c15)
-  @ccall libhsl_subset_64.la04e_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
-                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
-                                    x::Ptr{Float32}, dx::Ref{Float32}, ix::Ptr{Int64},
-                                    jin::Ref{Int64}, rinfo::Ptr{Float32}, ba::Ptr{Float32},
-                                    indb::Ptr{Int64}, ipb::Ptr{Int64}, iwb::Ptr{Int64},
-                                    w::Ptr{Float32}, y::Ptr{Float32}, ib::Ref{Int64},
-                                    trans::Ref{Int64}, i15::Ptr{Int64}, c15::Ptr{Float32})::Cvoid
-end
-
-function la04s(a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs, ws, jcn)
-  @ccall libhsl.la04s_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
-                       n::Ref{Cint}, b::Ptr{Float32}, c::Ptr{Float32}, bnd::Ptr{Float32},
-                       kb::Ref{Cint}, sigma::Ref{Float32}, rs::Ptr{Float32}, cs::Ptr{Float32},
-                       ws::Ptr{Float32}, jcn::Ptr{Cint})::Cvoid
-end
-
-function la04s_64(a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs, ws, jcn)
-  @ccall libhsl_subset_64.la04s_64_(a::Ptr{Float32}, la::Ref{Int64}, irn::Ptr{Int64},
-                                    ip::Ptr{Int64}, m::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
-                                    c::Ptr{Float32}, bnd::Ptr{Float32}, kb::Ref{Int64},
-                                    sigma::Ref{Float32}, rs::Ptr{Float32}, cs::Ptr{Float32},
-                                    ws::Ptr{Float32}, jcn::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/la15.jl b/src/Fortran/la15.jl
deleted file mode 100644
index db3fce9..0000000
--- a/src/Fortran/la15.jl
+++ /dev/null
@@ -1,120 +0,0 @@
-function la15id(icntl, cntl, keep)
-  @ccall libhsl.la15id_(icntl::Ptr{Cint}, cntl::Ptr{Float64}, keep::Ptr{Cint})::Cvoid
-end
-
-function la15id_64(icntl, cntl, keep)
-  @ccall libhsl_subset_64.la15id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64}, keep::Ptr{Int64})::Cvoid
-end
-
-function la15ad(a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl, keep)
-  @ccall libhsl.la15ad_(a::Ptr{Float64}, ind::Ptr{Cint}, nzero::Ref{Cint}, ia::Ref{Cint},
-                        n::Ref{Cint}, ip::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float64},
-                        g::Ref{Float64}, u::Ref{Float64}, icntl::Ptr{Cint}, cntl::Ptr{Float64},
-                        keep::Ptr{Cint})::Cvoid
-end
-
-function la15ad_64(a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl, keep)
-  @ccall libhsl_subset_64.la15ad_64_(a::Ptr{Float64}, ind::Ptr{Int64}, nzero::Ref{Int64},
-                                     ia::Ref{Int64}, n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64},
-                                     w::Ptr{Float64}, g::Ref{Float64}, u::Ref{Float64},
-                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, keep::Ptr{Int64})::Cvoid
-end
-
-function la15bd(a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
-  @ccall libhsl.la15bd_(a::Ptr{Float64}, ind::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ip::Ptr{Cint},
-                        iw::Ptr{Cint}, w::Ptr{Float64}, g::Ref{Float64}, b::Ptr{Float64},
-                        trans::Ref{Cint}, icntl::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
-end
-
-function la15bd_64(a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
-  @ccall libhsl_subset_64.la15bd_64_(a::Ptr{Float64}, ind::Ptr{Int64}, ia::Ref{Int64},
-                                     n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float64},
-                                     g::Ref{Float64}, b::Ptr{Float64}, trans::Ref{Int64},
-                                     icntl::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
-end
-
-function la15cd(a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl, keep)
-  @ccall libhsl.la15cd_(a::Ptr{Float64}, ind::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ip::Ptr{Cint},
-                        iw::Ptr{Cint}, w::Ptr{Float64}, g::Ref{Float64}, u::Ref{Float64},
-                        mm::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float64}, keep::Ptr{Cint})::Cvoid
-end
-
-function la15cd_64(a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl, keep)
-  @ccall libhsl_subset_64.la15cd_64_(a::Ptr{Float64}, ind::Ptr{Int64}, ia::Ref{Int64},
-                                     n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float64},
-                                     g::Ref{Float64}, u::Ref{Float64}, mm::Ref{Int64},
-                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, keep::Ptr{Int64})::Cvoid
-end
-
-function la15ed(a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
-  @ccall libhsl.la15ed_(a::Ptr{Float64}, irn::Ptr{Cint}, ip::Ptr{Cint}, n::Ref{Cint}, iw::Ptr{Cint},
-                        ia::Ref{Cint}, reals::Ref{Cint}, ncp::Ref{Cint}, lrow::Ref{Cint},
-                        lcol::Ref{Cint})::Cvoid
-end
-
-function la15ed_64(a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
-  @ccall libhsl_subset_64.la15ed_64_(a::Ptr{Float64}, irn::Ptr{Int64}, ip::Ptr{Int64},
-                                     n::Ref{Int64}, iw::Ptr{Int64}, ia::Ref{Int64},
-                                     reals::Ref{Int64}, ncp::Ref{Int64}, lrow::Ref{Int64},
-                                     lcol::Ref{Int64})::Cvoid
-end
-
-function la15i(icntl, cntl, keep)
-  @ccall libhsl.la15i_(icntl::Ptr{Cint}, cntl::Ptr{Float32}, keep::Ptr{Cint})::Cvoid
-end
-
-function la15i_64(icntl, cntl, keep)
-  @ccall libhsl_subset_64.la15i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32}, keep::Ptr{Int64})::Cvoid
-end
-
-function la15a(a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl, keep)
-  @ccall libhsl.la15a_(a::Ptr{Float32}, ind::Ptr{Cint}, nzero::Ref{Cint}, ia::Ref{Cint},
-                       n::Ref{Cint}, ip::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float32}, g::Ref{Float32},
-                       u::Ref{Float32}, icntl::Ptr{Cint}, cntl::Ptr{Float32},
-                       keep::Ptr{Cint})::Cvoid
-end
-
-function la15a_64(a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl, keep)
-  @ccall libhsl_subset_64.la15a_64_(a::Ptr{Float32}, ind::Ptr{Int64}, nzero::Ref{Int64},
-                                    ia::Ref{Int64}, n::Ref{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64},
-                                    w::Ptr{Float32}, g::Ref{Float32}, u::Ref{Float32},
-                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, keep::Ptr{Int64})::Cvoid
-end
-
-function la15b(a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
-  @ccall libhsl.la15b_(a::Ptr{Float32}, ind::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ip::Ptr{Cint},
-                       iw::Ptr{Cint}, w::Ptr{Float32}, g::Ref{Float32}, b::Ptr{Float32},
-                       trans::Ref{Cint}, icntl::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
-end
-
-function la15b_64(a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
-  @ccall libhsl_subset_64.la15b_64_(a::Ptr{Float32}, ind::Ptr{Int64}, ia::Ref{Int64}, n::Ref{Int64},
-                                    ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float32},
-                                    g::Ref{Float32}, b::Ptr{Float32}, trans::Ref{Int64},
-                                    icntl::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
-end
-
-function la15c(a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl, keep)
-  @ccall libhsl.la15c_(a::Ptr{Float32}, ind::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ip::Ptr{Cint},
-                       iw::Ptr{Cint}, w::Ptr{Float32}, g::Ref{Float32}, u::Ref{Float32},
-                       mm::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float32}, keep::Ptr{Cint})::Cvoid
-end
-
-function la15c_64(a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl, keep)
-  @ccall libhsl_subset_64.la15c_64_(a::Ptr{Float32}, ind::Ptr{Int64}, ia::Ref{Int64}, n::Ref{Int64},
-                                    ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float32},
-                                    g::Ref{Float32}, u::Ref{Float32}, mm::Ref{Int64},
-                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, keep::Ptr{Int64})::Cvoid
-end
-
-function la15e(a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
-  @ccall libhsl.la15e_(a::Ptr{Float32}, irn::Ptr{Cint}, ip::Ptr{Cint}, n::Ref{Cint}, iw::Ptr{Cint},
-                       ia::Ref{Cint}, reals::Ref{Cint}, ncp::Ref{Cint}, lrow::Ref{Cint},
-                       lcol::Ref{Cint})::Cvoid
-end
-
-function la15e_64(a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
-  @ccall libhsl_subset_64.la15e_64_(a::Ptr{Float32}, irn::Ptr{Int64}, ip::Ptr{Int64}, n::Ref{Int64},
-                                    iw::Ptr{Int64}, ia::Ref{Int64}, reals::Ref{Int64},
-                                    ncp::Ref{Int64}, lrow::Ref{Int64}, lcol::Ref{Int64})::Cvoid
-end
diff --git a/src/Fortran/btf.jl b/src/Fortran/libhsl/btf.jl
similarity index 100%
rename from src/Fortran/btf.jl
rename to src/Fortran/libhsl/btf.jl
diff --git a/src/Fortran/ea16.jl b/src/Fortran/libhsl/ea16.jl
similarity index 100%
rename from src/Fortran/ea16.jl
rename to src/Fortran/libhsl/ea16.jl
diff --git a/src/Fortran/ea22.jl b/src/Fortran/libhsl/ea22.jl
similarity index 100%
rename from src/Fortran/ea22.jl
rename to src/Fortran/libhsl/ea22.jl
diff --git a/src/Fortran/ea25.jl b/src/Fortran/libhsl/ea25.jl
similarity index 100%
rename from src/Fortran/ea25.jl
rename to src/Fortran/libhsl/ea25.jl
diff --git a/src/Fortran/eb13.jl b/src/Fortran/libhsl/eb13.jl
similarity index 100%
rename from src/Fortran/eb13.jl
rename to src/Fortran/libhsl/eb13.jl
diff --git a/src/Fortran/eb22.jl b/src/Fortran/libhsl/eb22.jl
similarity index 100%
rename from src/Fortran/eb22.jl
rename to src/Fortran/libhsl/eb22.jl
diff --git a/src/Fortran/ep25.jl b/src/Fortran/libhsl/ep25.jl
similarity index 100%
rename from src/Fortran/ep25.jl
rename to src/Fortran/libhsl/ep25.jl
diff --git a/src/Fortran/libhsl/fa01.jl b/src/Fortran/libhsl/fa01.jl
new file mode 100644
index 0000000..959fd83
--- /dev/null
+++ b/src/Fortran/libhsl/fa01.jl
@@ -0,0 +1,31 @@
+function fa01bd(max, nrand)
+  @ccall libhsl.fa01bd_(max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
+end
+
+function fa01cd(il, ir)
+  @ccall libhsl.fa01cd_(il::Ref{Cint}, ir::Ref{Cint})::Cvoid
+end
+
+function fa01dd(il, ir)
+  @ccall libhsl.fa01dd_(il::Ref{Cint}, ir::Ref{Cint})::Cvoid
+end
+
+function fa01ad(i)
+  @ccall libhsl.fa01ad_(i::Ref{Cint})::Float64
+end
+
+function fa01b(max, nrand)
+  @ccall libhsl.fa01b_(max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
+end
+
+function fa01c(il, ir)
+  @ccall libhsl.fa01c_(il::Ref{Cint}, ir::Ref{Cint})::Cvoid
+end
+
+function fa01d(il, ir)
+  @ccall libhsl.fa01d_(il::Ref{Cint}, ir::Ref{Cint})::Cvoid
+end
+
+function fa01a(i)
+  @ccall libhsl.fa01a_(i::Ref{Cint})::Float32
+end
diff --git a/src/Fortran/libhsl/fa04.jl b/src/Fortran/libhsl/fa04.jl
new file mode 100644
index 0000000..56fbbac
--- /dev/null
+++ b/src/Fortran/libhsl/fa04.jl
@@ -0,0 +1,31 @@
+function fa04bd(max, nrand)
+  @ccall libhsl.fa04bd_(max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
+end
+
+function fa04cd(igen)
+  @ccall libhsl.fa04cd_(igen::Ref{Cint})::Cvoid
+end
+
+function fa04dd(igen)
+  @ccall libhsl.fa04dd_(igen::Ref{Cint})::Cvoid
+end
+
+function fa04ad(i)
+  @ccall libhsl.fa04ad_(i::Ref{Cint})::Float64
+end
+
+function fa04b(max, nrand)
+  @ccall libhsl.fa04b_(max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
+end
+
+function fa04c(igen)
+  @ccall libhsl.fa04c_(igen::Ref{Cint})::Cvoid
+end
+
+function fa04d(igen)
+  @ccall libhsl.fa04d_(igen::Ref{Cint})::Cvoid
+end
+
+function fa04a(i)
+  @ccall libhsl.fa04a_(i::Ref{Cint})::Float32
+end
diff --git a/src/Fortran/libhsl/fa14.jl b/src/Fortran/libhsl/fa14.jl
new file mode 100644
index 0000000..aa137c6
--- /dev/null
+++ b/src/Fortran/libhsl/fa14.jl
@@ -0,0 +1,39 @@
+function fa14bd(ix, max, nrand)
+  @ccall libhsl.fa14bd_(ix::Ref{Cint}, max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
+end
+
+function fa14cd(ix, igen)
+  @ccall libhsl.fa14cd_(ix::Ref{Cint}, igen::Ref{Cint})::Cvoid
+end
+
+function fa14dd(ix, igen)
+  @ccall libhsl.fa14dd_(ix::Ref{Cint}, igen::Ref{Cint})::Cvoid
+end
+
+function fa14id(ix)
+  @ccall libhsl.fa14id_(ix::Ref{Cint})::Cvoid
+end
+
+function fa14ad(ix, i)
+  @ccall libhsl.fa14ad_(ix::Ref{Cint}, i::Ref{Cint})::Float64
+end
+
+function fa14b(ix, max, nrand)
+  @ccall libhsl.fa14b_(ix::Ref{Cint}, max::Ref{Cint}, nrand::Ref{Cint})::Cvoid
+end
+
+function fa14c(ix, igen)
+  @ccall libhsl.fa14c_(ix::Ref{Cint}, igen::Ref{Cint})::Cvoid
+end
+
+function fa14d(ix, igen)
+  @ccall libhsl.fa14d_(ix::Ref{Cint}, igen::Ref{Cint})::Cvoid
+end
+
+function fa14i(ix)
+  @ccall libhsl.fa14i_(ix::Ref{Cint})::Cvoid
+end
+
+function fa14a(ix, i)
+  @ccall libhsl.fa14a_(ix::Ref{Cint}, i::Ref{Cint})::Float32
+end
diff --git a/src/Fortran/fd05.jl b/src/Fortran/libhsl/fd05.jl
similarity index 100%
rename from src/Fortran/fd05.jl
rename to src/Fortran/libhsl/fd05.jl
diff --git a/src/Fortran/libhsl/fd15.jl b/src/Fortran/libhsl/fd15.jl
new file mode 100644
index 0000000..2d3b36b
--- /dev/null
+++ b/src/Fortran/libhsl/fd15.jl
@@ -0,0 +1,7 @@
+function fd15ad(t)
+  @ccall libhsl.fd15ad_(t::Ref{UInt8}, 1::Csize_t)::Float64
+end
+
+function fd15a(t)
+  @ccall libhsl.fd15a_(t::Ref{UInt8}, 1::Csize_t)::Float32
+end
diff --git a/src/Fortran/id05.jl b/src/Fortran/libhsl/id05.jl
similarity index 100%
rename from src/Fortran/id05.jl
rename to src/Fortran/libhsl/id05.jl
diff --git a/src/Fortran/kb05.jl b/src/Fortran/libhsl/kb05.jl
similarity index 100%
rename from src/Fortran/kb05.jl
rename to src/Fortran/libhsl/kb05.jl
diff --git a/src/Fortran/kb06.jl b/src/Fortran/libhsl/kb06.jl
similarity index 100%
rename from src/Fortran/kb06.jl
rename to src/Fortran/libhsl/kb06.jl
diff --git a/src/Fortran/libhsl/kb07.jl b/src/Fortran/libhsl/kb07.jl
new file mode 100644
index 0000000..1b3cb50
--- /dev/null
+++ b/src/Fortran/libhsl/kb07.jl
@@ -0,0 +1,11 @@
+function kb07ad(count, n, index)
+  @ccall libhsl.kb07ad_(count::Ptr{Float64}, n::Ref{Cint}, index::Ptr{Cint})::Cvoid
+end
+
+function kb07ai(count, n, index)
+  @ccall libhsl.kb07ai_(count::Ptr{Cint}, n::Ref{Cint}, index::Ptr{Cint})::Cvoid
+end
+
+function kb07a(count, n, index)
+  @ccall libhsl.kb07a_(count::Ptr{Float32}, n::Ref{Cint}, index::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/kb08.jl b/src/Fortran/libhsl/kb08.jl
similarity index 100%
rename from src/Fortran/kb08.jl
rename to src/Fortran/libhsl/kb08.jl
diff --git a/src/Fortran/libhsl/la04.jl b/src/Fortran/libhsl/la04.jl
new file mode 100644
index 0000000..65d2b7e
--- /dev/null
+++ b/src/Fortran/libhsl/la04.jl
@@ -0,0 +1,123 @@
+function la04ad(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, x, z, g, rinfo, ws, lws,
+                iws, liws)
+  @ccall libhsl.la04ad_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                        n::Ref{Cint}, b::Ptr{Float64}, c::Ptr{Float64}, bnd::Ptr{Float64},
+                        kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float64},
+                        ix::Ptr{Cint}, jx::Ptr{Cint}, x::Ptr{Float64}, z::Ptr{Float64},
+                        g::Ptr{Float64}, rinfo::Ptr{Float64}, ws::Ptr{Float64}, lws::Ref{Cint},
+                        iws::Ptr{Cint}, liws::Ref{Cint})::Cvoid
+end
+
+function la04id(cntl)
+  @ccall libhsl.la04id_(cntl::Ptr{Float64})::Cvoid
+end
+
+function la04bd(a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo, iw, irow, pv, y)
+  @ccall libhsl.la04bd_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                        n::Ref{Cint}, bnd::Ptr{Float64}, kb::Ref{Cint}, cntl::Ptr{Float64},
+                        ix::Ptr{Cint}, g::Ptr{Float64}, rinfo::Ptr{Float64}, iw::Ptr{Cint},
+                        irow::Ptr{Cint}, pv::Ptr{Float64}, y::Ptr{Float64})::Cvoid
+end
+
+function la04cd(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, g, rinfo, x, z, ba, ib,
+                indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
+  @ccall libhsl.la04cd_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                        n::Ref{Cint}, b::Ptr{Float64}, c::Ptr{Float64}, bnd::Ptr{Float64},
+                        kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float64},
+                        ix::Ptr{Cint}, jx::Ptr{Cint}, g::Ptr{Float64}, rinfo::Ptr{Float64},
+                        x::Ptr{Float64}, z::Ptr{Float64}, ba::Ptr{Float64}, ib::Ref{Cint},
+                        indb::Ptr{Cint}, ipb::Ptr{Cint}, iwb::Ptr{Cint}, v::Ptr{Float64},
+                        w::Ptr{Float64}, y::Ptr{Float64}, yy::Ptr{Float64}, i15::Ptr{Cint},
+                        c15::Ptr{Float64}, iseed::Ref{Cint})::Cvoid
+end
+
+function la04dd(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, x, ix, jx, z, g, rinfo, ba,
+                indb, ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
+  @ccall libhsl.la04dd_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                        n::Ref{Cint}, b::Ptr{Float64}, c::Ptr{Float64}, bnd::Ptr{Float64},
+                        kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float64},
+                        x::Ptr{Float64}, ix::Ptr{Cint}, jx::Ptr{Cint}, z::Ptr{Float64},
+                        g::Ptr{Float64}, rinfo::Ptr{Float64}, ba::Ptr{Float64}, indb::Ptr{Cint},
+                        ipb::Ptr{Cint}, iwb::Ptr{Cint}, w::Ptr{Float64}, v::Ptr{Float64},
+                        ir::Ptr{Cint}, y::Ptr{Float64}, yy::Ptr{Float64}, ib::Ref{Cint},
+                        i15::Ptr{Cint}, c15::Ptr{Float64})::Cvoid
+end
+
+function la04ed(a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba, indb, ipb, iwb, w, y, ib, trans,
+                i15, c15)
+  @ccall libhsl.la04ed_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                        n::Ref{Cint}, b::Ptr{Float64}, x::Ptr{Float64}, dx::Ref{Float64},
+                        ix::Ptr{Cint}, jin::Ref{Cint}, rinfo::Ptr{Float64}, ba::Ptr{Float64},
+                        indb::Ptr{Cint}, ipb::Ptr{Cint}, iwb::Ptr{Cint}, w::Ptr{Float64},
+                        y::Ptr{Float64}, ib::Ref{Cint}, trans::Ref{Cint}, i15::Ptr{Cint},
+                        c15::Ptr{Float64})::Cvoid
+end
+
+function la04sd(a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs, ws, jcn)
+  @ccall libhsl.la04sd_(a::Ptr{Float64}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                        n::Ref{Cint}, b::Ptr{Float64}, c::Ptr{Float64}, bnd::Ptr{Float64},
+                        kb::Ref{Cint}, sigma::Ref{Float64}, rs::Ptr{Float64}, cs::Ptr{Float64},
+                        ws::Ptr{Float64}, jcn::Ptr{Cint})::Cvoid
+end
+
+function la04a(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, x, z, g, rinfo, ws, lws,
+               iws, liws)
+  @ccall libhsl.la04a_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                       n::Ref{Cint}, b::Ptr{Float32}, c::Ptr{Float32}, bnd::Ptr{Float32},
+                       kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float32},
+                       ix::Ptr{Cint}, jx::Ptr{Cint}, x::Ptr{Float32}, z::Ptr{Float32},
+                       g::Ptr{Float32}, rinfo::Ptr{Float32}, ws::Ptr{Float32}, lws::Ref{Cint},
+                       iws::Ptr{Cint}, liws::Ref{Cint})::Cvoid
+end
+
+function la04i(cntl)
+  @ccall libhsl.la04i_(cntl::Ptr{Float32})::Cvoid
+end
+
+function la04b(a, la, irn, ip, m, n, bnd, kb, cntl, ix, g, rinfo, iw, irow, pv, y)
+  @ccall libhsl.la04b_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                       n::Ref{Cint}, bnd::Ptr{Float32}, kb::Ref{Cint}, cntl::Ptr{Float32},
+                       ix::Ptr{Cint}, g::Ptr{Float32}, rinfo::Ptr{Float32}, iw::Ptr{Cint},
+                       irow::Ptr{Cint}, pv::Ptr{Float32}, y::Ptr{Float32})::Cvoid
+end
+
+function la04c(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, ix, jx, g, rinfo, x, z, ba, ib,
+               indb, ipb, iwb, v, w, y, yy, i15, c15, iseed)
+  @ccall libhsl.la04c_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                       n::Ref{Cint}, b::Ptr{Float32}, c::Ptr{Float32}, bnd::Ptr{Float32},
+                       kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float32},
+                       ix::Ptr{Cint}, jx::Ptr{Cint}, g::Ptr{Float32}, rinfo::Ptr{Float32},
+                       x::Ptr{Float32}, z::Ptr{Float32}, ba::Ptr{Float32}, ib::Ref{Cint},
+                       indb::Ptr{Cint}, ipb::Ptr{Cint}, iwb::Ptr{Cint}, v::Ptr{Float32},
+                       w::Ptr{Float32}, y::Ptr{Float32}, yy::Ptr{Float32}, i15::Ptr{Cint},
+                       c15::Ptr{Float32}, iseed::Ref{Cint})::Cvoid
+end
+
+function la04d(a, la, irn, ip, m, n, b, c, bnd, kb, lb, job, cntl, x, ix, jx, z, g, rinfo, ba, indb,
+               ipb, iwb, w, v, ir, y, yy, ib, i15, c15)
+  @ccall libhsl.la04d_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                       n::Ref{Cint}, b::Ptr{Float32}, c::Ptr{Float32}, bnd::Ptr{Float32},
+                       kb::Ref{Cint}, lb::Ref{Cint}, job::Ref{Cint}, cntl::Ptr{Float32},
+                       x::Ptr{Float32}, ix::Ptr{Cint}, jx::Ptr{Cint}, z::Ptr{Float32},
+                       g::Ptr{Float32}, rinfo::Ptr{Float32}, ba::Ptr{Float32}, indb::Ptr{Cint},
+                       ipb::Ptr{Cint}, iwb::Ptr{Cint}, w::Ptr{Float32}, v::Ptr{Float32},
+                       ir::Ptr{Cint}, y::Ptr{Float32}, yy::Ptr{Float32}, ib::Ref{Cint},
+                       i15::Ptr{Cint}, c15::Ptr{Float32})::Cvoid
+end
+
+function la04e(a, la, irn, ip, m, n, b, x, dx, ix, jin, rinfo, ba, indb, ipb, iwb, w, y, ib, trans,
+               i15, c15)
+  @ccall libhsl.la04e_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                       n::Ref{Cint}, b::Ptr{Float32}, x::Ptr{Float32}, dx::Ref{Float32},
+                       ix::Ptr{Cint}, jin::Ref{Cint}, rinfo::Ptr{Float32}, ba::Ptr{Float32},
+                       indb::Ptr{Cint}, ipb::Ptr{Cint}, iwb::Ptr{Cint}, w::Ptr{Float32},
+                       y::Ptr{Float32}, ib::Ref{Cint}, trans::Ref{Cint}, i15::Ptr{Cint},
+                       c15::Ptr{Float32})::Cvoid
+end
+
+function la04s(a, la, irn, ip, m, n, b, c, bnd, kb, sigma, rs, cs, ws, jcn)
+  @ccall libhsl.la04s_(a::Ptr{Float32}, la::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, m::Ref{Cint},
+                       n::Ref{Cint}, b::Ptr{Float32}, c::Ptr{Float32}, bnd::Ptr{Float32},
+                       kb::Ref{Cint}, sigma::Ref{Float32}, rs::Ptr{Float32}, cs::Ptr{Float32},
+                       ws::Ptr{Float32}, jcn::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/libhsl/la15.jl b/src/Fortran/libhsl/la15.jl
new file mode 100644
index 0000000..e15215b
--- /dev/null
+++ b/src/Fortran/libhsl/la15.jl
@@ -0,0 +1,57 @@
+function la15id(icntl, cntl, keep)
+  @ccall libhsl.la15id_(icntl::Ptr{Cint}, cntl::Ptr{Float64}, keep::Ptr{Cint})::Cvoid
+end
+
+function la15ad(a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl, keep)
+  @ccall libhsl.la15ad_(a::Ptr{Float64}, ind::Ptr{Cint}, nzero::Ref{Cint}, ia::Ref{Cint},
+                        n::Ref{Cint}, ip::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float64},
+                        g::Ref{Float64}, u::Ref{Float64}, icntl::Ptr{Cint}, cntl::Ptr{Float64},
+                        keep::Ptr{Cint})::Cvoid
+end
+
+function la15bd(a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
+  @ccall libhsl.la15bd_(a::Ptr{Float64}, ind::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ip::Ptr{Cint},
+                        iw::Ptr{Cint}, w::Ptr{Float64}, g::Ref{Float64}, b::Ptr{Float64},
+                        trans::Ref{Cint}, icntl::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
+end
+
+function la15cd(a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl, keep)
+  @ccall libhsl.la15cd_(a::Ptr{Float64}, ind::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ip::Ptr{Cint},
+                        iw::Ptr{Cint}, w::Ptr{Float64}, g::Ref{Float64}, u::Ref{Float64},
+                        mm::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float64}, keep::Ptr{Cint})::Cvoid
+end
+
+function la15ed(a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
+  @ccall libhsl.la15ed_(a::Ptr{Float64}, irn::Ptr{Cint}, ip::Ptr{Cint}, n::Ref{Cint}, iw::Ptr{Cint},
+                        ia::Ref{Cint}, reals::Ref{Cint}, ncp::Ref{Cint}, lrow::Ref{Cint},
+                        lcol::Ref{Cint})::Cvoid
+end
+
+function la15i(icntl, cntl, keep)
+  @ccall libhsl.la15i_(icntl::Ptr{Cint}, cntl::Ptr{Float32}, keep::Ptr{Cint})::Cvoid
+end
+
+function la15a(a, ind, nzero, ia, n, ip, iw, w, g, u, icntl, cntl, keep)
+  @ccall libhsl.la15a_(a::Ptr{Float32}, ind::Ptr{Cint}, nzero::Ref{Cint}, ia::Ref{Cint},
+                       n::Ref{Cint}, ip::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float32}, g::Ref{Float32},
+                       u::Ref{Float32}, icntl::Ptr{Cint}, cntl::Ptr{Float32},
+                       keep::Ptr{Cint})::Cvoid
+end
+
+function la15b(a, ind, ia, n, ip, iw, w, g, b, trans, icntl, keep)
+  @ccall libhsl.la15b_(a::Ptr{Float32}, ind::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ip::Ptr{Cint},
+                       iw::Ptr{Cint}, w::Ptr{Float32}, g::Ref{Float32}, b::Ptr{Float32},
+                       trans::Ref{Cint}, icntl::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
+end
+
+function la15c(a, ind, ia, n, ip, iw, w, g, u, mm, icntl, cntl, keep)
+  @ccall libhsl.la15c_(a::Ptr{Float32}, ind::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ip::Ptr{Cint},
+                       iw::Ptr{Cint}, w::Ptr{Float32}, g::Ref{Float32}, u::Ref{Float32},
+                       mm::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float32}, keep::Ptr{Cint})::Cvoid
+end
+
+function la15e(a, irn, ip, n, iw, ia, reals, ncp, lrow, lcol)
+  @ccall libhsl.la15e_(a::Ptr{Float32}, irn::Ptr{Cint}, ip::Ptr{Cint}, n::Ref{Cint}, iw::Ptr{Cint},
+                       ia::Ref{Cint}, reals::Ref{Cint}, ncp::Ref{Cint}, lrow::Ref{Cint},
+                       lcol::Ref{Cint})::Cvoid
+end
diff --git a/src/Fortran/libhsl/ma27.jl b/src/Fortran/libhsl/ma27.jl
new file mode 100644
index 0000000..e56f466
--- /dev/null
+++ b/src/Fortran/libhsl/ma27.jl
@@ -0,0 +1,194 @@
+function ma27id(icntl, cntl)
+  @ccall libhsl.ma27id_(icntl::Ptr{Cint}, cntl::Ptr{Float64})::Cvoid
+end
+
+function ma27ad(n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps, iflag, icntl, cntl, info, ops)
+  @ccall libhsl.ma27ad_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
+                        liw::Ref{Cint}, ikeep::Ptr{Cint}, iw1::Ptr{Cint}, nsteps::Ref{Cint},
+                        iflag::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float64}, info::Ptr{Cint},
+                        ops::Ref{Float64})::Cvoid
+end
+
+function ma27bd(n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps, maxfrt, iw1, icntl, cntl, info)
+  @ccall libhsl.ma27bd_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint},
+                        a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                        ikeep::Ptr{Cint}, nsteps::Ref{Cint}, maxfrt::Ref{Cint}, iw1::Ptr{Cint},
+                        icntl::Ptr{Cint}, cntl::Ptr{Float64}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27cd(n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps, icntl, info)
+  @ccall libhsl.ma27cd_(n::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                        w::Ptr{Float64}, maxfrt::Ref{Cint}, rhs::Ptr{Float64}, iw1::Ptr{Cint},
+                        nsteps::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27gd(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
+  @ccall libhsl.ma27gd_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
+                        lw::Ref{Cint}, ipe::Ptr{Cint}, iq::Ptr{Cint}, flag::Ptr{Cint},
+                        iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27hd(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
+  @ccall libhsl.ma27hd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                        nv::Ptr{Cint}, nxt::Ptr{Cint}, lst::Ptr{Cint}, ipd::Ptr{Cint},
+                        flag::Ptr{Cint}, iovflo::Ref{Cint}, ncmpa::Ref{Cint},
+                        fratio::Ref{Float64})::Cvoid
+end
+
+function ma27ud(n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl.ma27ud_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                        ncmpa::Ref{Cint})::Cvoid
+end
+
+function ma27jd(n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr, icntl, info)
+  @ccall libhsl.ma27jd_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint},
+                        perm::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, ipe::Ptr{Cint},
+                        iq::Ptr{Cint}, flag::Ptr{Cint}, iwfr::Ref{Cint}, icntl::Ptr{Cint},
+                        info::Ptr{Cint})::Cvoid
+end
+
+function ma27kd(n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
+  @ccall libhsl.ma27kd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                        ips::Ptr{Cint}, ipv::Ptr{Cint}, nv::Ptr{Cint}, flag::Ptr{Cint},
+                        ncmpa::Ref{Cint})::Cvoid
+end
+
+function ma27ld(n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
+  @ccall libhsl.ma27ld_(n::Ref{Cint}, ipe::Ptr{Cint}, nv::Ptr{Cint}, ips::Ptr{Cint}, ne::Ptr{Cint},
+                        na::Ptr{Cint}, nd::Ptr{Cint}, nsteps::Ref{Cint}, nemin::Ref{Cint})::Cvoid
+end
+
+function ma27md(n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki, lstkr, iw, info, ops)
+  @ccall libhsl.ma27md_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint},
+                        perm::Ptr{Cint}, na::Ptr{Cint}, ne::Ptr{Cint}, nd::Ptr{Cint},
+                        nsteps::Ref{Cint}, lstki::Ptr{Cint}, lstkr::Ptr{Cint}, iw::Ptr{Cint},
+                        info::Ptr{Cint}, ops::Ref{Float64})::Cvoid
+end
+
+function ma27nd(n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2, icntl, info)
+  @ccall libhsl.ma27nd_(n::Ref{Cint}, nz::Ref{Cint}, nz1::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint},
+                        irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                        perm::Ptr{Cint}, iw2::Ptr{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27od(n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt, nelim, iw2, icntl, cntl, info)
+  @ccall libhsl.ma27od_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint},
+                        liw::Ref{Cint}, perm::Ptr{Cint}, nstk::Ptr{Cint}, nsteps::Ref{Cint},
+                        maxfrt::Ref{Cint}, nelim::Ptr{Cint}, iw2::Ptr{Cint}, icntl::Ptr{Cint},
+                        cntl::Ptr{Float64}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27pd(a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
+  @ccall libhsl.ma27pd_(a::Ptr{Float64}, iw::Ptr{Cint}, j1::Ref{Cint}, j2::Ref{Cint},
+                        itop::Ref{Cint}, ireal::Ref{Cint}, ncmpbr::Ref{Cint},
+                        ncmpbi::Ref{Cint})::Cvoid
+end
+
+function ma27qd(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
+  @ccall libhsl.ma27qd_(n::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                        w::Ptr{Float64}, maxfnt::Ref{Cint}, rhs::Ptr{Float64}, iw2::Ptr{Cint},
+                        nblk::Ref{Cint}, latop::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma27rd(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
+  @ccall libhsl.ma27rd_(n::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                        w::Ptr{Float64}, maxfnt::Ref{Cint}, rhs::Ptr{Float64}, iw2::Ptr{Cint},
+                        nblk::Ref{Cint}, latop::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma27i(icntl, cntl)
+  @ccall libhsl.ma27i_(icntl::Ptr{Cint}, cntl::Ptr{Float32})::Cvoid
+end
+
+function ma27a(n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps, iflag, icntl, cntl, info, ops)
+  @ccall libhsl.ma27a_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
+                       liw::Ref{Cint}, ikeep::Ptr{Cint}, iw1::Ptr{Cint}, nsteps::Ref{Cint},
+                       iflag::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float32}, info::Ptr{Cint},
+                       ops::Ref{Float32})::Cvoid
+end
+
+function ma27b(n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps, maxfrt, iw1, icntl, cntl, info)
+  @ccall libhsl.ma27b_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, a::Ptr{Float32},
+                       la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint}, ikeep::Ptr{Cint},
+                       nsteps::Ref{Cint}, maxfrt::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint},
+                       cntl::Ptr{Float32}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27c(n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps, icntl, info)
+  @ccall libhsl.ma27c_(n::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                       w::Ptr{Float32}, maxfrt::Ref{Cint}, rhs::Ptr{Float32}, iw1::Ptr{Cint},
+                       nsteps::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27g(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
+  @ccall libhsl.ma27g_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
+                       lw::Ref{Cint}, ipe::Ptr{Cint}, iq::Ptr{Cint}, flag::Ptr{Cint},
+                       iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27h(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
+  @ccall libhsl.ma27h_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                       nv::Ptr{Cint}, nxt::Ptr{Cint}, lst::Ptr{Cint}, ipd::Ptr{Cint},
+                       flag::Ptr{Cint}, iovflo::Ref{Cint}, ncmpa::Ref{Cint},
+                       fratio::Ref{Float32})::Cvoid
+end
+
+function ma27u(n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl.ma27u_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                       ncmpa::Ref{Cint})::Cvoid
+end
+
+function ma27j(n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr, icntl, info)
+  @ccall libhsl.ma27j_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, perm::Ptr{Cint},
+                       iw::Ptr{Cint}, lw::Ref{Cint}, ipe::Ptr{Cint}, iq::Ptr{Cint}, flag::Ptr{Cint},
+                       iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27k(n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
+  @ccall libhsl.ma27k_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                       ips::Ptr{Cint}, ipv::Ptr{Cint}, nv::Ptr{Cint}, flag::Ptr{Cint},
+                       ncmpa::Ref{Cint})::Cvoid
+end
+
+function ma27l(n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
+  @ccall libhsl.ma27l_(n::Ref{Cint}, ipe::Ptr{Cint}, nv::Ptr{Cint}, ips::Ptr{Cint}, ne::Ptr{Cint},
+                       na::Ptr{Cint}, nd::Ptr{Cint}, nsteps::Ref{Cint}, nemin::Ref{Cint})::Cvoid
+end
+
+function ma27m(n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki, lstkr, iw, info, ops)
+  @ccall libhsl.ma27m_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, perm::Ptr{Cint},
+                       na::Ptr{Cint}, ne::Ptr{Cint}, nd::Ptr{Cint}, nsteps::Ref{Cint},
+                       lstki::Ptr{Cint}, lstkr::Ptr{Cint}, iw::Ptr{Cint}, info::Ptr{Cint},
+                       ops::Ref{Float32})::Cvoid
+end
+
+function ma27n(n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2, icntl, info)
+  @ccall libhsl.ma27n_(n::Ref{Cint}, nz::Ref{Cint}, nz1::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint},
+                       irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                       perm::Ptr{Cint}, iw2::Ptr{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27o(n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt, nelim, iw2, icntl, cntl, info)
+  @ccall libhsl.ma27o_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint},
+                       liw::Ref{Cint}, perm::Ptr{Cint}, nstk::Ptr{Cint}, nsteps::Ref{Cint},
+                       maxfrt::Ref{Cint}, nelim::Ptr{Cint}, iw2::Ptr{Cint}, icntl::Ptr{Cint},
+                       cntl::Ptr{Float32}, info::Ptr{Cint})::Cvoid
+end
+
+function ma27p(a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
+  @ccall libhsl.ma27p_(a::Ptr{Float32}, iw::Ptr{Cint}, j1::Ref{Cint}, j2::Ref{Cint},
+                       itop::Ref{Cint}, ireal::Ref{Cint}, ncmpbr::Ref{Cint},
+                       ncmpbi::Ref{Cint})::Cvoid
+end
+
+function ma27q(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
+  @ccall libhsl.ma27q_(n::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                       w::Ptr{Float32}, maxfnt::Ref{Cint}, rhs::Ptr{Float32}, iw2::Ptr{Cint},
+                       nblk::Ref{Cint}, latop::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma27r(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
+  @ccall libhsl.ma27r_(n::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                       w::Ptr{Float32}, maxfnt::Ref{Cint}, rhs::Ptr{Float32}, iw2::Ptr{Cint},
+                       nblk::Ref{Cint}, latop::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/libhsl/ma28.jl b/src/Fortran/libhsl/ma28.jl
new file mode 100644
index 0000000..b65ec38
--- /dev/null
+++ b/src/Fortran/libhsl/ma28.jl
@@ -0,0 +1,65 @@
+function ma28ad(n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w, iflag)
+  @ccall libhsl.ma28ad_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
+                        irn::Ptr{Cint}, lirn::Ref{Cint}, icn::Ptr{Cint}, u::Ref{Float64},
+                        ikeep::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float64}, iflag::Ref{Cint})::Cvoid
+end
+
+function ma28bd(n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w, iflag)
+  @ccall libhsl.ma28bd_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
+                        ivect::Ptr{Cint}, jvect::Ptr{Cint}, icn::Ptr{Cint}, ikeep::Ptr{Cint},
+                        iw::Ptr{Cint}, w::Ptr{Float64}, iflag::Ref{Cint})::Cvoid
+end
+
+function ma28cd(n, a, licn, icn, ikeep, rhs, w, mtype)
+  @ccall libhsl.ma28cd_(n::Ref{Cint}, a::Ptr{Float64}, licn::Ref{Cint}, icn::Ptr{Cint},
+                        ikeep::Ptr{Cint}, rhs::Ptr{Float64}, w::Ptr{Float64},
+                        mtype::Ref{Cint})::Cvoid
+end
+
+function ma28dd(n, a, licn, ivect, jvect, nz, icn, lenr, lenrl, lenoff, ip, iq, iw1, iw, w1, iflag)
+  @ccall libhsl.ma28dd_(n::Ref{Cint}, a::Ptr{Float64}, licn::Ref{Cint}, ivect::Ptr{Cint},
+                        jvect::Ptr{Cint}, nz::Ref{Cint}, icn::Ptr{Cint}, lenr::Ptr{Cint},
+                        lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, ip::Ptr{Cint}, iq::Ptr{Cint},
+                        iw1::Ptr{Cint}, iw::Ptr{Cint}, w1::Ref{Float64}, iflag::Ref{Cint})::Cvoid
+end
+
+function ma28id(n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep, rhs, x, r, w, mtype, prec, iflag)
+  @ccall libhsl.ma28id_(n::Ref{Cint}, nz::Ref{Cint}, aorg::Ptr{Float64}, irnorg::Ptr{Cint},
+                        icnorg::Ptr{Cint}, licn::Ref{Cint}, a::Ptr{Float64}, icn::Ptr{Cint},
+                        ikeep::Ptr{Cint}, rhs::Ptr{Float64}, x::Ptr{Float64}, r::Ptr{Float64},
+                        w::Ptr{Float64}, mtype::Ref{Cint}, prec::Ref{Float64},
+                        iflag::Ref{Cint})::Cvoid
+end
+
+function ma28a(n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w, iflag)
+  @ccall libhsl.ma28a_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
+                       irn::Ptr{Cint}, lirn::Ref{Cint}, icn::Ptr{Cint}, u::Ref{Float32},
+                       ikeep::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float32}, iflag::Ref{Cint})::Cvoid
+end
+
+function ma28b(n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w, iflag)
+  @ccall libhsl.ma28b_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
+                       ivect::Ptr{Cint}, jvect::Ptr{Cint}, icn::Ptr{Cint}, ikeep::Ptr{Cint},
+                       iw::Ptr{Cint}, w::Ptr{Float32}, iflag::Ref{Cint})::Cvoid
+end
+
+function ma28c(n, a, licn, icn, ikeep, rhs, w, mtype)
+  @ccall libhsl.ma28c_(n::Ref{Cint}, a::Ptr{Float32}, licn::Ref{Cint}, icn::Ptr{Cint},
+                       ikeep::Ptr{Cint}, rhs::Ptr{Float32}, w::Ptr{Float32},
+                       mtype::Ref{Cint})::Cvoid
+end
+
+function ma28d(n, a, licn, ivect, jvect, nz, icn, lenr, lenrl, lenoff, ip, iq, iw1, iw, w1, iflag)
+  @ccall libhsl.ma28d_(n::Ref{Cint}, a::Ptr{Float32}, licn::Ref{Cint}, ivect::Ptr{Cint},
+                       jvect::Ptr{Cint}, nz::Ref{Cint}, icn::Ptr{Cint}, lenr::Ptr{Cint},
+                       lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, ip::Ptr{Cint}, iq::Ptr{Cint},
+                       iw1::Ptr{Cint}, iw::Ptr{Cint}, w1::Ref{Float32}, iflag::Ref{Cint})::Cvoid
+end
+
+function ma28i(n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep, rhs, x, r, w, mtype, prec, iflag)
+  @ccall libhsl.ma28i_(n::Ref{Cint}, nz::Ref{Cint}, aorg::Ptr{Float32}, irnorg::Ptr{Cint},
+                       icnorg::Ptr{Cint}, licn::Ref{Cint}, a::Ptr{Float32}, icn::Ptr{Cint},
+                       ikeep::Ptr{Cint}, rhs::Ptr{Float32}, x::Ptr{Float32}, r::Ptr{Float32},
+                       w::Ptr{Float32}, mtype::Ref{Cint}, prec::Ref{Float32},
+                       iflag::Ref{Cint})::Cvoid
+end
diff --git a/src/Fortran/libhsl/ma30.jl b/src/Fortran/libhsl/ma30.jl
new file mode 100644
index 0000000..afdd625
--- /dev/null
+++ b/src/Fortran/libhsl/ma30.jl
@@ -0,0 +1,55 @@
+function ma30ad(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr, nextr,
+                lastc, nextc, iptr, ipc, u, iflag)
+  @ccall libhsl.ma30ad_(nn::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
+                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
+                        iq::Ptr{Cint}, irn::Ptr{Cint}, lirn::Ref{Cint}, lenc::Ptr{Cint},
+                        ifirst::Ptr{Cint}, lastr::Ptr{Cint}, nextr::Ptr{Cint}, lastc::Ptr{Cint},
+                        nextc::Ptr{Cint}, iptr::Ptr{Cint}, ipc::Ptr{Cint}, u::Ref{Float64},
+                        iflag::Ref{Cint})::Cvoid
+end
+
+function ma30bd(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag)
+  @ccall libhsl.ma30bd_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
+                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
+                        iq::Ptr{Cint}, w::Ptr{Float64}, iw::Ptr{Cint}, iflag::Ref{Cint})::Cvoid
+end
+
+function ma30cd(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype)
+  @ccall libhsl.ma30cd_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
+                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, idisp::Ptr{Cint},
+                        ip::Ptr{Cint}, iq::Ptr{Cint}, x::Ptr{Float64}, w::Ptr{Float64},
+                        mtype::Ref{Cint})::Cvoid
+end
+
+function ma30dd(a, icn, iptr, n, iactiv, itop, reals)
+  @ccall libhsl.ma30dd_(a::Ptr{Float64}, icn::Ptr{Cint}, iptr::Ptr{Cint}, n::Ref{Cint},
+                        iactiv::Ref{Cint}, itop::Ref{Cint}, reals::Ref{Cint})::Cvoid
+end
+
+function ma30a(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr, nextr,
+               lastc, nextc, iptr, ipc, u, iflag)
+  @ccall libhsl.ma30a_(nn::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
+                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
+                       iq::Ptr{Cint}, irn::Ptr{Cint}, lirn::Ref{Cint}, lenc::Ptr{Cint},
+                       ifirst::Ptr{Cint}, lastr::Ptr{Cint}, nextr::Ptr{Cint}, lastc::Ptr{Cint},
+                       nextc::Ptr{Cint}, iptr::Ptr{Cint}, ipc::Ptr{Cint}, u::Ref{Float32},
+                       iflag::Ref{Cint})::Cvoid
+end
+
+function ma30b(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag)
+  @ccall libhsl.ma30b_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
+                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
+                       iq::Ptr{Cint}, w::Ptr{Float32}, iw::Ptr{Cint}, iflag::Ref{Cint})::Cvoid
+end
+
+function ma30c(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype)
+  @ccall libhsl.ma30c_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
+                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, idisp::Ptr{Cint},
+                       ip::Ptr{Cint}, iq::Ptr{Cint}, x::Ptr{Float32}, w::Ptr{Float32},
+                       mtype::Ref{Cint})::Cvoid
+end
+
+function ma30d(a, icn, iptr, n, iactiv, itop, reals)
+  @ccall libhsl.ma30d_(a::Ptr{Float32}, icn::Ptr{Cint}, iptr::Ptr{Cint}, n::Ref{Cint},
+                       iactiv::Ref{Cint}, itop::Ref{Cint}, reals::Ref{Cint})::Cvoid
+end
diff --git a/src/Fortran/libhsl/ma33.jl b/src/Fortran/libhsl/ma33.jl
new file mode 100644
index 0000000..65c330d
--- /dev/null
+++ b/src/Fortran/libhsl/ma33.jl
@@ -0,0 +1,68 @@
+function ma33id(icntl, cntl)
+  @ccall libhsl.ma33id_(icntl::Ptr{Cint}, cntl::Ptr{Float64})::Cvoid
+end
+
+function ma33ad(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr, nextr,
+                lastc, nextc, iptr, ipc, u, iflag, icntl, cntl, info, rinfo)
+  @ccall libhsl.ma33ad_(nn::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
+                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
+                        iq::Ptr{Cint}, irn::Ptr{Cint}, lirn::Ref{Cint}, lenc::Ptr{Cint},
+                        ifirst::Ptr{Cint}, lastr::Ptr{Cint}, nextr::Ptr{Cint}, lastc::Ptr{Cint},
+                        nextc::Ptr{Cint}, iptr::Ptr{Cint}, ipc::Ptr{Cint}, u::Ref{Float64},
+                        iflag::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float64}, info::Ptr{Cint},
+                        rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma33bd(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag, icntl, cntl, rinfo)
+  @ccall libhsl.ma33bd_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
+                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
+                        iq::Ptr{Cint}, w::Ptr{Float64}, iw::Ptr{Cint}, iflag::Ref{Cint},
+                        icntl::Ptr{Cint}, cntl::Ptr{Float64}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma33cd(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype, rinfo)
+  @ccall libhsl.ma33cd_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
+                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, idisp::Ptr{Cint},
+                        ip::Ptr{Cint}, iq::Ptr{Cint}, x::Ptr{Float64}, w::Ptr{Float64},
+                        mtype::Ref{Cint}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma33dd(a, icn, iptr, n, iactiv, itop, reals, info)
+  @ccall libhsl.ma33dd_(a::Ptr{Float64}, icn::Ptr{Cint}, iptr::Ptr{Cint}, n::Ref{Cint},
+                        iactiv::Ref{Cint}, itop::Ref{Cint}, reals::Ref{Cint},
+                        info::Ptr{Cint})::Cvoid
+end
+
+function ma33i(icntl, cntl)
+  @ccall libhsl.ma33i_(icntl::Ptr{Cint}, cntl::Ptr{Float32})::Cvoid
+end
+
+function ma33a(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr, nextr,
+               lastc, nextc, iptr, ipc, u, iflag, icntl, cntl, info, rinfo)
+  @ccall libhsl.ma33a_(nn::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
+                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
+                       iq::Ptr{Cint}, irn::Ptr{Cint}, lirn::Ref{Cint}, lenc::Ptr{Cint},
+                       ifirst::Ptr{Cint}, lastr::Ptr{Cint}, nextr::Ptr{Cint}, lastc::Ptr{Cint},
+                       nextc::Ptr{Cint}, iptr::Ptr{Cint}, ipc::Ptr{Cint}, u::Ref{Float32},
+                       iflag::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float32}, info::Ptr{Cint},
+                       rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma33b(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag, icntl, cntl, rinfo)
+  @ccall libhsl.ma33b_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
+                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
+                       iq::Ptr{Cint}, w::Ptr{Float32}, iw::Ptr{Cint}, iflag::Ref{Cint},
+                       icntl::Ptr{Cint}, cntl::Ptr{Float32}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma33c(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype, rinfo)
+  @ccall libhsl.ma33c_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
+                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, idisp::Ptr{Cint},
+                       ip::Ptr{Cint}, iq::Ptr{Cint}, x::Ptr{Float32}, w::Ptr{Float32},
+                       mtype::Ref{Cint}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma33d(a, icn, iptr, n, iactiv, itop, reals, info)
+  @ccall libhsl.ma33d_(a::Ptr{Float32}, icn::Ptr{Cint}, iptr::Ptr{Cint}, n::Ref{Cint},
+                       iactiv::Ref{Cint}, itop::Ref{Cint}, reals::Ref{Cint}, info::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/ma38.jl b/src/Fortran/libhsl/ma38.jl
similarity index 100%
rename from src/Fortran/ma38.jl
rename to src/Fortran/libhsl/ma38.jl
diff --git a/src/Fortran/ma41.jl b/src/Fortran/libhsl/ma41.jl
similarity index 100%
rename from src/Fortran/ma41.jl
rename to src/Fortran/libhsl/ma41.jl
diff --git a/src/Fortran/ma42.jl b/src/Fortran/libhsl/ma42.jl
similarity index 100%
rename from src/Fortran/ma42.jl
rename to src/Fortran/libhsl/ma42.jl
diff --git a/src/Fortran/ma43.jl b/src/Fortran/libhsl/ma43.jl
similarity index 100%
rename from src/Fortran/ma43.jl
rename to src/Fortran/libhsl/ma43.jl
diff --git a/src/Fortran/ma44.jl b/src/Fortran/libhsl/ma44.jl
similarity index 100%
rename from src/Fortran/ma44.jl
rename to src/Fortran/libhsl/ma44.jl
diff --git a/src/Fortran/ma46.jl b/src/Fortran/libhsl/ma46.jl
similarity index 100%
rename from src/Fortran/ma46.jl
rename to src/Fortran/libhsl/ma46.jl
diff --git a/src/Fortran/ma48.jl b/src/Fortran/libhsl/ma48.jl
similarity index 100%
rename from src/Fortran/ma48.jl
rename to src/Fortran/libhsl/ma48.jl
diff --git a/src/Fortran/ma49.jl b/src/Fortran/libhsl/ma49.jl
similarity index 100%
rename from src/Fortran/ma49.jl
rename to src/Fortran/libhsl/ma49.jl
diff --git a/src/Fortran/ma50.jl b/src/Fortran/libhsl/ma50.jl
similarity index 100%
rename from src/Fortran/ma50.jl
rename to src/Fortran/libhsl/ma50.jl
diff --git a/src/Fortran/ma51.jl b/src/Fortran/libhsl/ma51.jl
similarity index 100%
rename from src/Fortran/ma51.jl
rename to src/Fortran/libhsl/ma51.jl
diff --git a/src/Fortran/ma52.jl b/src/Fortran/libhsl/ma52.jl
similarity index 100%
rename from src/Fortran/ma52.jl
rename to src/Fortran/libhsl/ma52.jl
diff --git a/src/Fortran/libhsl/ma57.jl b/src/Fortran/libhsl/ma57.jl
new file mode 100644
index 0000000..cf706a3
--- /dev/null
+++ b/src/Fortran/libhsl/ma57.jl
@@ -0,0 +1,319 @@
+function ma57id(cntl, icntl)
+  @ccall libhsl.ma57id_(cntl::Ptr{Float64}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57ad(n, ne, irn, jcn, lkeep, keep, iwork, icntl, info, rinfo)
+  @ccall libhsl.ma57ad_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
+                        lkeep::Ref{Cint}, keep::Ptr{Cint}, iwork::Ptr{Cint}, icntl::Ptr{Cint},
+                        info::Ptr{Cint}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57bd(n, ne, a, fact, lfact, ifact, lifact, lkeep, keep, ppos, icntl, cntl, info, rinfo)
+  @ccall libhsl.ma57bd_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64}, fact::Ptr{Float64},
+                        lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint}, lkeep::Ref{Cint},
+                        keep::Ptr{Cint}, ppos::Ptr{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float64},
+                        info::Ptr{Cint}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57cd(job, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl, info)
+  @ccall libhsl.ma57cd_(job::Ref{Cint}, n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint},
+                        ifact::Ptr{Cint}, lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float64},
+                        lrhs::Ref{Cint}, w::Ptr{Float64}, lw::Ref{Cint}, iw1::Ptr{Cint},
+                        icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma57qd(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
+  @ccall libhsl.ma57qd_(n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                        lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint},
+                        w::Ptr{Float64}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57rd(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
+  @ccall libhsl.ma57rd_(n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                        lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint},
+                        w::Ptr{Float64}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57ud(fact, lfact, ifact, lifact, icntl)
+  @ccall libhsl.ma57ud_(fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint},
+                        icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57sd(fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, icntl)
+  @ccall libhsl.ma57sd_(fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint},
+                        nrhs::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint}, w::Ptr{Float64},
+                        lw::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57td(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
+  @ccall libhsl.ma57td_(n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                        lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint},
+                        w::Ptr{Float64}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57dd(job, n, ne, a, irn, jcn, fact, lfact, ifact, lifact, rhs, x, resid, w, iw, icntl,
+                cntl, info, rinfo)
+  @ccall libhsl.ma57dd_(job::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64},
+                        irn::Ptr{Cint}, jcn::Ptr{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint},
+                        ifact::Ptr{Cint}, lifact::Ref{Cint}, rhs::Ptr{Float64}, x::Ptr{Float64},
+                        resid::Ptr{Float64}, w::Ptr{Float64}, iw::Ptr{Cint}, icntl::Ptr{Cint},
+                        cntl::Ptr{Float64}, info::Ptr{Cint}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57ed(n, ic, keep, fact, lfact, newfac, lnew, ifact, lifact, newifc, linew, info)
+  @ccall libhsl.ma57ed_(n::Ref{Cint}, ic::Ref{Cint}, keep::Ptr{Cint}, fact::Ptr{Float64},
+                        lfact::Ref{Cint}, newfac::Ptr{Float64}, lnew::Ref{Cint}, ifact::Ptr{Cint},
+                        lifact::Ref{Cint}, newifc::Ptr{Cint}, linew::Ref{Cint},
+                        info::Ptr{Cint})::Cvoid
+end
+
+function ma57gd(n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl, info)
+  @ccall libhsl.ma57gd_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, iw::Ptr{Cint},
+                        ipe::Ptr{Cint}, count::Ptr{Cint}, flag::Ptr{Cint}, iwfr::Ref{Cint},
+                        icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma57jd(n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr, icntl, info)
+  @ccall libhsl.ma57jd_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
+                        perm::Ptr{Cint}, iw::Ptr{Cint}, ipe::Ptr{Cint}, count::Ptr{Cint},
+                        flag::Ptr{Cint}, iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma57kd(n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
+  @ccall libhsl.ma57kd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                        perm::Ptr{Cint}, ips::Ptr{Cint}, nv::Ptr{Cint}, flag::Ptr{Cint},
+                        ncmpa::Ref{Cint})::Cvoid
+end
+
+function ma57fd(n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl.ma57fd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                        ncmpa::Ref{Cint})::Cvoid
+end
+
+function ma57ld(n, ipe, nv, ips, ne, na, node, perm, nsteps, fils, frere, nd, nemin, subord)
+  @ccall libhsl.ma57ld_(n::Ref{Cint}, ipe::Ptr{Cint}, nv::Ptr{Cint}, ips::Ptr{Cint}, ne::Ptr{Cint},
+                        na::Ptr{Cint}, node::Ptr{Cint}, perm::Ptr{Cint}, nsteps::Ref{Cint},
+                        fils::Ptr{Cint}, frere::Ptr{Cint}, nd::Ptr{Cint}, nemin::Ref{Cint},
+                        subord::Ptr{Cint})::Cvoid
+end
+
+function ma57md(n, ne, irn, jcn, map, irnprm, lrow, perm, count, idiag)
+  @ccall libhsl.ma57md_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, map::Ptr{Cint},
+                        irnprm::Ptr{Cint}, lrow::Ptr{Cint}, perm::Ptr{Cint}, count::Ptr{Cint},
+                        idiag::Ptr{Cint})::Cvoid
+end
+
+function ma57nd(n, lenr, na, ne, nd, nsteps, lstki, lstkr, info, rinfo)
+  @ccall libhsl.ma57nd_(n::Ref{Cint}, lenr::Ptr{Cint}, na::Ptr{Cint}, ne::Ptr{Cint}, nd::Ptr{Cint},
+                        nsteps::Ref{Cint}, lstki::Ptr{Cint}, lstkr::Ptr{Cint}, info::Ptr{Cint},
+                        rinfo::Ptr{Float64})::Cvoid
+end
+
+function ma57od(n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk, node, diag, schnab, ppos, cntl,
+                icntl, info, rinfo, hold, biga)
+  @ccall libhsl.ma57od_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint},
+                        liw::Ref{Cint}, lrow::Ptr{Cint}, perm::Ptr{Cint}, nsteps::Ref{Cint},
+                        nstk::Ptr{Cint}, node::Ptr{Cint}, diag::Ptr{Float64}, schnab::Ptr{Float64},
+                        ppos::Ptr{Cint}, cntl::Ptr{Float64}, icntl::Ptr{Cint}, info::Ptr{Cint},
+                        rinfo::Ptr{Float64}, hold::Ptr{Cint}, biga::Ref{Float64})::Cvoid
+end
+
+function ma57pd(a, iw, j1, j2, itop, real)
+  @ccall libhsl.ma57pd_(a::Ptr{Float64}, iw::Ptr{Cint}, j1::Ref{Cint}, j2::Ref{Cint},
+                        itop::Ref{Cint}, real::Ref{Cint})::Cvoid
+end
+
+function ma57wd(a, la, iw, liw, nrlbdu)
+  @ccall libhsl.ma57wd_(a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                        nrlbdu::Ref{Cint})::Cvoid
+end
+
+function ma57xd(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
+  @ccall libhsl.ma57xd_(n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                        lifact::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint}, w::Ptr{Float64},
+                        lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57yd(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
+  @ccall libhsl.ma57yd_(n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                        lifact::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint}, w::Ptr{Float64},
+                        lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57vd(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
+  @ccall libhsl.ma57vd_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
+                        lw::Ref{Cint}, ipe::Ptr{Cint}, iq::Ptr{Cint}, flag::Ptr{Cint},
+                        iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma57hd(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
+  @ccall libhsl.ma57hd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                        nv::Ptr{Cint}, nxt::Ptr{Cint}, lst::Ptr{Cint}, ipd::Ptr{Cint},
+                        flag::Ptr{Cint}, iovflo::Ref{Cint}, ncmpa::Ref{Cint},
+                        fratio::Ref{Float64})::Cvoid
+end
+
+function ma57zd(n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl.ma57zd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                        ncmpa::Ref{Cint})::Cvoid
+end
+
+function ma57i(cntl, icntl)
+  @ccall libhsl.ma57i_(cntl::Ptr{Float32}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57a(n, ne, irn, jcn, lkeep, keep, iwork, icntl, info, rinfo)
+  @ccall libhsl.ma57a_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
+                       lkeep::Ref{Cint}, keep::Ptr{Cint}, iwork::Ptr{Cint}, icntl::Ptr{Cint},
+                       info::Ptr{Cint}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57b(n, ne, a, fact, lfact, ifact, lifact, lkeep, keep, ppos, icntl, cntl, info, rinfo)
+  @ccall libhsl.ma57b_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, fact::Ptr{Float32},
+                       lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint}, lkeep::Ref{Cint},
+                       keep::Ptr{Cint}, ppos::Ptr{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float32},
+                       info::Ptr{Cint}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57c(job, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl, info)
+  @ccall libhsl.ma57c_(job::Ref{Cint}, n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint},
+                       ifact::Ptr{Cint}, lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float32},
+                       lrhs::Ref{Cint}, w::Ptr{Float32}, lw::Ref{Cint}, iw1::Ptr{Cint},
+                       icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma57q(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
+  @ccall libhsl.ma57q_(n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                       lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint},
+                       w::Ptr{Float32}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57r(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
+  @ccall libhsl.ma57r_(n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                       lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint},
+                       w::Ptr{Float32}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57u(fact, lfact, ifact, lifact, icntl)
+  @ccall libhsl.ma57u_(fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint},
+                       icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57s(fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, icntl)
+  @ccall libhsl.ma57s_(fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint},
+                       nrhs::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint}, w::Ptr{Float32},
+                       lw::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57t(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
+  @ccall libhsl.ma57t_(n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                       lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint},
+                       w::Ptr{Float32}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57d(job, n, ne, a, irn, jcn, fact, lfact, ifact, lifact, rhs, x, resid, w, iw, icntl,
+               cntl, info, rinfo)
+  @ccall libhsl.ma57d_(job::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, irn::Ptr{Cint},
+                       jcn::Ptr{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                       lifact::Ref{Cint}, rhs::Ptr{Float32}, x::Ptr{Float32}, resid::Ptr{Float32},
+                       w::Ptr{Float32}, iw::Ptr{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float32},
+                       info::Ptr{Cint}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57e(n, ic, keep, fact, lfact, newfac, lnew, ifact, lifact, newifc, linew, info)
+  @ccall libhsl.ma57e_(n::Ref{Cint}, ic::Ref{Cint}, keep::Ptr{Cint}, fact::Ptr{Float32},
+                       lfact::Ref{Cint}, newfac::Ptr{Float32}, lnew::Ref{Cint}, ifact::Ptr{Cint},
+                       lifact::Ref{Cint}, newifc::Ptr{Cint}, linew::Ref{Cint},
+                       info::Ptr{Cint})::Cvoid
+end
+
+function ma57g(n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl, info)
+  @ccall libhsl.ma57g_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, iw::Ptr{Cint},
+                       ipe::Ptr{Cint}, count::Ptr{Cint}, flag::Ptr{Cint}, iwfr::Ref{Cint},
+                       icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma57j(n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr, icntl, info)
+  @ccall libhsl.ma57j_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, perm::Ptr{Cint},
+                       iw::Ptr{Cint}, ipe::Ptr{Cint}, count::Ptr{Cint}, flag::Ptr{Cint},
+                       iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma57k(n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
+  @ccall libhsl.ma57k_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                       perm::Ptr{Cint}, ips::Ptr{Cint}, nv::Ptr{Cint}, flag::Ptr{Cint},
+                       ncmpa::Ref{Cint})::Cvoid
+end
+
+function ma57f(n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl.ma57f_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                       ncmpa::Ref{Cint})::Cvoid
+end
+
+function ma57l(n, ipe, nv, ips, ne, na, node, perm, nsteps, fils, frere, nd, nemin, subord)
+  @ccall libhsl.ma57l_(n::Ref{Cint}, ipe::Ptr{Cint}, nv::Ptr{Cint}, ips::Ptr{Cint}, ne::Ptr{Cint},
+                       na::Ptr{Cint}, node::Ptr{Cint}, perm::Ptr{Cint}, nsteps::Ref{Cint},
+                       fils::Ptr{Cint}, frere::Ptr{Cint}, nd::Ptr{Cint}, nemin::Ref{Cint},
+                       subord::Ptr{Cint})::Cvoid
+end
+
+function ma57m(n, ne, irn, jcn, map, irnprm, lrow, perm, count, idiag)
+  @ccall libhsl.ma57m_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, map::Ptr{Cint},
+                       irnprm::Ptr{Cint}, lrow::Ptr{Cint}, perm::Ptr{Cint}, count::Ptr{Cint},
+                       idiag::Ptr{Cint})::Cvoid
+end
+
+function ma57n(n, lenr, na, ne, nd, nsteps, lstki, lstkr, info, rinfo)
+  @ccall libhsl.ma57n_(n::Ref{Cint}, lenr::Ptr{Cint}, na::Ptr{Cint}, ne::Ptr{Cint}, nd::Ptr{Cint},
+                       nsteps::Ref{Cint}, lstki::Ptr{Cint}, lstkr::Ptr{Cint}, info::Ptr{Cint},
+                       rinfo::Ptr{Float32})::Cvoid
+end
+
+function ma57o(n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk, node, diag, schnab, ppos, cntl,
+               icntl, info, rinfo, hold, biga)
+  @ccall libhsl.ma57o_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint},
+                       liw::Ref{Cint}, lrow::Ptr{Cint}, perm::Ptr{Cint}, nsteps::Ref{Cint},
+                       nstk::Ptr{Cint}, node::Ptr{Cint}, diag::Ptr{Float32}, schnab::Ptr{Float32},
+                       ppos::Ptr{Cint}, cntl::Ptr{Float32}, icntl::Ptr{Cint}, info::Ptr{Cint},
+                       rinfo::Ptr{Float32}, hold::Ptr{Cint}, biga::Ref{Float32})::Cvoid
+end
+
+function ma57p(a, iw, j1, j2, itop, real)
+  @ccall libhsl.ma57p_(a::Ptr{Float32}, iw::Ptr{Cint}, j1::Ref{Cint}, j2::Ref{Cint},
+                       itop::Ref{Cint}, real::Ref{Cint})::Cvoid
+end
+
+function ma57w(a, la, iw, liw, nrlbdu)
+  @ccall libhsl.ma57w_(a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
+                       nrlbdu::Ref{Cint})::Cvoid
+end
+
+function ma57x(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
+  @ccall libhsl.ma57x_(n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                       lifact::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint}, w::Ptr{Float32},
+                       lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57y(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
+  @ccall libhsl.ma57y_(n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
+                       lifact::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint}, w::Ptr{Float32},
+                       lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
+end
+
+function ma57v(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
+  @ccall libhsl.ma57v_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
+                       lw::Ref{Cint}, ipe::Ptr{Cint}, iq::Ptr{Cint}, flag::Ptr{Cint},
+                       iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function ma57h(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
+  @ccall libhsl.ma57h_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                       nv::Ptr{Cint}, nxt::Ptr{Cint}, lst::Ptr{Cint}, ipd::Ptr{Cint},
+                       flag::Ptr{Cint}, iovflo::Ref{Cint}, ncmpa::Ref{Cint},
+                       fratio::Ref{Float32})::Cvoid
+end
+
+function ma57z(n, ipe, iw, lw, iwfr, ncmpa)
+  @ccall libhsl.ma57z_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
+                       ncmpa::Ref{Cint})::Cvoid
+end
diff --git a/src/Fortran/ma60.jl b/src/Fortran/libhsl/ma60.jl
similarity index 100%
rename from src/Fortran/ma60.jl
rename to src/Fortran/libhsl/ma60.jl
diff --git a/src/Fortran/libhsl/ma61.jl b/src/Fortran/libhsl/ma61.jl
new file mode 100644
index 0000000..f3be2e5
--- /dev/null
+++ b/src/Fortran/libhsl/ma61.jl
@@ -0,0 +1,109 @@
+function ma61id(icntl, cntl, keep)
+  @ccall libhsl.ma61id_(icntl::Ptr{Cint}, cntl::Ptr{Float64}, keep::Ptr{Cint})::Cvoid
+end
+
+function ma61ad(n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl, cntl, info, keep)
+  @ccall libhsl.ma61ad_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, ini::Ptr{Cint},
+                        inj::Ptr{Cint}, iai::Ref{Cint}, iaj::Ref{Cint}, ik::Ptr{Cint},
+                        iw::Ptr{Cint}, w::Ptr{Float64}, c::Ref{Float64}, icntl::Ptr{Cint},
+                        cntl::Ptr{Float64}, info::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
+end
+
+function ma61cd(n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w, iflag, c, icntl, cntl, keep)
+  @ccall libhsl.ma61cd_(n::Ref{Cint}, nz::Ref{Cint}, d::Ptr{Float64}, a::Ptr{Float64},
+                        ini::Ptr{Cint}, inj::Ptr{Cint}, iai::Ref{Cint}, iaj::Ref{Cint},
+                        ik::Ptr{Cint}, ip::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float64},
+                        iflag::Ref{Cint}, c::Ref{Float64}, icntl::Ptr{Cint}, cntl::Ptr{Float64},
+                        keep::Ptr{Cint})::Cvoid
+end
+
+function ma61dd(a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
+  @ccall libhsl.ma61dd_(a::Ptr{Float64}, irn::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ik::Ptr{Cint},
+                        ip::Ptr{Cint}, row::Ref{Cint}, ncp::Ref{Cint}, nucl::Ref{Cint},
+                        nual::Ref{Cint})::Cvoid
+end
+
+function ma61ed(in1, in2, nz, ip, n, a)
+  @ccall libhsl.ma61ed_(in1::Ptr{Cint}, in2::Ptr{Cint}, nz::Ref{Cint}, ip::Ptr{Cint}, n::Ref{Cint},
+                        a::Ptr{Float64})::Cvoid
+end
+
+function ma61gd(n, a, inj, iaj, d, ik, b, lrow)
+  @ccall libhsl.ma61gd_(n::Ref{Cint}, a::Ptr{Float64}, inj::Ptr{Cint}, iaj::Ref{Cint},
+                        d::Ptr{Float64}, ik::Ptr{Cint}, b::Ptr{Float64}, lrow::Ref{Cint})::Cvoid
+end
+
+function ma61bd(n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps, icntl, info, keep)
+  @ccall libhsl.ma61bd_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, ini::Ptr{Cint},
+                        inj::Ptr{Cint}, iaj::Ref{Cint}, ik::Ptr{Cint}, b::Ptr{Float64},
+                        w::Ptr{Float64}, w1::Ptr{Float64}, kmax::Ptr{Cint}, eps::Ptr{Float64},
+                        icntl::Ptr{Cint}, info::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
+end
+
+function ma61fd(n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e, f, g, kmax, eps, lrow)
+  @ccall libhsl.ma61fd_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, ini::Ptr{Cint},
+                        inj::Ptr{Cint}, iaf::Ref{Cint}, af::Ptr{Float64}, df::Ptr{Float64},
+                        injf::Ptr{Cint}, ik::Ptr{Cint}, b::Ptr{Float64}, r::Ptr{Float64},
+                        e::Ptr{Float64}, f::Ptr{Float64}, g::Ptr{Float64}, kmax::Ref{Cint},
+                        eps::Ref{Float64}, lrow::Ref{Cint})::Cvoid
+end
+
+function ma61hd(a, ini, inj, nz, n, b, z)
+  @ccall libhsl.ma61hd_(a::Ptr{Float64}, ini::Ptr{Cint}, inj::Ptr{Cint}, nz::Ref{Cint},
+                        n::Ref{Cint}, b::Ptr{Float64}, z::Ptr{Float64})::Cvoid
+end
+
+function ma61i(icntl, cntl, keep)
+  @ccall libhsl.ma61i_(icntl::Ptr{Cint}, cntl::Ptr{Float32}, keep::Ptr{Cint})::Cvoid
+end
+
+function ma61a(n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl, cntl, info, keep)
+  @ccall libhsl.ma61a_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, ini::Ptr{Cint}, inj::Ptr{Cint},
+                       iai::Ref{Cint}, iaj::Ref{Cint}, ik::Ptr{Cint}, iw::Ptr{Cint},
+                       w::Ptr{Float32}, c::Ref{Float32}, icntl::Ptr{Cint}, cntl::Ptr{Float32},
+                       info::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
+end
+
+function ma61c(n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w, iflag, c, icntl, cntl, keep)
+  @ccall libhsl.ma61c_(n::Ref{Cint}, nz::Ref{Cint}, d::Ptr{Float32}, a::Ptr{Float32},
+                       ini::Ptr{Cint}, inj::Ptr{Cint}, iai::Ref{Cint}, iaj::Ref{Cint},
+                       ik::Ptr{Cint}, ip::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float32},
+                       iflag::Ref{Cint}, c::Ref{Float32}, icntl::Ptr{Cint}, cntl::Ptr{Float32},
+                       keep::Ptr{Cint})::Cvoid
+end
+
+function ma61d(a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
+  @ccall libhsl.ma61d_(a::Ptr{Float32}, irn::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ik::Ptr{Cint},
+                       ip::Ptr{Cint}, row::Ref{Cint}, ncp::Ref{Cint}, nucl::Ref{Cint},
+                       nual::Ref{Cint})::Cvoid
+end
+
+function ma61e(in1, in2, nz, ip, n, a)
+  @ccall libhsl.ma61e_(in1::Ptr{Cint}, in2::Ptr{Cint}, nz::Ref{Cint}, ip::Ptr{Cint}, n::Ref{Cint},
+                       a::Ptr{Float32})::Cvoid
+end
+
+function ma61g(n, a, inj, iaj, d, ik, b, lrow)
+  @ccall libhsl.ma61g_(n::Ref{Cint}, a::Ptr{Float32}, inj::Ptr{Cint}, iaj::Ref{Cint},
+                       d::Ptr{Float32}, ik::Ptr{Cint}, b::Ptr{Float32}, lrow::Ref{Cint})::Cvoid
+end
+
+function ma61b(n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps, icntl, info, keep)
+  @ccall libhsl.ma61b_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, ini::Ptr{Cint}, inj::Ptr{Cint},
+                       iaj::Ref{Cint}, ik::Ptr{Cint}, b::Ptr{Float32}, w::Ptr{Float32},
+                       w1::Ptr{Float32}, kmax::Ptr{Cint}, eps::Ptr{Float32}, icntl::Ptr{Cint},
+                       info::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
+end
+
+function ma61f(n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e, f, g, kmax, eps, lrow)
+  @ccall libhsl.ma61f_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, ini::Ptr{Cint}, inj::Ptr{Cint},
+                       iaf::Ref{Cint}, af::Ptr{Float32}, df::Ptr{Float32}, injf::Ptr{Cint},
+                       ik::Ptr{Cint}, b::Ptr{Float32}, r::Ptr{Float32}, e::Ptr{Float32},
+                       f::Ptr{Float32}, g::Ptr{Float32}, kmax::Ref{Cint}, eps::Ref{Float32},
+                       lrow::Ref{Cint})::Cvoid
+end
+
+function ma61h(a, ini, inj, nz, n, b, z)
+  @ccall libhsl.ma61h_(a::Ptr{Float32}, ini::Ptr{Cint}, inj::Ptr{Cint}, nz::Ref{Cint}, n::Ref{Cint},
+                       b::Ptr{Float32}, z::Ptr{Float32})::Cvoid
+end
diff --git a/src/Fortran/ma62.jl b/src/Fortran/libhsl/ma62.jl
similarity index 100%
rename from src/Fortran/ma62.jl
rename to src/Fortran/libhsl/ma62.jl
diff --git a/src/Fortran/ma65.jl b/src/Fortran/libhsl/ma65.jl
similarity index 100%
rename from src/Fortran/ma65.jl
rename to src/Fortran/libhsl/ma65.jl
diff --git a/src/Fortran/ma67.jl b/src/Fortran/libhsl/ma67.jl
similarity index 100%
rename from src/Fortran/ma67.jl
rename to src/Fortran/libhsl/ma67.jl
diff --git a/src/Fortran/ma69.jl b/src/Fortran/libhsl/ma69.jl
similarity index 100%
rename from src/Fortran/ma69.jl
rename to src/Fortran/libhsl/ma69.jl
diff --git a/src/Fortran/ma72.jl b/src/Fortran/libhsl/ma72.jl
similarity index 100%
rename from src/Fortran/ma72.jl
rename to src/Fortran/libhsl/ma72.jl
diff --git a/src/Fortran/ma75.jl b/src/Fortran/libhsl/ma75.jl
similarity index 100%
rename from src/Fortran/ma75.jl
rename to src/Fortran/libhsl/ma75.jl
diff --git a/src/Fortran/libhsl/mc13.jl b/src/Fortran/libhsl/mc13.jl
new file mode 100644
index 0000000..4d96699
--- /dev/null
+++ b/src/Fortran/libhsl/mc13.jl
@@ -0,0 +1,23 @@
+function mc13dd(n, icn, licn, ip, lenr, ior, ib, num, iw)
+  @ccall libhsl.mc13dd_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
+                        lenr::Ptr{Cint}, ior::Ptr{Cint}, ib::Ptr{Cint}, num::Ref{Cint},
+                        iw::Ptr{Cint})::Cvoid
+end
+
+function mc13ed(n, icn, licn, ip, lenr, arp, ib, num, lowl, numb, prev)
+  @ccall libhsl.mc13ed_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
+                        lenr::Ptr{Cint}, arp::Ptr{Cint}, ib::Ptr{Cint}, num::Ref{Cint},
+                        lowl::Ptr{Cint}, numb::Ptr{Cint}, prev::Ptr{Cint})::Cvoid
+end
+
+function mc13d(n, icn, licn, ip, lenr, ior, ib, num, iw)
+  @ccall libhsl.mc13d_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
+                       lenr::Ptr{Cint}, ior::Ptr{Cint}, ib::Ptr{Cint}, num::Ref{Cint},
+                       iw::Ptr{Cint})::Cvoid
+end
+
+function mc13e(n, icn, licn, ip, lenr, arp, ib, num, lowl, numb, prev)
+  @ccall libhsl.mc13e_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
+                       lenr::Ptr{Cint}, arp::Ptr{Cint}, ib::Ptr{Cint}, num::Ref{Cint},
+                       lowl::Ptr{Cint}, numb::Ptr{Cint}, prev::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/libhsl/mc19.jl b/src/Fortran/libhsl/mc19.jl
new file mode 100644
index 0000000..3c8f6f7
--- /dev/null
+++ b/src/Fortran/libhsl/mc19.jl
@@ -0,0 +1,9 @@
+function mc19ad(n, na, a, irn, icn, r, c, w)
+  @ccall libhsl.mc19ad_(n::Ref{Cint}, na::Ref{Cint}, a::Ptr{Float64}, irn::Ptr{Cint},
+                        icn::Ptr{Cint}, r::Ptr{Float32}, c::Ptr{Float32}, w::Ptr{Float32})::Cvoid
+end
+
+function mc19a(n, na, a, irn, icn, r, c, w)
+  @ccall libhsl.mc19a_(n::Ref{Cint}, na::Ref{Cint}, a::Ptr{Float32}, irn::Ptr{Cint}, icn::Ptr{Cint},
+                       r::Ptr{Float32}, c::Ptr{Float32}, w::Ptr{Float32})::Cvoid
+end
diff --git a/src/Fortran/libhsl/mc20.jl b/src/Fortran/libhsl/mc20.jl
new file mode 100644
index 0000000..3281c74
--- /dev/null
+++ b/src/Fortran/libhsl/mc20.jl
@@ -0,0 +1,19 @@
+function mc20ad(nc, maxa, a, inum, jptr, jnum, jdisp)
+  @ccall libhsl.mc20ad_(nc::Ref{Cint}, maxa::Ref{Cint}, a::Ptr{Float64}, inum::Ptr{Cint},
+                        jptr::Ptr{Cint}, jnum::Ptr{Cint}, jdisp::Ref{Cint})::Cvoid
+end
+
+function mc20bd(nc, maxa, a, inum, jptr)
+  @ccall libhsl.mc20bd_(nc::Ref{Cint}, maxa::Ref{Cint}, a::Ptr{Float64}, inum::Ptr{Cint},
+                        jptr::Ptr{Cint})::Cvoid
+end
+
+function mc20a(nc, maxa, a, inum, jptr, jnum, jdisp)
+  @ccall libhsl.mc20a_(nc::Ref{Cint}, maxa::Ref{Cint}, a::Ptr{Float32}, inum::Ptr{Cint},
+                       jptr::Ptr{Cint}, jnum::Ptr{Cint}, jdisp::Ref{Cint})::Cvoid
+end
+
+function mc20b(nc, maxa, a, inum, jptr)
+  @ccall libhsl.mc20b_(nc::Ref{Cint}, maxa::Ref{Cint}, a::Ptr{Float32}, inum::Ptr{Cint},
+                       jptr::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/libhsl/mc21.jl b/src/Fortran/libhsl/mc21.jl
new file mode 100644
index 0000000..3183bc3
--- /dev/null
+++ b/src/Fortran/libhsl/mc21.jl
@@ -0,0 +1,21 @@
+function mc21ad(n, icn, licn, ip, lenr, iperm, numnz, iw)
+  @ccall libhsl.mc21ad_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
+                        lenr::Ptr{Cint}, iperm::Ptr{Cint}, numnz::Ref{Cint}, iw::Ptr{Cint})::Cvoid
+end
+
+function mc21bd(n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv, out)
+  @ccall libhsl.mc21bd_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
+                        lenr::Ptr{Cint}, iperm::Ptr{Cint}, numnz::Ref{Cint}, pr::Ptr{Cint},
+                        arp::Ptr{Cint}, cv::Ptr{Cint}, out::Ptr{Cint})::Cvoid
+end
+
+function mc21a(n, icn, licn, ip, lenr, iperm, numnz, iw)
+  @ccall libhsl.mc21a_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
+                       lenr::Ptr{Cint}, iperm::Ptr{Cint}, numnz::Ref{Cint}, iw::Ptr{Cint})::Cvoid
+end
+
+function mc21b(n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv, out)
+  @ccall libhsl.mc21b_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
+                       lenr::Ptr{Cint}, iperm::Ptr{Cint}, numnz::Ref{Cint}, pr::Ptr{Cint},
+                       arp::Ptr{Cint}, cv::Ptr{Cint}, out::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/mc22.jl b/src/Fortran/libhsl/mc22.jl
similarity index 63%
rename from src/Fortran/mc22.jl
rename to src/Fortran/libhsl/mc22.jl
index 141ebdf..4157885 100644
--- a/src/Fortran/mc22.jl
+++ b/src/Fortran/libhsl/mc22.jl
@@ -10,24 +10,12 @@ function mc22ad(n, icn, a, nz, lenrow, ip, iq, iw, iw1)
                         iw1::Ptr{Cint})::Cvoid
 end
 
-function mc22ad_64(n, icn, a, nz, lenrow, ip, iq, iw, iw1)
-  @ccall libhsl_subset_64.mc22ad_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
-                                     nz::Ref{Int64}, lenrow::Ptr{Int64}, ip::Ptr{Int64},
-                                     iq::Ptr{Int64}, iw::Ptr{Int64}, iw1::Ptr{Int64})::Cvoid
-end
-
 function mc22a(n, icn, a, nz, lenrow, ip, iq, iw, iw1)
   @ccall libhsl.mc22a_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, nz::Ref{Cint},
                        lenrow::Ptr{Cint}, ip::Ptr{Cint}, iq::Ptr{Cint}, iw::Ptr{Cint},
                        iw1::Ptr{Cint})::Cvoid
 end
 
-function mc22a_64(n, icn, a, nz, lenrow, ip, iq, iw, iw1)
-  @ccall libhsl_subset_64.mc22a_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32}, nz::Ref{Int64},
-                                    lenrow::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                    iw::Ptr{Int64}, iw1::Ptr{Int64})::Cvoid
-end
-
 function mc22az(n, icn, a, nz, lenrow, ip, iq, iw, iw1)
   @ccall libhsl.mc22az_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{ComplexF64}, nz::Ref{Cint},
                         lenrow::Ptr{Cint}, ip::Ptr{Cint}, iq::Ptr{Cint}, iw::Ptr{Cint},
diff --git a/src/Fortran/libhsl/mc23.jl b/src/Fortran/libhsl/mc23.jl
new file mode 100644
index 0000000..a49b707
--- /dev/null
+++ b/src/Fortran/libhsl/mc23.jl
@@ -0,0 +1,11 @@
+function mc23ad(n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw, iw1)
+  @ccall libhsl.mc23ad_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
+                        lenr::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint}, iq::Ptr{Cint},
+                        lenoff::Ptr{Cint}, iw::Ptr{Cint}, iw1::Ptr{Cint})::Cvoid
+end
+
+function mc23a(n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw, iw1)
+  @ccall libhsl.mc23a_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
+                       lenr::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint}, iq::Ptr{Cint},
+                       lenoff::Ptr{Cint}, iw::Ptr{Cint}, iw1::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/libhsl/mc24.jl b/src/Fortran/libhsl/mc24.jl
new file mode 100644
index 0000000..66ccfac
--- /dev/null
+++ b/src/Fortran/libhsl/mc24.jl
@@ -0,0 +1,9 @@
+function mc24ad(n, icn, a, licn, lenr, lenrl, w)
+  @ccall libhsl.mc24ad_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
+                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, w::Ptr{Float64})::Cvoid
+end
+
+function mc24a(n, icn, a, licn, lenr, lenrl, w)
+  @ccall libhsl.mc24a_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
+                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, w::Ptr{Float32})::Cvoid
+end
diff --git a/src/Fortran/mc25.jl b/src/Fortran/libhsl/mc25.jl
similarity index 100%
rename from src/Fortran/mc25.jl
rename to src/Fortran/libhsl/mc25.jl
diff --git a/src/Fortran/mc26.jl b/src/Fortran/libhsl/mc26.jl
similarity index 100%
rename from src/Fortran/mc26.jl
rename to src/Fortran/libhsl/mc26.jl
diff --git a/src/Fortran/libhsl/mc29.jl b/src/Fortran/libhsl/mc29.jl
new file mode 100644
index 0000000..cba0bd7
--- /dev/null
+++ b/src/Fortran/libhsl/mc29.jl
@@ -0,0 +1,11 @@
+function mc29ad(m, n, ne, a, irn, icn, r, c, w, lp, ifail)
+  @ccall libhsl.mc29ad_(m::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64}, irn::Ptr{Cint},
+                        icn::Ptr{Cint}, r::Ptr{Float64}, c::Ptr{Float64}, w::Ptr{Float64},
+                        lp::Ref{Cint}, ifail::Ref{Cint})::Cvoid
+end
+
+function mc29a(m, n, ne, a, irn, icn, r, c, w, lp, ifail)
+  @ccall libhsl.mc29a_(m::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, irn::Ptr{Cint},
+                       icn::Ptr{Cint}, r::Ptr{Float32}, c::Ptr{Float32}, w::Ptr{Float32},
+                       lp::Ref{Cint}, ifail::Ref{Cint})::Cvoid
+end
diff --git a/src/Fortran/libhsl/mc30.jl b/src/Fortran/libhsl/mc30.jl
new file mode 100644
index 0000000..820b9e2
--- /dev/null
+++ b/src/Fortran/libhsl/mc30.jl
@@ -0,0 +1,10 @@
+function mc30ad(n, ne, a, irn, icn, s, w, lp, ifail)
+  @ccall libhsl.mc30ad_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64}, irn::Ptr{Cint},
+                        icn::Ptr{Cint}, s::Ptr{Float64}, w::Ptr{Float64}, lp::Ref{Cint},
+                        ifail::Ref{Cint})::Cvoid
+end
+
+function mc30a(n, ne, a, irn, icn, s, w, lp, ifail)
+  @ccall libhsl.mc30a_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, irn::Ptr{Cint}, icn::Ptr{Cint},
+                       s::Ptr{Float32}, w::Ptr{Float32}, lp::Ref{Cint}, ifail::Ref{Cint})::Cvoid
+end
diff --git a/src/Fortran/mc33.jl b/src/Fortran/libhsl/mc33.jl
similarity index 100%
rename from src/Fortran/mc33.jl
rename to src/Fortran/libhsl/mc33.jl
diff --git a/src/Fortran/libhsl/mc34.jl b/src/Fortran/libhsl/mc34.jl
new file mode 100644
index 0000000..dd9ef41
--- /dev/null
+++ b/src/Fortran/libhsl/mc34.jl
@@ -0,0 +1,9 @@
+function mc34ad(n, irn, jcolst, yesa, a, iw)
+  @ccall libhsl.mc34ad_(n::Ref{Cint}, irn::Ptr{Cint}, jcolst::Ptr{Cint}, yesa::Ref{Cint},
+                        a::Ptr{Float64}, iw::Ptr{Cint})::Cvoid
+end
+
+function mc34a(n, irn, jcolst, yesa, a, iw)
+  @ccall libhsl.mc34a_(n::Ref{Cint}, irn::Ptr{Cint}, jcolst::Ptr{Cint}, yesa::Ref{Cint},
+                       a::Ptr{Float32}, iw::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/mc36.jl b/src/Fortran/libhsl/mc36.jl
similarity index 100%
rename from src/Fortran/mc36.jl
rename to src/Fortran/libhsl/mc36.jl
diff --git a/src/Fortran/libhsl/mc37.jl b/src/Fortran/libhsl/mc37.jl
new file mode 100644
index 0000000..27e10fb
--- /dev/null
+++ b/src/Fortran/libhsl/mc37.jl
@@ -0,0 +1,26 @@
+function mc37ad(n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt, ielt, laelt, aelt, iw, icntl, info)
+  @ccall libhsl.mc37ad_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
+                        a::Ptr{Float64}, ip::Ptr{Cint}, lielt::Ref{Cint}, numelt::Ref{Cint},
+                        ptrelt::Ptr{Cint}, ielt::Ptr{Cint}, laelt::Ref{Cint}, aelt::Ptr{Float64},
+                        iw::Ptr{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function mc37bd(n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt, lielt, aelt, laelt)
+  @ccall libhsl.mc37bd_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64}, irn::Ptr{Cint},
+                        jcn::Ptr{Cint}, ip::Ptr{Cint}, numelt::Ref{Cint}, ptrelt::Ptr{Cint},
+                        ielt::Ptr{Cint}, lielt::Ref{Cint}, aelt::Ptr{Float64},
+                        laelt::Ref{Cint})::Cvoid
+end
+
+function mc37a(n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt, ielt, laelt, aelt, iw, icntl, info)
+  @ccall libhsl.mc37a_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, a::Ptr{Float32},
+                       ip::Ptr{Cint}, lielt::Ref{Cint}, numelt::Ref{Cint}, ptrelt::Ptr{Cint},
+                       ielt::Ptr{Cint}, laelt::Ref{Cint}, aelt::Ptr{Float32}, iw::Ptr{Cint},
+                       icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function mc37b(n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt, lielt, aelt, laelt)
+  @ccall libhsl.mc37b_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, irn::Ptr{Cint}, jcn::Ptr{Cint},
+                       ip::Ptr{Cint}, numelt::Ref{Cint}, ptrelt::Ptr{Cint}, ielt::Ptr{Cint},
+                       lielt::Ref{Cint}, aelt::Ptr{Float32}, laelt::Ref{Cint})::Cvoid
+end
diff --git a/src/Fortran/mc38.jl b/src/Fortran/libhsl/mc38.jl
similarity index 100%
rename from src/Fortran/mc38.jl
rename to src/Fortran/libhsl/mc38.jl
diff --git a/src/Fortran/mc44.jl b/src/Fortran/libhsl/mc44.jl
similarity index 100%
rename from src/Fortran/mc44.jl
rename to src/Fortran/libhsl/mc44.jl
diff --git a/src/Fortran/mc46.jl b/src/Fortran/libhsl/mc46.jl
similarity index 100%
rename from src/Fortran/mc46.jl
rename to src/Fortran/libhsl/mc46.jl
diff --git a/src/Fortran/libhsl/mc47.jl b/src/Fortran/libhsl/mc47.jl
new file mode 100644
index 0000000..c33453c
--- /dev/null
+++ b/src/Fortran/libhsl/mc47.jl
@@ -0,0 +1,33 @@
+function mc47id(icntl)
+  @ccall libhsl.mc47id_(icntl::Ptr{Cint})::Cvoid
+end
+
+function mc47ad(n, ne, pe, iw, iwlen, icntl, info, rinfo)
+  @ccall libhsl.mc47ad_(n::Ref{Cint}, ne::Ref{Cint}, pe::Ptr{Cint}, iw::Ptr{Cint}, iwlen::Ref{Cint},
+                        icntl::Ptr{Cint}, info::Ptr{Cint}, rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc47bd(n, iwlen, pe, pfree, len, iw, nv, elen, last, degree, head, denxt, w, icntl, jnfo,
+                rjnfo)
+  @ccall libhsl.mc47bd_(n::Ref{Cint}, iwlen::Ref{Cint}, pe::Ptr{Cint}, pfree::Ref{Cint},
+                        len::Ptr{Cint}, iw::Ptr{Cint}, nv::Ptr{Cint}, elen::Ptr{Cint},
+                        last::Ptr{Cint}, degree::Ptr{Cint}, head::Ptr{Cint}, denxt::Ptr{Cint},
+                        w::Ptr{Cint}, icntl::Ptr{Cint}, jnfo::Ptr{Cint}, rjnfo::Ptr{Float64})::Cvoid
+end
+
+function mc47i(icntl)
+  @ccall libhsl.mc47i_(icntl::Ptr{Cint})::Cvoid
+end
+
+function mc47a(n, ne, pe, iw, iwlen, icntl, info, rinfo)
+  @ccall libhsl.mc47a_(n::Ref{Cint}, ne::Ref{Cint}, pe::Ptr{Cint}, iw::Ptr{Cint}, iwlen::Ref{Cint},
+                       icntl::Ptr{Cint}, info::Ptr{Cint}, rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc47b(n, iwlen, pe, pfree, len, iw, nv, elen, last, degree, head, denxt, w, icntl, jnfo,
+               rjnfo)
+  @ccall libhsl.mc47b_(n::Ref{Cint}, iwlen::Ref{Cint}, pe::Ptr{Cint}, pfree::Ref{Cint},
+                       len::Ptr{Cint}, iw::Ptr{Cint}, nv::Ptr{Cint}, elen::Ptr{Cint},
+                       last::Ptr{Cint}, degree::Ptr{Cint}, head::Ptr{Cint}, denxt::Ptr{Cint},
+                       w::Ptr{Cint}, icntl::Ptr{Cint}, jnfo::Ptr{Cint}, rjnfo::Ptr{Float32})::Cvoid
+end
diff --git a/src/Fortran/mc49.jl b/src/Fortran/libhsl/mc49.jl
similarity index 54%
rename from src/Fortran/mc49.jl
rename to src/Fortran/libhsl/mc49.jl
index 7c29297..834ae84 100644
--- a/src/Fortran/mc49.jl
+++ b/src/Fortran/libhsl/mc49.jl
@@ -5,39 +5,18 @@ function mc49ad(ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip, liw, iw, iflag
                         iw::Ptr{Cint}, iflag::Ref{Cint})::Cvoid
 end
 
-function mc49ad_64(ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip, liw, iw, iflag)
-  @ccall libhsl_subset_64.mc49ad_64_(ind::Ref{Int64}, nc::Ref{Int64}, nr::Ref{Int64},
-                                     nnz::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
-                                     yesa::Ref{Int64}, la::Ref{Int64}, a::Ptr{Float64},
-                                     lip::Ref{Int64}, ip::Ptr{Int64}, liw::Ref{Int64},
-                                     iw::Ptr{Int64}, iflag::Ref{Int64})::Cvoid
-end
-
 function mc49bd(nc, nnz, irn, jcn, yesa, la, a, ip, iw)
   @ccall libhsl.mc49bd_(nc::Ref{Cint}, nnz::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
                         yesa::Ref{Cint}, la::Ref{Cint}, a::Ptr{Float64}, ip::Ptr{Cint},
                         iw::Ptr{Cint})::Cvoid
 end
 
-function mc49bd_64(nc, nnz, irn, jcn, yesa, la, a, ip, iw)
-  @ccall libhsl_subset_64.mc49bd_64_(nc::Ref{Int64}, nnz::Ref{Int64}, irn::Ptr{Int64},
-                                     jcn::Ptr{Int64}, yesa::Ref{Int64}, la::Ref{Int64},
-                                     a::Ptr{Float64}, ip::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
 function mc49cd(nc, nr, nnz, irn, jcn, yesa, la, a, ip, iw)
   @ccall libhsl.mc49cd_(nc::Ref{Cint}, nr::Ref{Cint}, nnz::Ref{Cint}, irn::Ptr{Cint},
                         jcn::Ptr{Cint}, yesa::Ref{Cint}, la::Ref{Cint}, a::Ptr{Float64},
                         ip::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
 end
 
-function mc49cd_64(nc, nr, nnz, irn, jcn, yesa, la, a, ip, iw)
-  @ccall libhsl_subset_64.mc49cd_64_(nc::Ref{Int64}, nr::Ref{Int64}, nnz::Ref{Int64},
-                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, yesa::Ref{Int64},
-                                     la::Ref{Int64}, a::Ptr{Float64}, ip::Ptr{Int64},
-                                     iw::Ptr{Int64})::Cvoid
-end
-
 function mc49ai(ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip, liw, iw, iflag)
   @ccall libhsl.mc49ai_(ind::Ref{Cint}, nc::Ref{Cint}, nr::Ref{Cint}, nnz::Ref{Cint},
                         irn::Ptr{Cint}, jcn::Ptr{Cint}, yesa::Ref{Cint}, la::Ref{Cint},
@@ -64,35 +43,14 @@ function mc49a(ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip, liw, iw, iflag)
                        iflag::Ref{Cint})::Cvoid
 end
 
-function mc49a_64(ind, nc, nr, nnz, irn, jcn, yesa, la, a, lip, ip, liw, iw, iflag)
-  @ccall libhsl_subset_64.mc49a_64_(ind::Ref{Int64}, nc::Ref{Int64}, nr::Ref{Int64},
-                                    nnz::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
-                                    yesa::Ref{Int64}, la::Ref{Int64}, a::Ptr{Float32},
-                                    lip::Ref{Int64}, ip::Ptr{Int64}, liw::Ref{Int64},
-                                    iw::Ptr{Int64}, iflag::Ref{Int64})::Cvoid
-end
-
 function mc49b(nc, nnz, irn, jcn, yesa, la, a, ip, iw)
   @ccall libhsl.mc49b_(nc::Ref{Cint}, nnz::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
                        yesa::Ref{Cint}, la::Ref{Cint}, a::Ptr{Float32}, ip::Ptr{Cint},
                        iw::Ptr{Cint})::Cvoid
 end
 
-function mc49b_64(nc, nnz, irn, jcn, yesa, la, a, ip, iw)
-  @ccall libhsl_subset_64.mc49b_64_(nc::Ref{Int64}, nnz::Ref{Int64}, irn::Ptr{Int64},
-                                    jcn::Ptr{Int64}, yesa::Ref{Int64}, la::Ref{Int64},
-                                    a::Ptr{Float32}, ip::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
 function mc49c(nc, nr, nnz, irn, jcn, yesa, la, a, ip, iw)
   @ccall libhsl.mc49c_(nc::Ref{Cint}, nr::Ref{Cint}, nnz::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
                        yesa::Ref{Cint}, la::Ref{Cint}, a::Ptr{Float32}, ip::Ptr{Cint},
                        iw::Ptr{Cint})::Cvoid
 end
-
-function mc49c_64(nc, nr, nnz, irn, jcn, yesa, la, a, ip, iw)
-  @ccall libhsl_subset_64.mc49c_64_(nc::Ref{Int64}, nr::Ref{Int64}, nnz::Ref{Int64},
-                                    irn::Ptr{Int64}, jcn::Ptr{Int64}, yesa::Ref{Int64},
-                                    la::Ref{Int64}, a::Ptr{Float32}, ip::Ptr{Int64},
-                                    iw::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc53.jl b/src/Fortran/libhsl/mc53.jl
similarity index 100%
rename from src/Fortran/mc53.jl
rename to src/Fortran/libhsl/mc53.jl
diff --git a/src/Fortran/mc54.jl b/src/Fortran/libhsl/mc54.jl
similarity index 67%
rename from src/Fortran/mc54.jl
rename to src/Fortran/libhsl/mc54.jl
index e762279..9b05313 100644
--- a/src/Fortran/mc54.jl
+++ b/src/Fortran/libhsl/mc54.jl
@@ -31,52 +31,25 @@ function mc54ad(icntl, title, key, m, n, ne, ip, ind, value, iw, info)
                         8::Csize_t)::Cvoid
 end
 
-function mc54ad_64(icntl, title, key, m, n, ne, ip, ind, value, iw, info)
-  @ccall libhsl_subset_64.mc54ad_64_(icntl::Ptr{Int64}, title::Ptr{UInt8}, key::Ptr{UInt8},
-                                     m::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64},
-                                     ind::Ptr{Int64}, value::Ptr{Float64}, iw::Ptr{Int64},
-                                     info::Ptr{Int64}, 72::Csize_t, 8::Csize_t)::Cvoid
-end
-
 function mc54bd(n, ind, fmtind, lunit)
   @ccall libhsl.mc54bd_(n::Ref{Cint}, ind::Ptr{Cint}, fmtind::Ptr{UInt8}, lunit::Ref{Cint},
                         16::Csize_t)::Cvoid
 end
 
-function mc54bd_64(n, ind, fmtind, lunit)
-  @ccall libhsl_subset_64.mc54bd_64_(n::Ref{Int64}, ind::Ptr{Int64}, fmtind::Ptr{UInt8},
-                                     lunit::Ref{Int64}, 16::Csize_t)::Cvoid
-end
-
 function mc54cd(n, a, fmta, lunit)
   @ccall libhsl.mc54cd_(n::Ref{Cint}, a::Ptr{Float64}, fmta::Ptr{UInt8}, lunit::Ref{Cint},
                         20::Csize_t)::Cvoid
 end
 
-function mc54cd_64(n, a, fmta, lunit)
-  @ccall libhsl_subset_64.mc54cd_64_(n::Ref{Int64}, a::Ptr{Float64}, fmta::Ptr{UInt8},
-                                     lunit::Ref{Int64}, 20::Csize_t)::Cvoid
-end
-
 function mc54dd(n, nlin, fmt)
   @ccall libhsl.mc54dd_(n::Ref{Cint}, nlin::Ref{Cint}, fmt::Ptr{UInt8}, 16::Csize_t)::Cvoid
 end
 
-function mc54dd_64(n, nlin, fmt)
-  @ccall libhsl_subset_64.mc54dd_64_(n::Ref{Int64}, nlin::Ref{Int64}, fmt::Ptr{UInt8},
-                                     16::Csize_t)::Cvoid
-end
-
 function mc54ed(dec, valfmi, valfmo, valcrd)
   @ccall libhsl.mc54ed_(dec::Ref{Cint}, valfmi::Ptr{UInt8}, valfmo::Ptr{UInt8}, valcrd::Ref{Cint},
                         20::Csize_t, 20::Csize_t)::Cvoid
 end
 
-function mc54ed_64(dec, valfmi, valfmo, valcrd)
-  @ccall libhsl_subset_64.mc54ed_64_(dec::Ref{Int64}, valfmi::Ptr{UInt8}, valfmo::Ptr{UInt8},
-                                     valcrd::Ref{Int64}, 20::Csize_t, 20::Csize_t)::Cvoid
-end
-
 function mc54ai(icntl, title, key, m, n, ne, ip, ind, value, iw, info)
   @ccall libhsl.mc54ai_(icntl::Ptr{Cint}, title::Ptr{UInt8}, key::Ptr{UInt8}, m::Ref{Cint},
                         n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, ind::Ptr{Cint},
@@ -110,52 +83,25 @@ function mc54a(icntl, title, key, m, n, ne, ip, ind, value, iw, info)
                        8::Csize_t)::Cvoid
 end
 
-function mc54a_64(icntl, title, key, m, n, ne, ip, ind, value, iw, info)
-  @ccall libhsl_subset_64.mc54a_64_(icntl::Ptr{Int64}, title::Ptr{UInt8}, key::Ptr{UInt8},
-                                    m::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64},
-                                    ind::Ptr{Int64}, value::Ptr{Float32}, iw::Ptr{Int64},
-                                    info::Ptr{Int64}, 72::Csize_t, 8::Csize_t)::Cvoid
-end
-
 function mc54b(n, ind, fmtind, lunit)
   @ccall libhsl.mc54b_(n::Ref{Cint}, ind::Ptr{Cint}, fmtind::Ptr{UInt8}, lunit::Ref{Cint},
                        16::Csize_t)::Cvoid
 end
 
-function mc54b_64(n, ind, fmtind, lunit)
-  @ccall libhsl_subset_64.mc54b_64_(n::Ref{Int64}, ind::Ptr{Int64}, fmtind::Ptr{UInt8},
-                                    lunit::Ref{Int64}, 16::Csize_t)::Cvoid
-end
-
 function mc54c(n, a, fmta, lunit)
   @ccall libhsl.mc54c_(n::Ref{Cint}, a::Ptr{Float32}, fmta::Ptr{UInt8}, lunit::Ref{Cint},
                        20::Csize_t)::Cvoid
 end
 
-function mc54c_64(n, a, fmta, lunit)
-  @ccall libhsl_subset_64.mc54c_64_(n::Ref{Int64}, a::Ptr{Float32}, fmta::Ptr{UInt8},
-                                    lunit::Ref{Int64}, 20::Csize_t)::Cvoid
-end
-
 function mc54d(n, nlin, fmt)
   @ccall libhsl.mc54d_(n::Ref{Cint}, nlin::Ref{Cint}, fmt::Ptr{UInt8}, 16::Csize_t)::Cvoid
 end
 
-function mc54d_64(n, nlin, fmt)
-  @ccall libhsl_subset_64.mc54d_64_(n::Ref{Int64}, nlin::Ref{Int64}, fmt::Ptr{UInt8},
-                                    16::Csize_t)::Cvoid
-end
-
 function mc54e(dec, valfmi, valfmo, valcrd)
   @ccall libhsl.mc54e_(dec::Ref{Cint}, valfmi::Ptr{UInt8}, valfmo::Ptr{UInt8}, valcrd::Ref{Cint},
                        20::Csize_t, 20::Csize_t)::Cvoid
 end
 
-function mc54e_64(dec, valfmi, valfmo, valcrd)
-  @ccall libhsl_subset_64.mc54e_64_(dec::Ref{Int64}, valfmi::Ptr{UInt8}, valfmo::Ptr{UInt8},
-                                    valcrd::Ref{Int64}, 20::Csize_t, 20::Csize_t)::Cvoid
-end
-
 function mc54az(icntl, title, key, m, n, ne, ip, ind, value, iw, info)
   @ccall libhsl.mc54az_(icntl::Ptr{Cint}, title::Ptr{UInt8}, key::Ptr{UInt8}, m::Ref{Cint},
                         n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, ind::Ptr{Cint},
diff --git a/src/Fortran/mc55.jl b/src/Fortran/libhsl/mc55.jl
similarity index 100%
rename from src/Fortran/mc55.jl
rename to src/Fortran/libhsl/mc55.jl
diff --git a/src/Fortran/mc56.jl b/src/Fortran/libhsl/mc56.jl
similarity index 100%
rename from src/Fortran/mc56.jl
rename to src/Fortran/libhsl/mc56.jl
diff --git a/src/Fortran/libhsl/mc57.jl b/src/Fortran/libhsl/mc57.jl
new file mode 100644
index 0000000..f48216f
--- /dev/null
+++ b/src/Fortran/libhsl/mc57.jl
@@ -0,0 +1,23 @@
+function mc57ad(lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn, irn, ip, la, a, iw, lp, info)
+  @ccall libhsl.mc57ad_(lcntl::Ptr{Cint}, nmax::Ref{Cint}, nelt::Ref{Cint}, eltvar::Ptr{Cint},
+                        eltptr::Ptr{Cint}, aelt::Ptr{Float64}, n::Ref{Cint}, lirn::Ref{Cint},
+                        irn::Ptr{Cint}, ip::Ptr{Cint}, la::Ref{Cint}, a::Ptr{Float64},
+                        iw::Ptr{Cint}, lp::Ref{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function mc57bd(n, yesa, la, a, nz, irn, ip)
+  @ccall libhsl.mc57bd_(n::Ref{Cint}, yesa::Ref{Cint}, la::Ref{Cint}, a::Ptr{Float64},
+                        nz::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint})::Cvoid
+end
+
+function mc57a(lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn, irn, ip, la, a, iw, lp, info)
+  @ccall libhsl.mc57a_(lcntl::Ptr{Cint}, nmax::Ref{Cint}, nelt::Ref{Cint}, eltvar::Ptr{Cint},
+                       eltptr::Ptr{Cint}, aelt::Ptr{Float32}, n::Ref{Cint}, lirn::Ref{Cint},
+                       irn::Ptr{Cint}, ip::Ptr{Cint}, la::Ref{Cint}, a::Ptr{Float32}, iw::Ptr{Cint},
+                       lp::Ref{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function mc57b(n, yesa, la, a, nz, irn, ip)
+  @ccall libhsl.mc57b_(n::Ref{Cint}, yesa::Ref{Cint}, la::Ref{Cint}, a::Ptr{Float32}, nz::Ref{Cint},
+                       irn::Ptr{Cint}, ip::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/mc58.jl b/src/Fortran/libhsl/mc58.jl
similarity index 100%
rename from src/Fortran/mc58.jl
rename to src/Fortran/libhsl/mc58.jl
diff --git a/src/Fortran/mc59.jl b/src/Fortran/libhsl/mc59.jl
similarity index 66%
rename from src/Fortran/mc59.jl
rename to src/Fortran/libhsl/mc59.jl
index 1207b30..dc50ccb 100644
--- a/src/Fortran/mc59.jl
+++ b/src/Fortran/libhsl/mc59.jl
@@ -42,14 +42,6 @@ function mc59ad(icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip, liw, iw, info
                         iw::Ptr{Cint}, info::Ptr{Cint})::Cvoid
 end
 
-function mc59ad_64(icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip, liw, iw, info)
-  @ccall libhsl_subset_64.mc59ad_64_(icntl::Ptr{Int64}, nc::Ref{Int64}, nr::Ref{Int64},
-                                     ne::Ref{Int64}, irn::Ptr{Int64}, ljcn::Ref{Int64},
-                                     jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float64},
-                                     lip::Ref{Int64}, ip::Ptr{Int64}, liw::Ref{Int64},
-                                     iw::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
 function mc59bd(lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw, iout, jout, kne)
   @ccall libhsl.mc59bd_(lcheck::Ref{Cint}, part::Ref{Cint}, nc::Ref{Cint}, nr::Ref{Cint},
                         ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, la::Ref{Cint},
@@ -57,48 +49,22 @@ function mc59bd(lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw, iout, jout, k
                         jout::Ref{Cint}, kne::Ref{Cint})::Cvoid
 end
 
-function mc59bd_64(lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw, iout, jout, kne)
-  @ccall libhsl_subset_64.mc59bd_64_(lcheck::Ref{Int64}, part::Ref{Int64}, nc::Ref{Int64},
-                                     nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                     jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float64},
-                                     ip::Ptr{Int64}, iw::Ptr{Int64}, iout::Ref{Int64},
-                                     jout::Ref{Int64}, kne::Ref{Int64})::Cvoid
-end
-
 function mc59cd(nc, nr, ne, irn, jcn, la, a, ip, iw)
   @ccall libhsl.mc59cd_(nc::Ref{Cint}, nr::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
                         la::Ref{Cint}, a::Ptr{Float64}, ip::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
 end
 
-function mc59cd_64(nc, nr, ne, irn, jcn, la, a, ip, iw)
-  @ccall libhsl_subset_64.mc59cd_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64},
-                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, la::Ref{Int64},
-                                     a::Ptr{Float64}, ip::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
 function mc59dd(nc, ne, irn, ip, la, a)
   @ccall libhsl.mc59dd_(nc::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, la::Ref{Cint},
                         a::Ptr{Float64})::Cvoid
 end
 
-function mc59dd_64(nc, ne, irn, ip, la, a)
-  @ccall libhsl_subset_64.mc59dd_64_(nc::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                     ip::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float64})::Cvoid
-end
-
 function mc59ed(nc, nr, ne, irn, lip, ip, la, a, iw, idup, kne, icntl6)
   @ccall libhsl.mc59ed_(nc::Ref{Cint}, nr::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, lip::Ref{Cint},
                         ip::Ptr{Cint}, la::Ref{Cint}, a::Ptr{Float64}, iw::Ptr{Cint},
                         idup::Ref{Cint}, kne::Ref{Cint}, icntl6::Ref{Cint})::Cvoid
 end
 
-function mc59ed_64(nc, nr, ne, irn, lip, ip, la, a, iw, idup, kne, icntl6)
-  @ccall libhsl_subset_64.mc59ed_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64},
-                                     irn::Ptr{Int64}, lip::Ref{Int64}, ip::Ptr{Int64},
-                                     la::Ref{Int64}, a::Ptr{Float64}, iw::Ptr{Int64},
-                                     idup::Ref{Int64}, kne::Ref{Int64}, icntl6::Ref{Int64})::Cvoid
-end
-
 function mc59fd(nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup, iout, iup, kne, icntl6, info)
   @ccall libhsl.mc59fd_(nc::Ref{Cint}, nr::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, lip::Ref{Cint},
                         ip::Ptr{Cint}, la::Ref{Cint}, a::Ptr{Float64}, liw::Ref{Cint},
@@ -106,15 +72,6 @@ function mc59fd(nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup, iout, iup, kne,
                         kne::Ref{Cint}, icntl6::Ref{Cint}, info::Ptr{Cint})::Cvoid
 end
 
-function mc59fd_64(nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup, iout, iup, kne, icntl6, info)
-  @ccall libhsl_subset_64.mc59fd_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64},
-                                     irn::Ptr{Int64}, lip::Ref{Int64}, ip::Ptr{Int64},
-                                     la::Ref{Int64}, a::Ptr{Float64}, liw::Ref{Int64},
-                                     iw::Ptr{Int64}, idup::Ref{Int64}, iout::Ref{Int64},
-                                     iup::Ref{Int64}, kne::Ref{Int64}, icntl6::Ref{Int64},
-                                     info::Ptr{Int64})::Cvoid
-end
-
 function mc59ai(icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip, liw, iw, info)
   @ccall libhsl.mc59ai_(icntl::Ptr{Cint}, nc::Ref{Cint}, nr::Ref{Cint}, ne::Ref{Cint},
                         irn::Ptr{Cint}, ljcn::Ref{Cint}, jcn::Ptr{Cint}, la::Ref{Cint},
@@ -159,14 +116,6 @@ function mc59a(icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip, liw, iw, info)
                        iw::Ptr{Cint}, info::Ptr{Cint})::Cvoid
 end
 
-function mc59a_64(icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip, liw, iw, info)
-  @ccall libhsl_subset_64.mc59a_64_(icntl::Ptr{Int64}, nc::Ref{Int64}, nr::Ref{Int64},
-                                    ne::Ref{Int64}, irn::Ptr{Int64}, ljcn::Ref{Int64},
-                                    jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float32},
-                                    lip::Ref{Int64}, ip::Ptr{Int64}, liw::Ref{Int64},
-                                    iw::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
 function mc59b(lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw, iout, jout, kne)
   @ccall libhsl.mc59b_(lcheck::Ref{Cint}, part::Ref{Cint}, nc::Ref{Cint}, nr::Ref{Cint},
                        ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, la::Ref{Cint},
@@ -174,48 +123,22 @@ function mc59b(lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw, iout, jout, kn
                        jout::Ref{Cint}, kne::Ref{Cint})::Cvoid
 end
 
-function mc59b_64(lcheck, part, nc, nr, ne, irn, jcn, la, a, ip, iw, iout, jout, kne)
-  @ccall libhsl_subset_64.mc59b_64_(lcheck::Ref{Int64}, part::Ref{Int64}, nc::Ref{Int64},
-                                    nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                    jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float32},
-                                    ip::Ptr{Int64}, iw::Ptr{Int64}, iout::Ref{Int64},
-                                    jout::Ref{Int64}, kne::Ref{Int64})::Cvoid
-end
-
 function mc59c(nc, nr, ne, irn, jcn, la, a, ip, iw)
   @ccall libhsl.mc59c_(nc::Ref{Cint}, nr::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
                        la::Ref{Cint}, a::Ptr{Float32}, ip::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
 end
 
-function mc59c_64(nc, nr, ne, irn, jcn, la, a, ip, iw)
-  @ccall libhsl_subset_64.mc59c_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                    jcn::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float32},
-                                    ip::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
 function mc59d(nc, ne, irn, ip, la, a)
   @ccall libhsl.mc59d_(nc::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint}, la::Ref{Cint},
                        a::Ptr{Float32})::Cvoid
 end
 
-function mc59d_64(nc, ne, irn, ip, la, a)
-  @ccall libhsl_subset_64.mc59d_64_(nc::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, ip::Ptr{Int64},
-                                    la::Ref{Int64}, a::Ptr{Float32})::Cvoid
-end
-
 function mc59e(nc, nr, ne, irn, lip, ip, la, a, iw, idup, kne, icntl6)
   @ccall libhsl.mc59e_(nc::Ref{Cint}, nr::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, lip::Ref{Cint},
                        ip::Ptr{Cint}, la::Ref{Cint}, a::Ptr{Float32}, iw::Ptr{Cint},
                        idup::Ref{Cint}, kne::Ref{Cint}, icntl6::Ref{Cint})::Cvoid
 end
 
-function mc59e_64(nc, nr, ne, irn, lip, ip, la, a, iw, idup, kne, icntl6)
-  @ccall libhsl_subset_64.mc59e_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                    lip::Ref{Int64}, ip::Ptr{Int64}, la::Ref{Int64},
-                                    a::Ptr{Float32}, iw::Ptr{Int64}, idup::Ref{Int64},
-                                    kne::Ref{Int64}, icntl6::Ref{Int64})::Cvoid
-end
-
 function mc59f(nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup, iout, iup, kne, icntl6, info)
   @ccall libhsl.mc59f_(nc::Ref{Cint}, nr::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, lip::Ref{Cint},
                        ip::Ptr{Cint}, la::Ref{Cint}, a::Ptr{Float32}, liw::Ref{Cint}, iw::Ptr{Cint},
@@ -223,14 +146,6 @@ function mc59f(nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup, iout, iup, kne, i
                        icntl6::Ref{Cint}, info::Ptr{Cint})::Cvoid
 end
 
-function mc59f_64(nc, nr, ne, irn, lip, ip, la, a, liw, iw, idup, iout, iup, kne, icntl6, info)
-  @ccall libhsl_subset_64.mc59f_64_(nc::Ref{Int64}, nr::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                    lip::Ref{Int64}, ip::Ptr{Int64}, la::Ref{Int64},
-                                    a::Ptr{Float32}, liw::Ref{Int64}, iw::Ptr{Int64},
-                                    idup::Ref{Int64}, iout::Ref{Int64}, iup::Ref{Int64},
-                                    kne::Ref{Int64}, icntl6::Ref{Int64}, info::Ptr{Int64})::Cvoid
-end
-
 function mc59az(icntl, nc, nr, ne, irn, ljcn, jcn, la, a, lip, ip, liw, iw, info)
   @ccall libhsl.mc59az_(icntl::Ptr{Cint}, nc::Ref{Cint}, nr::Ref{Cint}, ne::Ref{Cint},
                         irn::Ptr{Cint}, ljcn::Ref{Cint}, jcn::Ptr{Cint}, la::Ref{Cint},
diff --git a/src/Fortran/libhsl/mc60.jl b/src/Fortran/libhsl/mc60.jl
new file mode 100644
index 0000000..4113df9
--- /dev/null
+++ b/src/Fortran/libhsl/mc60.jl
@@ -0,0 +1,157 @@
+function mc60ad(n, lirn, irn, icptr, icntl, iw, info)
+  @ccall libhsl.mc60ad_(n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint},
+                        icntl::Ptr{Cint}, iw::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function mc60bd(n, lirn, irn, icptr, nsup, svar, vars, iw)
+  @ccall libhsl.mc60bd_(n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint},
+                        nsup::Ref{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
+end
+
+function mc60cd(n, nsup, lirn, irn, icptr, vars, jcntl, permsv, weight, pair, info, iw, w)
+  @ccall libhsl.mc60cd_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                        icptr::Ptr{Cint}, vars::Ptr{Cint}, jcntl::Ptr{Cint}, permsv::Ptr{Cint},
+                        weight::Ptr{Float64}, pair::Ptr{Cint}, info::Ptr{Cint}, iw::Ptr{Cint},
+                        w::Ptr{Float64})::Cvoid
+end
+
+function mc60dd(n, nsup, svar, vars, permsv, perm, possv)
+  @ccall libhsl.mc60dd_(n::Ref{Cint}, nsup::Ref{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint},
+                        permsv::Ptr{Cint}, perm::Ptr{Cint}, possv::Ptr{Cint})::Cvoid
+end
+
+function mc60ed(n, nsup, lirn, irn, icptr, svar, vars, permsv, perm, iw)
+  @ccall libhsl.mc60ed_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                        icptr::Ptr{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint},
+                        perm::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
+end
+
+function mc60fd(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl.mc60fd_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                        icptr::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint}, iw::Ptr{Cint},
+                        rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc60gd(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl.mc60gd_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                        icptr::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint}, iw::Ptr{Cint},
+                        rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc60hd(n, nsup, lirn, irn, icptr, vars, mask, ls, xls, list, info)
+  @ccall libhsl.mc60hd_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                        icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint}, ls::Ptr{Cint},
+                        xls::Ptr{Cint}, list::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function mc60jd(nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars, status, weight, nlist, queue,
+                deg, prior)
+  @ccall libhsl.mc60jd_(nsup::Ref{Cint}, lirn::Ref{Cint}, nodes::Ref{Cint}, nstrt::Ref{Cint},
+                        lstnum::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint}, vars::Ptr{Cint},
+                        status::Ptr{Cint}, weight::Ptr{Float64}, nlist::Ptr{Cint}, queue::Ptr{Cint},
+                        deg::Ptr{Cint}, prior::Ptr{Float64})::Cvoid
+end
+
+function mc60ld(root, maxwid, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, lwidth, nvars)
+  @ccall libhsl.mc60ld_(root::Ref{Cint}, maxwid::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint},
+                        irn::Ptr{Cint}, icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint},
+                        ls::Ptr{Cint}, xls::Ptr{Cint}, nlvl::Ref{Cint}, lwidth::Ref{Cint},
+                        nvars::Ref{Cint})::Cvoid
+end
+
+function mc60od(n, nc, lirn, irn, icptr, svar, nsup, new, vars, flag)
+  @ccall libhsl.mc60od_(n::Ref{Cint}, nc::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                        icptr::Ptr{Cint}, svar::Ptr{Cint}, nsup::Ref{Cint}, new::Ptr{Cint},
+                        vars::Ptr{Cint}, flag::Ptr{Cint})::Cvoid
+end
+
+function mc60pd(n, nsup, lirn, irn, icptr, svar, vars, var, flag)
+  @ccall libhsl.mc60pd_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                        icptr::Ptr{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, var::Ptr{Cint},
+                        flag::Ptr{Cint})::Cvoid
+end
+
+function mc60qd(root, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, nvars, degree)
+  @ccall libhsl.mc60qd_(root::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                        icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint}, ls::Ptr{Cint},
+                        xls::Ptr{Cint}, nlvl::Ref{Cint}, nvars::Ref{Cint}, degree::Ptr{Cint})::Cvoid
+end
+
+function mc60a(n, lirn, irn, icptr, icntl, iw, info)
+  @ccall libhsl.mc60a_(n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint},
+                       icntl::Ptr{Cint}, iw::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function mc60b(n, lirn, irn, icptr, nsup, svar, vars, iw)
+  @ccall libhsl.mc60b_(n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint},
+                       nsup::Ref{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
+end
+
+function mc60c(n, nsup, lirn, irn, icptr, vars, jcntl, permsv, weight, pair, info, iw, w)
+  @ccall libhsl.mc60c_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                       icptr::Ptr{Cint}, vars::Ptr{Cint}, jcntl::Ptr{Cint}, permsv::Ptr{Cint},
+                       weight::Ptr{Float32}, pair::Ptr{Cint}, info::Ptr{Cint}, iw::Ptr{Cint},
+                       w::Ptr{Float32})::Cvoid
+end
+
+function mc60d(n, nsup, svar, vars, permsv, perm, possv)
+  @ccall libhsl.mc60d_(n::Ref{Cint}, nsup::Ref{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint},
+                       permsv::Ptr{Cint}, perm::Ptr{Cint}, possv::Ptr{Cint})::Cvoid
+end
+
+function mc60e(n, nsup, lirn, irn, icptr, svar, vars, permsv, perm, iw)
+  @ccall libhsl.mc60e_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                       icptr::Ptr{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint},
+                       perm::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
+end
+
+function mc60f(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl.mc60f_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                       icptr::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint}, iw::Ptr{Cint},
+                       rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc60g(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
+  @ccall libhsl.mc60g_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                       icptr::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint}, iw::Ptr{Cint},
+                       rinfo::Ptr{Float32})::Cvoid
+end
+
+function mc60h(n, nsup, lirn, irn, icptr, vars, mask, ls, xls, list, info)
+  @ccall libhsl.mc60h_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                       icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint}, ls::Ptr{Cint},
+                       xls::Ptr{Cint}, list::Ptr{Cint}, info::Ptr{Cint})::Cvoid
+end
+
+function mc60j(nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars, status, weight, nlist, queue,
+               deg, prior)
+  @ccall libhsl.mc60j_(nsup::Ref{Cint}, lirn::Ref{Cint}, nodes::Ref{Cint}, nstrt::Ref{Cint},
+                       lstnum::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint}, vars::Ptr{Cint},
+                       status::Ptr{Cint}, weight::Ptr{Float32}, nlist::Ptr{Cint}, queue::Ptr{Cint},
+                       deg::Ptr{Cint}, prior::Ptr{Float32})::Cvoid
+end
+
+function mc60l(root, maxwid, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, lwidth, nvars)
+  @ccall libhsl.mc60l_(root::Ref{Cint}, maxwid::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint},
+                       irn::Ptr{Cint}, icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint},
+                       ls::Ptr{Cint}, xls::Ptr{Cint}, nlvl::Ref{Cint}, lwidth::Ref{Cint},
+                       nvars::Ref{Cint})::Cvoid
+end
+
+function mc60o(n, nc, lirn, irn, icptr, svar, nsup, new, vars, flag)
+  @ccall libhsl.mc60o_(n::Ref{Cint}, nc::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                       icptr::Ptr{Cint}, svar::Ptr{Cint}, nsup::Ref{Cint}, new::Ptr{Cint},
+                       vars::Ptr{Cint}, flag::Ptr{Cint})::Cvoid
+end
+
+function mc60p(n, nsup, lirn, irn, icptr, svar, vars, var, flag)
+  @ccall libhsl.mc60p_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                       icptr::Ptr{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, var::Ptr{Cint},
+                       flag::Ptr{Cint})::Cvoid
+end
+
+function mc60q(root, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, nvars)
+  @ccall libhsl.mc60q_(root::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                       icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint}, ls::Ptr{Cint},
+                       xls::Ptr{Cint}, nlvl::Ref{Cint}, nvars::Ref{Cint})::Cvoid
+end
diff --git a/src/Fortran/libhsl/mc61.jl b/src/Fortran/libhsl/mc61.jl
new file mode 100644
index 0000000..609f220
--- /dev/null
+++ b/src/Fortran/libhsl/mc61.jl
@@ -0,0 +1,21 @@
+function mc61id(icntl, cntl)
+  @ccall libhsl.mc61id_(icntl::Ptr{Cint}, cntl::Ptr{Float64})::Cvoid
+end
+
+function mc61ad(job, n, lirn, irn, icptr, perm, liw, iw, w, icntl, cntl, info, rinfo)
+  @ccall libhsl.mc61ad_(job::Ref{Cint}, n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                        icptr::Ptr{Cint}, perm::Ptr{Cint}, liw::Ref{Cint}, iw::Ptr{Cint},
+                        w::Ptr{Float64}, icntl::Ptr{Cint}, cntl::Ptr{Float64}, info::Ptr{Cint},
+                        rinfo::Ptr{Float64})::Cvoid
+end
+
+function mc61i(icntl, cntl)
+  @ccall libhsl.mc61i_(icntl::Ptr{Cint}, cntl::Ptr{Float32})::Cvoid
+end
+
+function mc61a(job, n, lirn, irn, icptr, perm, liw, iw, w, icntl, cntl, info, rinfo)
+  @ccall libhsl.mc61a_(job::Ref{Cint}, n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
+                       icptr::Ptr{Cint}, perm::Ptr{Cint}, liw::Ref{Cint}, iw::Ptr{Cint},
+                       w::Ptr{Float32}, icntl::Ptr{Cint}, cntl::Ptr{Float32}, info::Ptr{Cint},
+                       rinfo::Ptr{Float32})::Cvoid
+end
diff --git a/src/Fortran/mc62.jl b/src/Fortran/libhsl/mc62.jl
similarity index 100%
rename from src/Fortran/mc62.jl
rename to src/Fortran/libhsl/mc62.jl
diff --git a/src/Fortran/mc63.jl b/src/Fortran/libhsl/mc63.jl
similarity index 100%
rename from src/Fortran/mc63.jl
rename to src/Fortran/libhsl/mc63.jl
diff --git a/src/Fortran/libhsl/mc64.jl b/src/Fortran/libhsl/mc64.jl
new file mode 100644
index 0000000..8e69585
--- /dev/null
+++ b/src/Fortran/libhsl/mc64.jl
@@ -0,0 +1,125 @@
+function mc64id(icntl)
+  @ccall libhsl.mc64id_(icntl::Ptr{Cint})::Cvoid
+end
+
+function mc64ad(job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw, dw, icntl, info)
+  @ccall libhsl.mc64ad_(job::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint},
+                        a::Ptr{Float64}, num::Ref{Cint}, cperm::Ptr{Cint}, liw::Ref{Cint},
+                        iw::Ptr{Cint}, ldw::Ref{Cint}, dw::Ptr{Float64}, icntl::Ptr{Cint},
+                        info::Ptr{Cint})::Cvoid
+end
+
+function mc64bd(n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
+  @ccall libhsl.mc64bd_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float64},
+                        iperm::Ptr{Cint}, num::Ref{Cint}, jperm::Ptr{Cint}, pr::Ptr{Cint},
+                        q::Ptr{Cint}, l::Ptr{Cint}, d::Ptr{Float64})::Cvoid
+end
+
+function mc64dd(i, n, q, d, l, iway)
+  @ccall libhsl.mc64dd_(i::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint}, d::Ptr{Float64}, l::Ptr{Cint},
+                        iway::Ref{Cint})::Cvoid
+end
+
+function mc64ed(qlen, n, q, d, l, iway)
+  @ccall libhsl.mc64ed_(qlen::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint}, d::Ptr{Float64}, l::Ptr{Cint},
+                        iway::Ref{Cint})::Cvoid
+end
+
+function mc64fd(pos0, qlen, n, q, d, l, iway)
+  @ccall libhsl.mc64fd_(pos0::Ref{Cint}, qlen::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint},
+                        d::Ptr{Float64}, l::Ptr{Cint}, iway::Ref{Cint})::Cvoid
+end
+
+function mc64rd(n, ne, ip, irn, a)
+  @ccall libhsl.mc64rd_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint},
+                        a::Ptr{Float64})::Cvoid
+end
+
+function mc64sd(n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh, fc, iw, iw4)
+  @ccall libhsl.mc64sd_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float64},
+                        iperm::Ptr{Cint}, numx::Ref{Cint}, w::Ptr{Cint}, len::Ptr{Cint},
+                        lenl::Ptr{Cint}, lenh::Ptr{Cint}, fc::Ptr{Cint}, iw::Ptr{Cint},
+                        iw4::Ptr{Cint})::Cvoid
+end
+
+function mc64qd(ip, lenl, lenh, w, wlen, a, nval, val)
+  @ccall libhsl.mc64qd_(ip::Ptr{Cint}, lenl::Ptr{Cint}, lenh::Ptr{Cint}, w::Ptr{Cint},
+                        wlen::Ref{Cint}, a::Ptr{Float64}, nval::Ref{Cint}, val::Ref{Float64})::Cvoid
+end
+
+function mc64ud(id, mod, n, irn, lirn, ip, lenc, fc, iperm, num, numx, pr, arp, cv, out)
+  @ccall libhsl.mc64ud_(id::Ref{Cint}, mod::Ref{Cint}, n::Ref{Cint}, irn::Ptr{Cint},
+                        lirn::Ref{Cint}, ip::Ptr{Cint}, lenc::Ptr{Cint}, fc::Ptr{Cint},
+                        iperm::Ptr{Cint}, num::Ref{Cint}, numx::Ref{Cint}, pr::Ptr{Cint},
+                        arp::Ptr{Cint}, cv::Ptr{Cint}, out::Ptr{Cint})::Cvoid
+end
+
+function mc64wd(n, ne, ip, irn, a, iperm, num, jperm, out, pr, q, l, u, d)
+  @ccall libhsl.mc64wd_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float64},
+                        iperm::Ptr{Cint}, num::Ref{Cint}, jperm::Ptr{Cint}, out::Ptr{Cint},
+                        pr::Ptr{Cint}, q::Ptr{Cint}, l::Ptr{Cint}, u::Ptr{Float64},
+                        d::Ptr{Float64})::Cvoid
+end
+
+function mc64i(icntl)
+  @ccall libhsl.mc64i_(icntl::Ptr{Cint})::Cvoid
+end
+
+function mc64a(job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw, dw, icntl, info)
+  @ccall libhsl.mc64a_(job::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint},
+                       a::Ptr{Float32}, num::Ref{Cint}, cperm::Ptr{Cint}, liw::Ref{Cint},
+                       iw::Ptr{Cint}, ldw::Ref{Cint}, dw::Ptr{Float32}, icntl::Ptr{Cint},
+                       info::Ptr{Cint})::Cvoid
+end
+
+function mc64b(n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
+  @ccall libhsl.mc64b_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float32},
+                       iperm::Ptr{Cint}, num::Ref{Cint}, jperm::Ptr{Cint}, pr::Ptr{Cint},
+                       q::Ptr{Cint}, l::Ptr{Cint}, d::Ptr{Float32})::Cvoid
+end
+
+function mc64d(i, n, q, d, l, iway)
+  @ccall libhsl.mc64d_(i::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint}, d::Ptr{Float32}, l::Ptr{Cint},
+                       iway::Ref{Cint})::Cvoid
+end
+
+function mc64e(qlen, n, q, d, l, iway)
+  @ccall libhsl.mc64e_(qlen::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint}, d::Ptr{Float32}, l::Ptr{Cint},
+                       iway::Ref{Cint})::Cvoid
+end
+
+function mc64f(pos0, qlen, n, q, d, l, iway)
+  @ccall libhsl.mc64f_(pos0::Ref{Cint}, qlen::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint},
+                       d::Ptr{Float32}, l::Ptr{Cint}, iway::Ref{Cint})::Cvoid
+end
+
+function mc64r(n, ne, ip, irn, a)
+  @ccall libhsl.mc64r_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint},
+                       a::Ptr{Float32})::Cvoid
+end
+
+function mc64s(n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh, fc, iw, iw4)
+  @ccall libhsl.mc64s_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float32},
+                       iperm::Ptr{Cint}, numx::Ref{Cint}, w::Ptr{Cint}, len::Ptr{Cint},
+                       lenl::Ptr{Cint}, lenh::Ptr{Cint}, fc::Ptr{Cint}, iw::Ptr{Cint},
+                       iw4::Ptr{Cint})::Cvoid
+end
+
+function mc64q(ip, lenl, lenh, w, wlen, a, nval, val)
+  @ccall libhsl.mc64q_(ip::Ptr{Cint}, lenl::Ptr{Cint}, lenh::Ptr{Cint}, w::Ptr{Cint},
+                       wlen::Ref{Cint}, a::Ptr{Float32}, nval::Ref{Cint}, val::Ref{Float32})::Cvoid
+end
+
+function mc64u(id, mod, n, irn, lirn, ip, lenc, fc, iperm, num, numx, pr, arp, cv, out)
+  @ccall libhsl.mc64u_(id::Ref{Cint}, mod::Ref{Cint}, n::Ref{Cint}, irn::Ptr{Cint}, lirn::Ref{Cint},
+                       ip::Ptr{Cint}, lenc::Ptr{Cint}, fc::Ptr{Cint}, iperm::Ptr{Cint},
+                       num::Ref{Cint}, numx::Ref{Cint}, pr::Ptr{Cint}, arp::Ptr{Cint},
+                       cv::Ptr{Cint}, out::Ptr{Cint})::Cvoid
+end
+
+function mc64w(n, ne, ip, irn, a, iperm, num, jperm, out, pr, q, l, u, d)
+  @ccall libhsl.mc64w_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float32},
+                       iperm::Ptr{Cint}, num::Ref{Cint}, jperm::Ptr{Cint}, out::Ptr{Cint},
+                       pr::Ptr{Cint}, q::Ptr{Cint}, l::Ptr{Cint}, u::Ptr{Float32},
+                       d::Ptr{Float32})::Cvoid
+end
diff --git a/src/Fortran/mc67.jl b/src/Fortran/libhsl/mc67.jl
similarity index 100%
rename from src/Fortran/mc67.jl
rename to src/Fortran/libhsl/mc67.jl
diff --git a/src/Fortran/libhsl/mc71.jl b/src/Fortran/libhsl/mc71.jl
new file mode 100644
index 0000000..acd92e3
--- /dev/null
+++ b/src/Fortran/libhsl/mc71.jl
@@ -0,0 +1,9 @@
+function mc71ad(n, kase, x, est, w, iw, keep)
+  @ccall libhsl.mc71ad_(n::Ref{Cint}, kase::Ref{Cint}, x::Ptr{Float64}, est::Ref{Float64},
+                        w::Ptr{Float64}, iw::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
+end
+
+function mc71a(n, kase, x, est, w, iw, keep)
+  @ccall libhsl.mc71a_(n::Ref{Cint}, kase::Ref{Cint}, x::Ptr{Float32}, est::Ref{Float32},
+                       w::Ptr{Float32}, iw::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/mc72.jl b/src/Fortran/libhsl/mc72.jl
similarity index 100%
rename from src/Fortran/mc72.jl
rename to src/Fortran/libhsl/mc72.jl
diff --git a/src/Fortran/mc75.jl b/src/Fortran/libhsl/mc75.jl
similarity index 100%
rename from src/Fortran/mc75.jl
rename to src/Fortran/libhsl/mc75.jl
diff --git a/src/Fortran/mc77.jl b/src/Fortran/libhsl/mc77.jl
similarity index 62%
rename from src/Fortran/mc77.jl
rename to src/Fortran/libhsl/mc77.jl
index 674cea7..903fbdf 100644
--- a/src/Fortran/mc77.jl
+++ b/src/Fortran/libhsl/mc77.jl
@@ -117,10 +117,6 @@ function mc77id(icntl, cntl)
   @ccall libhsl.mc77id_(icntl::Ptr{Cint}, cntl::Ptr{Float64})::Cvoid
 end
 
-function mc77id_64(icntl, cntl)
-  @ccall libhsl_subset_64.mc77id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64})::Cvoid
-end
-
 function mc77ad(job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
   @ccall libhsl.mc77ad_(job::Ref{Cint}, m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, jcst::Ptr{Cint},
                         irn::Ptr{Cint}, a::Ptr{Float64}, iw::Ptr{Cint}, liw::Ref{Cint},
@@ -128,14 +124,6 @@ function mc77ad(job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw, icntl, cntl, inf
                         info::Ptr{Cint}, rinfo::Ptr{Float64})::Cvoid
 end
 
-function mc77ad_64(job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.mc77ad_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
-                                     jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float64},
-                                     iw::Ptr{Int64}, liw::Ref{Int64}, dw::Ptr{Float64},
-                                     ldw::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
-                                     info::Ptr{Int64}, rinfo::Ptr{Float64})::Cvoid
-end
-
 function mc77nd(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
                 info)
   @ccall libhsl.mc77nd_(m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, jcst::Ptr{Cint}, irn::Ptr{Cint},
@@ -145,16 +133,6 @@ function mc77nd(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter,
                         info::Ref{Cint})::Cvoid
 end
 
-function mc77nd_64(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
-                   info)
-  @ccall libhsl_subset_64.mc77nd_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
-                                     jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float64},
-                                     d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Int64},
-                                     thresh::Ref{Float64}, err::Ptr{Float64}, maxit::Ref{Int64},
-                                     niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
-                                     dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77od(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
                 info)
   @ccall libhsl.mc77od_(m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, jcst::Ptr{Cint}, irn::Ptr{Cint},
@@ -164,16 +142,6 @@ function mc77od(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter,
                         info::Ref{Cint})::Cvoid
 end
 
-function mc77od_64(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
-                   info)
-  @ccall libhsl_subset_64.mc77od_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
-                                     jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float64},
-                                     d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Int64},
-                                     thresh::Ref{Float64}, err::Ptr{Float64}, maxit::Ref{Int64},
-                                     niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
-                                     dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77pd(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77pd_(n::Ref{Cint}, nnz::Ref{Cint}, jcst::Ptr{Cint}, irn::Ptr{Cint},
                         a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Cint}, thresh::Ref{Float64},
@@ -181,14 +149,6 @@ function mc77pd(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw,
                         dew::Ptr{Float64}, info::Ref{Cint})::Cvoid
 end
 
-function mc77pd_64(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77pd_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
-                                     irn::Ptr{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
-                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
-                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77qd(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77qd_(n::Ref{Cint}, nnz::Ref{Cint}, jcst::Ptr{Cint}, irn::Ptr{Cint},
                         a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Cint}, thresh::Ref{Float64},
@@ -196,14 +156,6 @@ function mc77qd(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw,
                         dew::Ptr{Float64}, info::Ref{Cint})::Cvoid
 end
 
-function mc77qd_64(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77qd_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
-                                     irn::Ptr{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
-                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
-                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77bd(job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
   @ccall libhsl.mc77bd_(job::Ref{Cint}, m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, irn::Ptr{Cint},
                         jcn::Ptr{Cint}, a::Ptr{Float64}, iw::Ptr{Cint}, liw::Ref{Cint},
@@ -211,14 +163,6 @@ function mc77bd(job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw, icntl, cntl, info
                         info::Ptr{Cint}, rinfo::Ptr{Float64})::Cvoid
 end
 
-function mc77bd_64(job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.mc77bd_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
-                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, a::Ptr{Float64},
-                                     iw::Ptr{Int64}, liw::Ref{Int64}, dw::Ptr{Float64},
-                                     ldw::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
-                                     info::Ptr{Int64}, rinfo::Ptr{Float64})::Cvoid
-end
-
 function mc77rd(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
                 info)
   @ccall libhsl.mc77rd_(m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, jcn::Ptr{Cint}, irn::Ptr{Cint},
@@ -228,16 +172,6 @@ function mc77rd(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter,
                         info::Ref{Cint})::Cvoid
 end
 
-function mc77rd_64(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
-                   info)
-  @ccall libhsl_subset_64.mc77rd_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
-                                     irn::Ptr{Int64}, a::Ptr{Float64}, d::Ptr{Float64},
-                                     e::Ptr{Float64}, check::Ref{Int64}, thresh::Ref{Float64},
-                                     err::Ptr{Float64}, maxit::Ref{Int64}, niter::Ref{Int64},
-                                     iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float64},
-                                     ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77sd(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
                 info)
   @ccall libhsl.mc77sd_(m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, jcn::Ptr{Cint}, irn::Ptr{Cint},
@@ -247,16 +181,6 @@ function mc77sd(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter,
                         info::Ref{Cint})::Cvoid
 end
 
-function mc77sd_64(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
-                   info)
-  @ccall libhsl_subset_64.mc77sd_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
-                                     irn::Ptr{Int64}, a::Ptr{Float64}, d::Ptr{Float64},
-                                     e::Ptr{Float64}, check::Ref{Int64}, thresh::Ref{Float64},
-                                     err::Ptr{Float64}, maxit::Ref{Int64}, niter::Ref{Int64},
-                                     iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float64},
-                                     ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77td(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77td_(n::Ref{Cint}, nnz::Ref{Cint}, jcn::Ptr{Cint}, irn::Ptr{Cint},
                         a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Cint}, thresh::Ref{Float64},
@@ -264,14 +188,6 @@ function mc77td(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw,
                         dew::Ptr{Float64}, info::Ref{Cint})::Cvoid
 end
 
-function mc77td_64(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77td_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
-                                     irn::Ptr{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
-                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
-                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77ud(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77ud_(n::Ref{Cint}, nnz::Ref{Cint}, jcn::Ptr{Cint}, irn::Ptr{Cint},
                         a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Cint}, thresh::Ref{Float64},
@@ -279,14 +195,6 @@ function mc77ud(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw,
                         dew::Ptr{Float64}, info::Ref{Cint})::Cvoid
 end
 
-function mc77ud_64(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77ud_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
-                                     irn::Ptr{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
-                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
-                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77cd(job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
   @ccall libhsl.mc77cd_(job::Ref{Cint}, m::Ref{Cint}, n::Ref{Cint}, a::Ptr{Float64}, lda::Ref{Cint},
                         iw::Ptr{Cint}, liw::Ref{Cint}, dw::Ptr{Float64}, ldw::Ref{Cint},
@@ -294,14 +202,6 @@ function mc77cd(job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
                         rinfo::Ptr{Float64})::Cvoid
 end
 
-function mc77cd_64(job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.mc77cd_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float64},
-                                     lda::Ref{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
-                                     dw::Ptr{Float64}, ldw::Ref{Int64}, icntl::Ptr{Int64},
-                                     cntl::Ptr{Float64}, info::Ptr{Int64},
-                                     rinfo::Ptr{Float64})::Cvoid
-end
-
 function mc77jd(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew, info)
   @ccall libhsl.mc77jd_(m::Ref{Cint}, n::Ref{Cint}, a::Ptr{Float64}, lda::Ref{Cint},
                         d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Cint}, thresh::Ref{Float64},
@@ -309,14 +209,6 @@ function mc77jd(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw
                         jw::Ptr{Cint}, dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Cint})::Cvoid
 end
 
-function mc77jd_64(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew, info)
-  @ccall libhsl_subset_64.mc77jd_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float64}, lda::Ref{Int64},
-                                     d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Int64},
-                                     thresh::Ref{Float64}, err::Ptr{Float64}, maxit::Ref{Int64},
-                                     niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
-                                     dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77kd(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew, info)
   @ccall libhsl.mc77kd_(m::Ref{Cint}, n::Ref{Cint}, a::Ptr{Float64}, lda::Ref{Cint},
                         d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Cint}, thresh::Ref{Float64},
@@ -324,48 +216,22 @@ function mc77kd(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw
                         jw::Ptr{Cint}, dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Cint})::Cvoid
 end
 
-function mc77kd_64(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew, info)
-  @ccall libhsl_subset_64.mc77kd_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float64}, lda::Ref{Int64},
-                                     d::Ptr{Float64}, e::Ptr{Float64}, check::Ref{Int64},
-                                     thresh::Ref{Float64}, err::Ptr{Float64}, maxit::Ref{Int64},
-                                     niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
-                                     dw::Ptr{Float64}, ew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77ld(n, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77ld_(n::Ref{Cint}, a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Cint},
                         thresh::Ref{Float64}, err::Ref{Float64}, maxit::Ref{Cint}, niter::Ref{Cint},
                         ijw::Ptr{Cint}, dew::Ptr{Float64}, info::Ref{Cint})::Cvoid
 end
 
-function mc77ld_64(n, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77ld_64_(n::Ref{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
-                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
-                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77md(n, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77md_(n::Ref{Cint}, a::Ptr{Float64}, de::Ptr{Float64}, check::Ref{Cint},
                         thresh::Ref{Float64}, err::Ref{Float64}, maxit::Ref{Cint}, niter::Ref{Cint},
                         ijw::Ptr{Cint}, dew::Ptr{Float64}, info::Ref{Cint})::Cvoid
 end
 
-function mc77md_64(n, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77md_64_(n::Ref{Int64}, a::Ptr{Float64}, de::Ptr{Float64},
-                                     check::Ref{Int64}, thresh::Ref{Float64}, err::Ref{Float64},
-                                     maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                     dew::Ptr{Float64}, info::Ref{Int64})::Cvoid
-end
-
 function mc77i(icntl, cntl)
   @ccall libhsl.mc77i_(icntl::Ptr{Cint}, cntl::Ptr{Float32})::Cvoid
 end
 
-function mc77i_64(icntl, cntl)
-  @ccall libhsl_subset_64.mc77i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32})::Cvoid
-end
-
 function mc77a(job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
   @ccall libhsl.mc77a_(job::Ref{Cint}, m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, jcst::Ptr{Cint},
                        irn::Ptr{Cint}, a::Ptr{Float32}, iw::Ptr{Cint}, liw::Ref{Cint},
@@ -373,14 +239,6 @@ function mc77a(job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw, icntl, cntl, info
                        info::Ptr{Cint}, rinfo::Ptr{Float32})::Cvoid
 end
 
-function mc77a_64(job, m, n, nnz, jcst, irn, a, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.mc77a_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
-                                    jcst::Ptr{Int64}, irn::Ptr{Int64}, a::Ptr{Float32},
-                                    iw::Ptr{Int64}, liw::Ref{Int64}, dw::Ptr{Float32},
-                                    ldw::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
-                                    info::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
-end
-
 function mc77n(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
                info)
   @ccall libhsl.mc77n_(m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, jcst::Ptr{Cint}, irn::Ptr{Cint},
@@ -390,16 +248,6 @@ function mc77n(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter,
                        info::Ref{Cint})::Cvoid
 end
 
-function mc77n_64(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
-                  info)
-  @ccall libhsl_subset_64.mc77n_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
-                                    irn::Ptr{Int64}, a::Ptr{Float32}, d::Ptr{Float32},
-                                    e::Ptr{Float32}, check::Ref{Int64}, thresh::Ref{Float32},
-                                    err::Ptr{Float32}, maxit::Ref{Int64}, niter::Ref{Int64},
-                                    iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float32},
-                                    ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77o(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
                info)
   @ccall libhsl.mc77o_(m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, jcst::Ptr{Cint}, irn::Ptr{Cint},
@@ -409,16 +257,6 @@ function mc77o(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter,
                        info::Ref{Cint})::Cvoid
 end
 
-function mc77o_64(m, n, nnz, jcst, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
-                  info)
-  @ccall libhsl_subset_64.mc77o_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
-                                    irn::Ptr{Int64}, a::Ptr{Float32}, d::Ptr{Float32},
-                                    e::Ptr{Float32}, check::Ref{Int64}, thresh::Ref{Float32},
-                                    err::Ptr{Float32}, maxit::Ref{Int64}, niter::Ref{Int64},
-                                    iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float32},
-                                    ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77p(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77p_(n::Ref{Cint}, nnz::Ref{Cint}, jcst::Ptr{Cint}, irn::Ptr{Cint},
                        a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Cint}, thresh::Ref{Float32},
@@ -426,14 +264,6 @@ function mc77p(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw,
                        dew::Ptr{Float32}, info::Ref{Cint})::Cvoid
 end
 
-function mc77p_64(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77p_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
-                                    irn::Ptr{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
-                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
-                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77q(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77q_(n::Ref{Cint}, nnz::Ref{Cint}, jcst::Ptr{Cint}, irn::Ptr{Cint},
                        a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Cint}, thresh::Ref{Float32},
@@ -441,14 +271,6 @@ function mc77q(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw,
                        dew::Ptr{Float32}, info::Ref{Cint})::Cvoid
 end
 
-function mc77q_64(n, nnz, jcst, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77q_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcst::Ptr{Int64},
-                                    irn::Ptr{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
-                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
-                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77b(job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
   @ccall libhsl.mc77b_(job::Ref{Cint}, m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, irn::Ptr{Cint},
                        jcn::Ptr{Cint}, a::Ptr{Float32}, iw::Ptr{Cint}, liw::Ref{Cint},
@@ -456,14 +278,6 @@ function mc77b(job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw, icntl, cntl, info,
                        info::Ptr{Cint}, rinfo::Ptr{Float32})::Cvoid
 end
 
-function mc77b_64(job, m, n, nnz, irn, jcn, a, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.mc77b_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64},
-                                    irn::Ptr{Int64}, jcn::Ptr{Int64}, a::Ptr{Float32},
-                                    iw::Ptr{Int64}, liw::Ref{Int64}, dw::Ptr{Float32},
-                                    ldw::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
-                                    info::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
-end
-
 function mc77r(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew, info)
   @ccall libhsl.mc77r_(m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, jcn::Ptr{Cint}, irn::Ptr{Cint},
                        a::Ptr{Float32}, d::Ptr{Float32}, e::Ptr{Float32}, check::Ref{Cint},
@@ -472,16 +286,6 @@ function mc77r(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter, i
                        info::Ref{Cint})::Cvoid
 end
 
-function mc77r_64(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
-                  info)
-  @ccall libhsl_subset_64.mc77r_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
-                                    irn::Ptr{Int64}, a::Ptr{Float32}, d::Ptr{Float32},
-                                    e::Ptr{Float32}, check::Ref{Int64}, thresh::Ref{Float32},
-                                    err::Ptr{Float32}, maxit::Ref{Int64}, niter::Ref{Int64},
-                                    iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float32},
-                                    ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77s(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew, info)
   @ccall libhsl.mc77s_(m::Ref{Cint}, n::Ref{Cint}, nnz::Ref{Cint}, jcn::Ptr{Cint}, irn::Ptr{Cint},
                        a::Ptr{Float32}, d::Ptr{Float32}, e::Ptr{Float32}, check::Ref{Cint},
@@ -490,16 +294,6 @@ function mc77s(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter, i
                        info::Ref{Cint})::Cvoid
 end
 
-function mc77s_64(m, n, nnz, jcn, irn, a, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew,
-                  info)
-  @ccall libhsl_subset_64.mc77s_64_(m::Ref{Int64}, n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
-                                    irn::Ptr{Int64}, a::Ptr{Float32}, d::Ptr{Float32},
-                                    e::Ptr{Float32}, check::Ref{Int64}, thresh::Ref{Float32},
-                                    err::Ptr{Float32}, maxit::Ref{Int64}, niter::Ref{Int64},
-                                    iw::Ptr{Int64}, jw::Ptr{Int64}, dw::Ptr{Float32},
-                                    ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77t(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77t_(n::Ref{Cint}, nnz::Ref{Cint}, jcn::Ptr{Cint}, irn::Ptr{Cint},
                        a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Cint}, thresh::Ref{Float32},
@@ -507,14 +301,6 @@ function mc77t(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw, d
                        dew::Ptr{Float32}, info::Ref{Cint})::Cvoid
 end
 
-function mc77t_64(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77t_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
-                                    irn::Ptr{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
-                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
-                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77u(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77u_(n::Ref{Cint}, nnz::Ref{Cint}, jcn::Ptr{Cint}, irn::Ptr{Cint},
                        a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Cint}, thresh::Ref{Float32},
@@ -522,14 +308,6 @@ function mc77u(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw, d
                        dew::Ptr{Float32}, info::Ref{Cint})::Cvoid
 end
 
-function mc77u_64(n, nnz, jcn, irn, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77u_64_(n::Ref{Int64}, nnz::Ref{Int64}, jcn::Ptr{Int64},
-                                    irn::Ptr{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
-                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
-                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77c(job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
   @ccall libhsl.mc77c_(job::Ref{Cint}, m::Ref{Cint}, n::Ref{Cint}, a::Ptr{Float32}, lda::Ref{Cint},
                        iw::Ptr{Cint}, liw::Ref{Cint}, dw::Ptr{Float32}, ldw::Ref{Cint},
@@ -537,14 +315,6 @@ function mc77c(job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
                        rinfo::Ptr{Float32})::Cvoid
 end
 
-function mc77c_64(job, m, n, a, lda, iw, liw, dw, ldw, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.mc77c_64_(job::Ref{Int64}, m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float32},
-                                    lda::Ref{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
-                                    dw::Ptr{Float32}, ldw::Ref{Int64}, icntl::Ptr{Int64},
-                                    cntl::Ptr{Float32}, info::Ptr{Int64},
-                                    rinfo::Ptr{Float32})::Cvoid
-end
-
 function mc77j(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew, info)
   @ccall libhsl.mc77j_(m::Ref{Cint}, n::Ref{Cint}, a::Ptr{Float32}, lda::Ref{Cint}, d::Ptr{Float32},
                        e::Ptr{Float32}, check::Ref{Cint}, thresh::Ref{Float32}, err::Ptr{Float32},
@@ -552,14 +322,6 @@ function mc77j(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw,
                        dw::Ptr{Float32}, ew::Ptr{Float32}, info::Ref{Cint})::Cvoid
 end
 
-function mc77j_64(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew, info)
-  @ccall libhsl_subset_64.mc77j_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float32}, lda::Ref{Int64},
-                                    d::Ptr{Float32}, e::Ptr{Float32}, check::Ref{Int64},
-                                    thresh::Ref{Float32}, err::Ptr{Float32}, maxit::Ref{Int64},
-                                    niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
-                                    dw::Ptr{Float32}, ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77k(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew, info)
   @ccall libhsl.mc77k_(m::Ref{Cint}, n::Ref{Cint}, a::Ptr{Float32}, lda::Ref{Cint}, d::Ptr{Float32},
                        e::Ptr{Float32}, check::Ref{Cint}, thresh::Ref{Float32}, err::Ptr{Float32},
@@ -567,40 +329,18 @@ function mc77k(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw,
                        dw::Ptr{Float32}, ew::Ptr{Float32}, info::Ref{Cint})::Cvoid
 end
 
-function mc77k_64(m, n, a, lda, d, e, check, thresh, err, maxit, niter, iw, jw, dw, ew, info)
-  @ccall libhsl_subset_64.mc77k_64_(m::Ref{Int64}, n::Ref{Int64}, a::Ptr{Float32}, lda::Ref{Int64},
-                                    d::Ptr{Float32}, e::Ptr{Float32}, check::Ref{Int64},
-                                    thresh::Ref{Float32}, err::Ptr{Float32}, maxit::Ref{Int64},
-                                    niter::Ref{Int64}, iw::Ptr{Int64}, jw::Ptr{Int64},
-                                    dw::Ptr{Float32}, ew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77l(n, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77l_(n::Ref{Cint}, a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Cint},
                        thresh::Ref{Float32}, err::Ref{Float32}, maxit::Ref{Cint}, niter::Ref{Cint},
                        ijw::Ptr{Cint}, dew::Ptr{Float32}, info::Ref{Cint})::Cvoid
 end
 
-function mc77l_64(n, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77l_64_(n::Ref{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
-                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
-                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77m(n, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
   @ccall libhsl.mc77m_(n::Ref{Cint}, a::Ptr{Float32}, de::Ptr{Float32}, check::Ref{Cint},
                        thresh::Ref{Float32}, err::Ref{Float32}, maxit::Ref{Cint}, niter::Ref{Cint},
                        ijw::Ptr{Cint}, dew::Ptr{Float32}, info::Ref{Cint})::Cvoid
 end
 
-function mc77m_64(n, a, de, check, thresh, err, maxit, niter, ijw, dew, info)
-  @ccall libhsl_subset_64.mc77m_64_(n::Ref{Int64}, a::Ptr{Float32}, de::Ptr{Float32},
-                                    check::Ref{Int64}, thresh::Ref{Float32}, err::Ref{Float32},
-                                    maxit::Ref{Int64}, niter::Ref{Int64}, ijw::Ptr{Int64},
-                                    dew::Ptr{Float32}, info::Ref{Int64})::Cvoid
-end
-
 function mc77iz(icntl, cntl)
   @ccall libhsl.mc77iz_(icntl::Ptr{Cint}, cntl::Ptr{Float64})::Cvoid
 end
diff --git a/src/Fortran/me20.jl b/src/Fortran/libhsl/me20.jl
similarity index 100%
rename from src/Fortran/me20.jl
rename to src/Fortran/libhsl/me20.jl
diff --git a/src/Fortran/me22.jl b/src/Fortran/libhsl/me22.jl
similarity index 100%
rename from src/Fortran/me22.jl
rename to src/Fortran/libhsl/me22.jl
diff --git a/src/Fortran/me38.jl b/src/Fortran/libhsl/me38.jl
similarity index 100%
rename from src/Fortran/me38.jl
rename to src/Fortran/libhsl/me38.jl
diff --git a/src/Fortran/me42.jl b/src/Fortran/libhsl/me42.jl
similarity index 100%
rename from src/Fortran/me42.jl
rename to src/Fortran/libhsl/me42.jl
diff --git a/src/Fortran/me43.jl b/src/Fortran/libhsl/me43.jl
similarity index 100%
rename from src/Fortran/me43.jl
rename to src/Fortran/libhsl/me43.jl
diff --git a/src/Fortran/me48.jl b/src/Fortran/libhsl/me48.jl
similarity index 100%
rename from src/Fortran/me48.jl
rename to src/Fortran/libhsl/me48.jl
diff --git a/src/Fortran/me50.jl b/src/Fortran/libhsl/me50.jl
similarity index 100%
rename from src/Fortran/me50.jl
rename to src/Fortran/libhsl/me50.jl
diff --git a/src/Fortran/me57.jl b/src/Fortran/libhsl/me57.jl
similarity index 100%
rename from src/Fortran/me57.jl
rename to src/Fortran/libhsl/me57.jl
diff --git a/src/Fortran/me62.jl b/src/Fortran/libhsl/me62.jl
similarity index 100%
rename from src/Fortran/me62.jl
rename to src/Fortran/libhsl/me62.jl
diff --git a/src/Fortran/mf29.jl b/src/Fortran/libhsl/mf29.jl
similarity index 100%
rename from src/Fortran/mf29.jl
rename to src/Fortran/libhsl/mf29.jl
diff --git a/src/Fortran/mf30.jl b/src/Fortran/libhsl/mf30.jl
similarity index 100%
rename from src/Fortran/mf30.jl
rename to src/Fortran/libhsl/mf30.jl
diff --git a/src/Fortran/mf36.jl b/src/Fortran/libhsl/mf36.jl
similarity index 100%
rename from src/Fortran/mf36.jl
rename to src/Fortran/libhsl/mf36.jl
diff --git a/src/Fortran/mf64.jl b/src/Fortran/libhsl/mf64.jl
similarity index 100%
rename from src/Fortran/mf64.jl
rename to src/Fortran/libhsl/mf64.jl
diff --git a/src/Fortran/mf71.jl b/src/Fortran/libhsl/mf71.jl
similarity index 100%
rename from src/Fortran/mf71.jl
rename to src/Fortran/libhsl/mf71.jl
diff --git a/src/Fortran/mi11.jl b/src/Fortran/libhsl/mi11.jl
similarity index 100%
rename from src/Fortran/mi11.jl
rename to src/Fortran/libhsl/mi11.jl
diff --git a/src/Fortran/mi12.jl b/src/Fortran/libhsl/mi12.jl
similarity index 100%
rename from src/Fortran/mi12.jl
rename to src/Fortran/libhsl/mi12.jl
diff --git a/src/Fortran/mi15.jl b/src/Fortran/libhsl/mi15.jl
similarity index 100%
rename from src/Fortran/mi15.jl
rename to src/Fortran/libhsl/mi15.jl
diff --git a/src/Fortran/libhsl/mi21.jl b/src/Fortran/libhsl/mi21.jl
new file mode 100644
index 0000000..64c0221
--- /dev/null
+++ b/src/Fortran/libhsl/mi21.jl
@@ -0,0 +1,23 @@
+function mi21id(icntl, cntl, isave, rsave)
+  @ccall libhsl.mi21id_(icntl::Ptr{Cint}, cntl::Ptr{Float64}, isave::Ptr{Cint},
+                        rsave::Ptr{Float64})::Cvoid
+end
+
+function mi21ad(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
+  @ccall libhsl.mi21ad_(iact::Ref{Cint}, n::Ref{Cint}, w::Ptr{Float64}, ldw::Ref{Cint},
+                        locy::Ref{Cint}, locz::Ref{Cint}, resid::Ref{Float64}, icntl::Ptr{Cint},
+                        cntl::Ptr{Float64}, info::Ptr{Cint}, isave::Ptr{Cint},
+                        rsave::Ptr{Float64})::Cvoid
+end
+
+function mi21i(icntl, cntl, isave, rsave)
+  @ccall libhsl.mi21i_(icntl::Ptr{Cint}, cntl::Ptr{Float32}, isave::Ptr{Cint},
+                       rsave::Ptr{Float32})::Cvoid
+end
+
+function mi21a(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
+  @ccall libhsl.mi21a_(iact::Ref{Cint}, n::Ref{Cint}, w::Ptr{Float32}, ldw::Ref{Cint},
+                       locy::Ref{Cint}, locz::Ref{Cint}, resid::Ref{Float32}, icntl::Ptr{Cint},
+                       cntl::Ptr{Float32}, info::Ptr{Cint}, isave::Ptr{Cint},
+                       rsave::Ptr{Float32})::Cvoid
+end
diff --git a/src/Fortran/mi23.jl b/src/Fortran/libhsl/mi23.jl
similarity index 100%
rename from src/Fortran/mi23.jl
rename to src/Fortran/libhsl/mi23.jl
diff --git a/src/Fortran/libhsl/mi24.jl b/src/Fortran/libhsl/mi24.jl
new file mode 100644
index 0000000..c58ad59
--- /dev/null
+++ b/src/Fortran/libhsl/mi24.jl
@@ -0,0 +1,26 @@
+function mi24id(icntl, cntl, isave, rsave, lsave)
+  @ccall libhsl.mi24id_(icntl::Ptr{Cint}, cntl::Ptr{Float64}, isave::Ptr{Cint}, rsave::Ptr{Float64},
+                        lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24ad(iact, n, m, w, ldw, locy, locz, h, ldh, resid, icntl, cntl, info, isave, rsave,
+                lsave)
+  @ccall libhsl.mi24ad_(iact::Ref{Cint}, n::Ref{Cint}, m::Ref{Cint}, w::Ptr{Float64},
+                        ldw::Ref{Cint}, locy::Ref{Cint}, locz::Ref{Cint}, h::Ptr{Float64},
+                        ldh::Ref{Cint}, resid::Ref{Float64}, icntl::Ptr{Cint}, cntl::Ptr{Float64},
+                        info::Ptr{Cint}, isave::Ptr{Cint}, rsave::Ptr{Float64},
+                        lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24i(icntl, cntl, isave, rsave, lsave)
+  @ccall libhsl.mi24i_(icntl::Ptr{Cint}, cntl::Ptr{Float32}, isave::Ptr{Cint}, rsave::Ptr{Float32},
+                       lsave::Ptr{Cint})::Cvoid
+end
+
+function mi24a(iact, n, m, w, ldw, locy, locz, h, ldh, resid, icntl, cntl, info, isave, rsave,
+               lsave)
+  @ccall libhsl.mi24a_(iact::Ref{Cint}, n::Ref{Cint}, m::Ref{Cint}, w::Ptr{Float32}, ldw::Ref{Cint},
+                       locy::Ref{Cint}, locz::Ref{Cint}, h::Ptr{Float32}, ldh::Ref{Cint},
+                       resid::Ref{Float32}, icntl::Ptr{Cint}, cntl::Ptr{Float32}, info::Ptr{Cint},
+                       isave::Ptr{Cint}, rsave::Ptr{Float32}, lsave::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/mi25.jl b/src/Fortran/libhsl/mi25.jl
similarity index 100%
rename from src/Fortran/mi25.jl
rename to src/Fortran/libhsl/mi25.jl
diff --git a/src/Fortran/libhsl/mi26.jl b/src/Fortran/libhsl/mi26.jl
new file mode 100644
index 0000000..82855bc
--- /dev/null
+++ b/src/Fortran/libhsl/mi26.jl
@@ -0,0 +1,23 @@
+function mi26id(icntl, cntl, isave, rsave)
+  @ccall libhsl.mi26id_(icntl::Ptr{Cint}, cntl::Ptr{Float64}, isave::Ptr{Cint},
+                        rsave::Ptr{Float64})::Cvoid
+end
+
+function mi26ad(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
+  @ccall libhsl.mi26ad_(iact::Ref{Cint}, n::Ref{Cint}, w::Ptr{Float64}, ldw::Ref{Cint},
+                        locy::Ref{Cint}, locz::Ref{Cint}, resid::Ref{Float64}, icntl::Ptr{Cint},
+                        cntl::Ptr{Float64}, info::Ptr{Cint}, isave::Ptr{Cint},
+                        rsave::Ptr{Float64})::Cvoid
+end
+
+function mi26i(icntl, cntl, isave, rsave)
+  @ccall libhsl.mi26i_(icntl::Ptr{Cint}, cntl::Ptr{Float32}, isave::Ptr{Cint},
+                       rsave::Ptr{Float32})::Cvoid
+end
+
+function mi26a(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
+  @ccall libhsl.mi26a_(iact::Ref{Cint}, n::Ref{Cint}, w::Ptr{Float32}, ldw::Ref{Cint},
+                       locy::Ref{Cint}, locz::Ref{Cint}, resid::Ref{Float32}, icntl::Ptr{Cint},
+                       cntl::Ptr{Float32}, info::Ptr{Cint}, isave::Ptr{Cint},
+                       rsave::Ptr{Float32})::Cvoid
+end
diff --git a/src/Fortran/ns23.jl b/src/Fortran/libhsl/ns23.jl
similarity index 100%
rename from src/Fortran/ns23.jl
rename to src/Fortran/libhsl/ns23.jl
diff --git a/src/Fortran/pa16.jl b/src/Fortran/libhsl/pa16.jl
similarity index 100%
rename from src/Fortran/pa16.jl
rename to src/Fortran/libhsl/pa16.jl
diff --git a/src/Fortran/pa17.jl b/src/Fortran/libhsl/pa17.jl
similarity index 100%
rename from src/Fortran/pa17.jl
rename to src/Fortran/libhsl/pa17.jl
diff --git a/src/Fortran/td22.jl b/src/Fortran/libhsl/td22.jl
similarity index 100%
rename from src/Fortran/td22.jl
rename to src/Fortran/libhsl/td22.jl
diff --git a/src/Fortran/libhsl/ym01.jl b/src/Fortran/libhsl/ym01.jl
new file mode 100644
index 0000000..2212a77
--- /dev/null
+++ b/src/Fortran/libhsl/ym01.jl
@@ -0,0 +1,19 @@
+function ym01ad(m, n, nzin, nzout, ibw, itype, nonsin, irn, a, jcolst, iw)
+  @ccall libhsl.ym01ad_(m::Ref{Cint}, n::Ref{Cint}, nzin::Ref{Cint}, nzout::Ref{Cint},
+                        ibw::Ref{Cint}, itype::Ref{Cint}, nonsin::Ref{Cint}, irn::Ptr{Cint},
+                        a::Ptr{Float64}, jcolst::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
+end
+
+function ym01bd(n, m, perm, invprm)
+  @ccall libhsl.ym01bd_(n::Ref{Cint}, m::Ref{Cint}, perm::Ptr{Cint}, invprm::Ptr{Cint})::Cvoid
+end
+
+function ym01a(m, n, nzin, nzout, ibw, itype, nonsin, irn, a, jcolst, iw)
+  @ccall libhsl.ym01a_(m::Ref{Cint}, n::Ref{Cint}, nzin::Ref{Cint}, nzout::Ref{Cint},
+                       ibw::Ref{Cint}, itype::Ref{Cint}, nonsin::Ref{Cint}, irn::Ptr{Cint},
+                       a::Ptr{Float32}, jcolst::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
+end
+
+function ym01b(n, m, perm, invprm)
+  @ccall libhsl.ym01b_(n::Ref{Cint}, m::Ref{Cint}, perm::Ptr{Cint}, invprm::Ptr{Cint})::Cvoid
+end
diff --git a/src/Fortran/ym11.jl b/src/Fortran/libhsl/ym11.jl
similarity index 67%
rename from src/Fortran/ym11.jl
rename to src/Fortran/libhsl/ym11.jl
index ab2c9f7..7f5fe4a 100644
--- a/src/Fortran/ym11.jl
+++ b/src/Fortran/libhsl/ym11.jl
@@ -17,33 +17,17 @@ function ym11id(icntl, iseed)
   @ccall libhsl.ym11id_(icntl::Ptr{Cint}, iseed::Ref{Cint})::Cvoid
 end
 
-function ym11id_64(icntl, iseed)
-  @ccall libhsl_subset_64.ym11id_64_(icntl::Ptr{Int64}, iseed::Ref{Int64})::Cvoid
-end
-
 function ym11ad(m, n, nzin, nzout, irn, a, jcolst, iw, icntl, key, iseed)
   @ccall libhsl.ym11ad_(m::Ref{Cint}, n::Ref{Cint}, nzin::Ref{Cint}, nzout::Ref{Cint},
                         irn::Ptr{Cint}, a::Ptr{Float64}, jcolst::Ptr{Cint}, iw::Ptr{Cint},
                         icntl::Ptr{Cint}, key::Ptr{UInt8}, iseed::Ref{Cint}, 8::Csize_t)::Cvoid
 end
 
-function ym11ad_64(m, n, nzin, nzout, irn, a, jcolst, iw, icntl, key, iseed)
-  @ccall libhsl_subset_64.ym11ad_64_(m::Ref{Int64}, n::Ref{Int64}, nzin::Ref{Int64},
-                                     nzout::Ref{Int64}, irn::Ptr{Int64}, a::Ptr{Float64},
-                                     jcolst::Ptr{Int64}, iw::Ptr{Int64}, icntl::Ptr{Int64},
-                                     key::Ptr{UInt8}, iseed::Ref{Int64}, 8::Csize_t)::Cvoid
-end
-
 function ym11bd(n, m, perm, invprm, iseed)
   @ccall libhsl.ym11bd_(n::Ref{Cint}, m::Ref{Cint}, perm::Ptr{Cint}, invprm::Ptr{Cint},
                         iseed::Ref{Cint})::Cvoid
 end
 
-function ym11bd_64(n, m, perm, invprm, iseed)
-  @ccall libhsl_subset_64.ym11bd_64_(n::Ref{Int64}, m::Ref{Int64}, perm::Ptr{Int64},
-                                     invprm::Ptr{Int64}, iseed::Ref{Int64})::Cvoid
-end
-
 function ym11ii(icntl, iseed)
   @ccall libhsl.ym11ii_(icntl::Ptr{Cint}, iseed::Ref{Cint})::Cvoid
 end
@@ -63,33 +47,17 @@ function ym11i(icntl, iseed)
   @ccall libhsl.ym11i_(icntl::Ptr{Cint}, iseed::Ref{Cint})::Cvoid
 end
 
-function ym11i_64(icntl, iseed)
-  @ccall libhsl_subset_64.ym11i_64_(icntl::Ptr{Int64}, iseed::Ref{Int64})::Cvoid
-end
-
 function ym11a(m, n, nzin, nzout, irn, a, jcolst, iw, icntl, key, iseed)
   @ccall libhsl.ym11a_(m::Ref{Cint}, n::Ref{Cint}, nzin::Ref{Cint}, nzout::Ref{Cint},
                        irn::Ptr{Cint}, a::Ptr{Float32}, jcolst::Ptr{Cint}, iw::Ptr{Cint},
                        icntl::Ptr{Cint}, key::Ptr{UInt8}, iseed::Ref{Cint}, 8::Csize_t)::Cvoid
 end
 
-function ym11a_64(m, n, nzin, nzout, irn, a, jcolst, iw, icntl, key, iseed)
-  @ccall libhsl_subset_64.ym11a_64_(m::Ref{Int64}, n::Ref{Int64}, nzin::Ref{Int64},
-                                    nzout::Ref{Int64}, irn::Ptr{Int64}, a::Ptr{Float32},
-                                    jcolst::Ptr{Int64}, iw::Ptr{Int64}, icntl::Ptr{Int64},
-                                    key::Ptr{UInt8}, iseed::Ref{Int64}, 8::Csize_t)::Cvoid
-end
-
 function ym11b(n, m, perm, invprm, iseed)
   @ccall libhsl.ym11b_(n::Ref{Cint}, m::Ref{Cint}, perm::Ptr{Cint}, invprm::Ptr{Cint},
                        iseed::Ref{Cint})::Cvoid
 end
 
-function ym11b_64(n, m, perm, invprm, iseed)
-  @ccall libhsl_subset_64.ym11b_64_(n::Ref{Int64}, m::Ref{Int64}, perm::Ptr{Int64},
-                                    invprm::Ptr{Int64}, iseed::Ref{Int64})::Cvoid
-end
-
 function ym11iz(icntl, iseed)
   @ccall libhsl.ym11iz_(icntl::Ptr{Cint}, iseed::Ref{Cint})::Cvoid
 end
diff --git a/src/Fortran/ma27.jl b/src/Fortran/ma27.jl
deleted file mode 100644
index 9665280..0000000
--- a/src/Fortran/ma27.jl
+++ /dev/null
@@ -1,414 +0,0 @@
-function ma27id(icntl, cntl)
-  @ccall libhsl.ma27id_(icntl::Ptr{Cint}, cntl::Ptr{Float64})::Cvoid
-end
-
-function ma27id_64(icntl, cntl)
-  @ccall libhsl_subset_64.ma27id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64})::Cvoid
-end
-
-function ma27ad(n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps, iflag, icntl, cntl, info, ops)
-  @ccall libhsl.ma27ad_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
-                        liw::Ref{Cint}, ikeep::Ptr{Cint}, iw1::Ptr{Cint}, nsteps::Ref{Cint},
-                        iflag::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float64}, info::Ptr{Cint},
-                        ops::Ref{Float64})::Cvoid
-end
-
-function ma27ad_64(n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps, iflag, icntl, cntl, info, ops)
-  @ccall libhsl_subset_64.ma27ad_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
-                                     icn::Ptr{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
-                                     ikeep::Ptr{Int64}, iw1::Ptr{Int64}, nsteps::Ref{Int64},
-                                     iflag::Ref{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
-                                     info::Ptr{Int64}, ops::Ref{Float64})::Cvoid
-end
-
-function ma27bd(n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps, maxfrt, iw1, icntl, cntl, info)
-  @ccall libhsl.ma27bd_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint},
-                        a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                        ikeep::Ptr{Cint}, nsteps::Ref{Cint}, maxfrt::Ref{Cint}, iw1::Ptr{Cint},
-                        icntl::Ptr{Cint}, cntl::Ptr{Float64}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27bd_64(n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps, maxfrt, iw1, icntl, cntl, info)
-  @ccall libhsl_subset_64.ma27bd_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
-                                     icn::Ptr{Int64}, a::Ptr{Float64}, la::Ref{Int64},
-                                     iw::Ptr{Int64}, liw::Ref{Int64}, ikeep::Ptr{Int64},
-                                     nsteps::Ref{Int64}, maxfrt::Ref{Int64}, iw1::Ptr{Int64},
-                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma27cd(n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps, icntl, info)
-  @ccall libhsl.ma27cd_(n::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                        w::Ptr{Float64}, maxfrt::Ref{Cint}, rhs::Ptr{Float64}, iw1::Ptr{Cint},
-                        nsteps::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27cd_64(n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps, icntl, info)
-  @ccall libhsl_subset_64.ma27cd_64_(n::Ref{Int64}, a::Ptr{Float64}, la::Ref{Int64}, iw::Ptr{Int64},
-                                     liw::Ref{Int64}, w::Ptr{Float64}, maxfrt::Ref{Int64},
-                                     rhs::Ptr{Float64}, iw1::Ptr{Int64}, nsteps::Ref{Int64},
-                                     icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma27gd(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl.ma27gd_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
-                        lw::Ref{Cint}, ipe::Ptr{Cint}, iq::Ptr{Cint}, flag::Ptr{Cint},
-                        iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27gd_64(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl_subset_64.ma27gd_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
-                                     icn::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                     ipe::Ptr{Int64}, iq::Ptr{Int64}, flag::Ptr{Int64},
-                                     iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma27hd(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
-  @ccall libhsl.ma27hd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                        nv::Ptr{Cint}, nxt::Ptr{Cint}, lst::Ptr{Cint}, ipd::Ptr{Cint},
-                        flag::Ptr{Cint}, iovflo::Ref{Cint}, ncmpa::Ref{Cint},
-                        fratio::Ref{Float64})::Cvoid
-end
-
-function ma27hd_64(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
-  @ccall libhsl_subset_64.ma27hd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                     iwfr::Ref{Int64}, nv::Ptr{Int64}, nxt::Ptr{Int64},
-                                     lst::Ptr{Int64}, ipd::Ptr{Int64}, flag::Ptr{Int64},
-                                     iovflo::Ref{Int64}, ncmpa::Ref{Int64},
-                                     fratio::Ref{Float64})::Cvoid
-end
-
-function ma27ud(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl.ma27ud_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                        ncmpa::Ref{Cint})::Cvoid
-end
-
-function ma27ud_64(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl_subset_64.ma27ud_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                     iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
-end
-
-function ma27jd(n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl.ma27jd_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint},
-                        perm::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, ipe::Ptr{Cint},
-                        iq::Ptr{Cint}, flag::Ptr{Cint}, iwfr::Ref{Cint}, icntl::Ptr{Cint},
-                        info::Ptr{Cint})::Cvoid
-end
-
-function ma27jd_64(n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl_subset_64.ma27jd_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
-                                     icn::Ptr{Int64}, perm::Ptr{Int64}, iw::Ptr{Int64},
-                                     lw::Ref{Int64}, ipe::Ptr{Int64}, iq::Ptr{Int64},
-                                     flag::Ptr{Int64}, iwfr::Ref{Int64}, icntl::Ptr{Int64},
-                                     info::Ptr{Int64})::Cvoid
-end
-
-function ma27kd(n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
-  @ccall libhsl.ma27kd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                        ips::Ptr{Cint}, ipv::Ptr{Cint}, nv::Ptr{Cint}, flag::Ptr{Cint},
-                        ncmpa::Ref{Cint})::Cvoid
-end
-
-function ma27kd_64(n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
-  @ccall libhsl_subset_64.ma27kd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                     iwfr::Ref{Int64}, ips::Ptr{Int64}, ipv::Ptr{Int64},
-                                     nv::Ptr{Int64}, flag::Ptr{Int64}, ncmpa::Ref{Int64})::Cvoid
-end
-
-function ma27ld(n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
-  @ccall libhsl.ma27ld_(n::Ref{Cint}, ipe::Ptr{Cint}, nv::Ptr{Cint}, ips::Ptr{Cint}, ne::Ptr{Cint},
-                        na::Ptr{Cint}, nd::Ptr{Cint}, nsteps::Ref{Cint}, nemin::Ref{Cint})::Cvoid
-end
-
-function ma27ld_64(n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
-  @ccall libhsl_subset_64.ma27ld_64_(n::Ref{Int64}, ipe::Ptr{Int64}, nv::Ptr{Int64},
-                                     ips::Ptr{Int64}, ne::Ptr{Int64}, na::Ptr{Int64},
-                                     nd::Ptr{Int64}, nsteps::Ref{Int64}, nemin::Ref{Int64})::Cvoid
-end
-
-function ma27md(n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki, lstkr, iw, info, ops)
-  @ccall libhsl.ma27md_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint},
-                        perm::Ptr{Cint}, na::Ptr{Cint}, ne::Ptr{Cint}, nd::Ptr{Cint},
-                        nsteps::Ref{Cint}, lstki::Ptr{Cint}, lstkr::Ptr{Cint}, iw::Ptr{Cint},
-                        info::Ptr{Cint}, ops::Ref{Float64})::Cvoid
-end
-
-function ma27md_64(n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki, lstkr, iw, info, ops)
-  @ccall libhsl_subset_64.ma27md_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
-                                     icn::Ptr{Int64}, perm::Ptr{Int64}, na::Ptr{Int64},
-                                     ne::Ptr{Int64}, nd::Ptr{Int64}, nsteps::Ref{Int64},
-                                     lstki::Ptr{Int64}, lstkr::Ptr{Int64}, iw::Ptr{Int64},
-                                     info::Ptr{Int64}, ops::Ref{Float64})::Cvoid
-end
-
-function ma27nd(n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2, icntl, info)
-  @ccall libhsl.ma27nd_(n::Ref{Cint}, nz::Ref{Cint}, nz1::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint},
-                        irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                        perm::Ptr{Cint}, iw2::Ptr{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27nd_64(n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2, icntl, info)
-  @ccall libhsl_subset_64.ma27nd_64_(n::Ref{Int64}, nz::Ref{Int64}, nz1::Ref{Int64},
-                                     a::Ptr{Float64}, la::Ref{Int64}, irn::Ptr{Int64},
-                                     icn::Ptr{Int64}, iw::Ptr{Int64}, liw::Ref{Int64},
-                                     perm::Ptr{Int64}, iw2::Ptr{Int64}, icntl::Ptr{Int64},
-                                     info::Ptr{Int64})::Cvoid
-end
-
-function ma27od(n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt, nelim, iw2, icntl, cntl, info)
-  @ccall libhsl.ma27od_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint},
-                        liw::Ref{Cint}, perm::Ptr{Cint}, nstk::Ptr{Cint}, nsteps::Ref{Cint},
-                        maxfrt::Ref{Cint}, nelim::Ptr{Cint}, iw2::Ptr{Cint}, icntl::Ptr{Cint},
-                        cntl::Ptr{Float64}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27od_64(n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt, nelim, iw2, icntl, cntl, info)
-  @ccall libhsl_subset_64.ma27od_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64}, la::Ref{Int64},
-                                     iw::Ptr{Int64}, liw::Ref{Int64}, perm::Ptr{Int64},
-                                     nstk::Ptr{Int64}, nsteps::Ref{Int64}, maxfrt::Ref{Int64},
-                                     nelim::Ptr{Int64}, iw2::Ptr{Int64}, icntl::Ptr{Int64},
-                                     cntl::Ptr{Float64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma27pd(a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
-  @ccall libhsl.ma27pd_(a::Ptr{Float64}, iw::Ptr{Cint}, j1::Ref{Cint}, j2::Ref{Cint},
-                        itop::Ref{Cint}, ireal::Ref{Cint}, ncmpbr::Ref{Cint},
-                        ncmpbi::Ref{Cint})::Cvoid
-end
-
-function ma27pd_64(a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
-  @ccall libhsl_subset_64.ma27pd_64_(a::Ptr{Float64}, iw::Ptr{Int64}, j1::Ref{Int64},
-                                     j2::Ref{Int64}, itop::Ref{Int64}, ireal::Ref{Int64},
-                                     ncmpbr::Ref{Int64}, ncmpbi::Ref{Int64})::Cvoid
-end
-
-function ma27qd(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
-  @ccall libhsl.ma27qd_(n::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                        w::Ptr{Float64}, maxfnt::Ref{Cint}, rhs::Ptr{Float64}, iw2::Ptr{Cint},
-                        nblk::Ref{Cint}, latop::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma27qd_64(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
-  @ccall libhsl_subset_64.ma27qd_64_(n::Ref{Int64}, a::Ptr{Float64}, la::Ref{Int64}, iw::Ptr{Int64},
-                                     liw::Ref{Int64}, w::Ptr{Float64}, maxfnt::Ref{Int64},
-                                     rhs::Ptr{Float64}, iw2::Ptr{Int64}, nblk::Ref{Int64},
-                                     latop::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma27rd(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
-  @ccall libhsl.ma27rd_(n::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                        w::Ptr{Float64}, maxfnt::Ref{Cint}, rhs::Ptr{Float64}, iw2::Ptr{Cint},
-                        nblk::Ref{Cint}, latop::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma27rd_64(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
-  @ccall libhsl_subset_64.ma27rd_64_(n::Ref{Int64}, a::Ptr{Float64}, la::Ref{Int64}, iw::Ptr{Int64},
-                                     liw::Ref{Int64}, w::Ptr{Float64}, maxfnt::Ref{Int64},
-                                     rhs::Ptr{Float64}, iw2::Ptr{Int64}, nblk::Ref{Int64},
-                                     latop::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma27i(icntl, cntl)
-  @ccall libhsl.ma27i_(icntl::Ptr{Cint}, cntl::Ptr{Float32})::Cvoid
-end
-
-function ma27i_64(icntl, cntl)
-  @ccall libhsl_subset_64.ma27i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32})::Cvoid
-end
-
-function ma27a(n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps, iflag, icntl, cntl, info, ops)
-  @ccall libhsl.ma27a_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
-                       liw::Ref{Cint}, ikeep::Ptr{Cint}, iw1::Ptr{Cint}, nsteps::Ref{Cint},
-                       iflag::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float32}, info::Ptr{Cint},
-                       ops::Ref{Float32})::Cvoid
-end
-
-function ma27a_64(n, nz, irn, icn, iw, liw, ikeep, iw1, nsteps, iflag, icntl, cntl, info, ops)
-  @ccall libhsl_subset_64.ma27a_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
-                                    iw::Ptr{Int64}, liw::Ref{Int64}, ikeep::Ptr{Int64},
-                                    iw1::Ptr{Int64}, nsteps::Ref{Int64}, iflag::Ref{Int64},
-                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, info::Ptr{Int64},
-                                    ops::Ref{Float32})::Cvoid
-end
-
-function ma27b(n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps, maxfrt, iw1, icntl, cntl, info)
-  @ccall libhsl.ma27b_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, a::Ptr{Float32},
-                       la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint}, ikeep::Ptr{Cint},
-                       nsteps::Ref{Cint}, maxfrt::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint},
-                       cntl::Ptr{Float32}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27b_64(n, nz, irn, icn, a, la, iw, liw, ikeep, nsteps, maxfrt, iw1, icntl, cntl, info)
-  @ccall libhsl_subset_64.ma27b_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
-                                    a::Ptr{Float32}, la::Ref{Int64}, iw::Ptr{Int64},
-                                    liw::Ref{Int64}, ikeep::Ptr{Int64}, nsteps::Ref{Int64},
-                                    maxfrt::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64},
-                                    cntl::Ptr{Float32}, info::Ptr{Int64})::Cvoid
-end
-
-function ma27c(n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps, icntl, info)
-  @ccall libhsl.ma27c_(n::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                       w::Ptr{Float32}, maxfrt::Ref{Cint}, rhs::Ptr{Float32}, iw1::Ptr{Cint},
-                       nsteps::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27c_64(n, a, la, iw, liw, w, maxfrt, rhs, iw1, nsteps, icntl, info)
-  @ccall libhsl_subset_64.ma27c_64_(n::Ref{Int64}, a::Ptr{Float32}, la::Ref{Int64}, iw::Ptr{Int64},
-                                    liw::Ref{Int64}, w::Ptr{Float32}, maxfrt::Ref{Int64},
-                                    rhs::Ptr{Float32}, iw1::Ptr{Int64}, nsteps::Ref{Int64},
-                                    icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma27g(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl.ma27g_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
-                       lw::Ref{Cint}, ipe::Ptr{Cint}, iq::Ptr{Cint}, flag::Ptr{Cint},
-                       iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27g_64(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl_subset_64.ma27g_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
-                                    iw::Ptr{Int64}, lw::Ref{Int64}, ipe::Ptr{Int64}, iq::Ptr{Int64},
-                                    flag::Ptr{Int64}, iwfr::Ref{Int64}, icntl::Ptr{Int64},
-                                    info::Ptr{Int64})::Cvoid
-end
-
-function ma27h(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
-  @ccall libhsl.ma27h_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                       nv::Ptr{Cint}, nxt::Ptr{Cint}, lst::Ptr{Cint}, ipd::Ptr{Cint},
-                       flag::Ptr{Cint}, iovflo::Ref{Cint}, ncmpa::Ref{Cint},
-                       fratio::Ref{Float32})::Cvoid
-end
-
-function ma27h_64(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
-  @ccall libhsl_subset_64.ma27h_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                    iwfr::Ref{Int64}, nv::Ptr{Int64}, nxt::Ptr{Int64},
-                                    lst::Ptr{Int64}, ipd::Ptr{Int64}, flag::Ptr{Int64},
-                                    iovflo::Ref{Int64}, ncmpa::Ref{Int64},
-                                    fratio::Ref{Float32})::Cvoid
-end
-
-function ma27u(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl.ma27u_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                       ncmpa::Ref{Cint})::Cvoid
-end
-
-function ma27u_64(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl_subset_64.ma27u_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                    iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
-end
-
-function ma27j(n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl.ma27j_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, perm::Ptr{Cint},
-                       iw::Ptr{Cint}, lw::Ref{Cint}, ipe::Ptr{Cint}, iq::Ptr{Cint}, flag::Ptr{Cint},
-                       iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27j_64(n, nz, irn, icn, perm, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl_subset_64.ma27j_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
-                                    perm::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                    ipe::Ptr{Int64}, iq::Ptr{Int64}, flag::Ptr{Int64},
-                                    iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma27k(n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
-  @ccall libhsl.ma27k_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                       ips::Ptr{Cint}, ipv::Ptr{Cint}, nv::Ptr{Cint}, flag::Ptr{Cint},
-                       ncmpa::Ref{Cint})::Cvoid
-end
-
-function ma27k_64(n, ipe, iw, lw, iwfr, ips, ipv, nv, flag, ncmpa)
-  @ccall libhsl_subset_64.ma27k_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                    iwfr::Ref{Int64}, ips::Ptr{Int64}, ipv::Ptr{Int64},
-                                    nv::Ptr{Int64}, flag::Ptr{Int64}, ncmpa::Ref{Int64})::Cvoid
-end
-
-function ma27l(n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
-  @ccall libhsl.ma27l_(n::Ref{Cint}, ipe::Ptr{Cint}, nv::Ptr{Cint}, ips::Ptr{Cint}, ne::Ptr{Cint},
-                       na::Ptr{Cint}, nd::Ptr{Cint}, nsteps::Ref{Cint}, nemin::Ref{Cint})::Cvoid
-end
-
-function ma27l_64(n, ipe, nv, ips, ne, na, nd, nsteps, nemin)
-  @ccall libhsl_subset_64.ma27l_64_(n::Ref{Int64}, ipe::Ptr{Int64}, nv::Ptr{Int64}, ips::Ptr{Int64},
-                                    ne::Ptr{Int64}, na::Ptr{Int64}, nd::Ptr{Int64},
-                                    nsteps::Ref{Int64}, nemin::Ref{Int64})::Cvoid
-end
-
-function ma27m(n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki, lstkr, iw, info, ops)
-  @ccall libhsl.ma27m_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, perm::Ptr{Cint},
-                       na::Ptr{Cint}, ne::Ptr{Cint}, nd::Ptr{Cint}, nsteps::Ref{Cint},
-                       lstki::Ptr{Cint}, lstkr::Ptr{Cint}, iw::Ptr{Cint}, info::Ptr{Cint},
-                       ops::Ref{Float32})::Cvoid
-end
-
-function ma27m_64(n, nz, irn, icn, perm, na, ne, nd, nsteps, lstki, lstkr, iw, info, ops)
-  @ccall libhsl_subset_64.ma27m_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
-                                    perm::Ptr{Int64}, na::Ptr{Int64}, ne::Ptr{Int64},
-                                    nd::Ptr{Int64}, nsteps::Ref{Int64}, lstki::Ptr{Int64},
-                                    lstkr::Ptr{Int64}, iw::Ptr{Int64}, info::Ptr{Int64},
-                                    ops::Ref{Float32})::Cvoid
-end
-
-function ma27n(n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2, icntl, info)
-  @ccall libhsl.ma27n_(n::Ref{Cint}, nz::Ref{Cint}, nz1::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint},
-                       irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                       perm::Ptr{Cint}, iw2::Ptr{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27n_64(n, nz, nz1, a, la, irn, icn, iw, liw, perm, iw2, icntl, info)
-  @ccall libhsl_subset_64.ma27n_64_(n::Ref{Int64}, nz::Ref{Int64}, nz1::Ref{Int64}, a::Ptr{Float32},
-                                    la::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
-                                    iw::Ptr{Int64}, liw::Ref{Int64}, perm::Ptr{Int64},
-                                    iw2::Ptr{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma27o(n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt, nelim, iw2, icntl, cntl, info)
-  @ccall libhsl.ma27o_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint},
-                       liw::Ref{Cint}, perm::Ptr{Cint}, nstk::Ptr{Cint}, nsteps::Ref{Cint},
-                       maxfrt::Ref{Cint}, nelim::Ptr{Cint}, iw2::Ptr{Cint}, icntl::Ptr{Cint},
-                       cntl::Ptr{Float32}, info::Ptr{Cint})::Cvoid
-end
-
-function ma27o_64(n, nz, a, la, iw, liw, perm, nstk, nsteps, maxfrt, nelim, iw2, icntl, cntl, info)
-  @ccall libhsl_subset_64.ma27o_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32}, la::Ref{Int64},
-                                    iw::Ptr{Int64}, liw::Ref{Int64}, perm::Ptr{Int64},
-                                    nstk::Ptr{Int64}, nsteps::Ref{Int64}, maxfrt::Ref{Int64},
-                                    nelim::Ptr{Int64}, iw2::Ptr{Int64}, icntl::Ptr{Int64},
-                                    cntl::Ptr{Float32}, info::Ptr{Int64})::Cvoid
-end
-
-function ma27p(a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
-  @ccall libhsl.ma27p_(a::Ptr{Float32}, iw::Ptr{Cint}, j1::Ref{Cint}, j2::Ref{Cint},
-                       itop::Ref{Cint}, ireal::Ref{Cint}, ncmpbr::Ref{Cint},
-                       ncmpbi::Ref{Cint})::Cvoid
-end
-
-function ma27p_64(a, iw, j1, j2, itop, ireal, ncmpbr, ncmpbi)
-  @ccall libhsl_subset_64.ma27p_64_(a::Ptr{Float32}, iw::Ptr{Int64}, j1::Ref{Int64}, j2::Ref{Int64},
-                                    itop::Ref{Int64}, ireal::Ref{Int64}, ncmpbr::Ref{Int64},
-                                    ncmpbi::Ref{Int64})::Cvoid
-end
-
-function ma27q(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
-  @ccall libhsl.ma27q_(n::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                       w::Ptr{Float32}, maxfnt::Ref{Cint}, rhs::Ptr{Float32}, iw2::Ptr{Cint},
-                       nblk::Ref{Cint}, latop::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma27q_64(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
-  @ccall libhsl_subset_64.ma27q_64_(n::Ref{Int64}, a::Ptr{Float32}, la::Ref{Int64}, iw::Ptr{Int64},
-                                    liw::Ref{Int64}, w::Ptr{Float32}, maxfnt::Ref{Int64},
-                                    rhs::Ptr{Float32}, iw2::Ptr{Int64}, nblk::Ref{Int64},
-                                    latop::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma27r(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
-  @ccall libhsl.ma27r_(n::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                       w::Ptr{Float32}, maxfnt::Ref{Cint}, rhs::Ptr{Float32}, iw2::Ptr{Cint},
-                       nblk::Ref{Cint}, latop::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma27r_64(n, a, la, iw, liw, w, maxfnt, rhs, iw2, nblk, latop, icntl)
-  @ccall libhsl_subset_64.ma27r_64_(n::Ref{Int64}, a::Ptr{Float32}, la::Ref{Int64}, iw::Ptr{Int64},
-                                    liw::Ref{Int64}, w::Ptr{Float32}, maxfnt::Ref{Int64},
-                                    rhs::Ptr{Float32}, iw2::Ptr{Int64}, nblk::Ref{Int64},
-                                    latop::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/ma28.jl b/src/Fortran/ma28.jl
deleted file mode 100644
index 2b103d6..0000000
--- a/src/Fortran/ma28.jl
+++ /dev/null
@@ -1,145 +0,0 @@
-function ma28ad(n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w, iflag)
-  @ccall libhsl.ma28ad_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
-                        irn::Ptr{Cint}, lirn::Ref{Cint}, icn::Ptr{Cint}, u::Ref{Float64},
-                        ikeep::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float64}, iflag::Ref{Cint})::Cvoid
-end
-
-function ma28ad_64(n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w, iflag)
-  @ccall libhsl_subset_64.ma28ad_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64},
-                                     licn::Ref{Int64}, irn::Ptr{Int64}, lirn::Ref{Int64},
-                                     icn::Ptr{Int64}, u::Ref{Float64}, ikeep::Ptr{Int64},
-                                     iw::Ptr{Int64}, w::Ptr{Float64}, iflag::Ref{Int64})::Cvoid
-end
-
-function ma28bd(n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w, iflag)
-  @ccall libhsl.ma28bd_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
-                        ivect::Ptr{Cint}, jvect::Ptr{Cint}, icn::Ptr{Cint}, ikeep::Ptr{Cint},
-                        iw::Ptr{Cint}, w::Ptr{Float64}, iflag::Ref{Cint})::Cvoid
-end
-
-function ma28bd_64(n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w, iflag)
-  @ccall libhsl_subset_64.ma28bd_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64},
-                                     licn::Ref{Int64}, ivect::Ptr{Int64}, jvect::Ptr{Int64},
-                                     icn::Ptr{Int64}, ikeep::Ptr{Int64}, iw::Ptr{Int64},
-                                     w::Ptr{Float64}, iflag::Ref{Int64})::Cvoid
-end
-
-function ma28cd(n, a, licn, icn, ikeep, rhs, w, mtype)
-  @ccall libhsl.ma28cd_(n::Ref{Cint}, a::Ptr{Float64}, licn::Ref{Cint}, icn::Ptr{Cint},
-                        ikeep::Ptr{Cint}, rhs::Ptr{Float64}, w::Ptr{Float64},
-                        mtype::Ref{Cint})::Cvoid
-end
-
-function ma28cd_64(n, a, licn, icn, ikeep, rhs, w, mtype)
-  @ccall libhsl_subset_64.ma28cd_64_(n::Ref{Int64}, a::Ptr{Float64}, licn::Ref{Int64},
-                                     icn::Ptr{Int64}, ikeep::Ptr{Int64}, rhs::Ptr{Float64},
-                                     w::Ptr{Float64}, mtype::Ref{Int64})::Cvoid
-end
-
-function ma28dd(n, a, licn, ivect, jvect, nz, icn, lenr, lenrl, lenoff, ip, iq, iw1, iw, w1, iflag)
-  @ccall libhsl.ma28dd_(n::Ref{Cint}, a::Ptr{Float64}, licn::Ref{Cint}, ivect::Ptr{Cint},
-                        jvect::Ptr{Cint}, nz::Ref{Cint}, icn::Ptr{Cint}, lenr::Ptr{Cint},
-                        lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, ip::Ptr{Cint}, iq::Ptr{Cint},
-                        iw1::Ptr{Cint}, iw::Ptr{Cint}, w1::Ref{Float64}, iflag::Ref{Cint})::Cvoid
-end
-
-function ma28dd_64(n, a, licn, ivect, jvect, nz, icn, lenr, lenrl, lenoff, ip, iq, iw1, iw, w1,
-                   iflag)
-  @ccall libhsl_subset_64.ma28dd_64_(n::Ref{Int64}, a::Ptr{Float64}, licn::Ref{Int64},
-                                     ivect::Ptr{Int64}, jvect::Ptr{Int64}, nz::Ref{Int64},
-                                     icn::Ptr{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                     lenoff::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                     iw1::Ptr{Int64}, iw::Ptr{Int64}, w1::Ref{Float64},
-                                     iflag::Ref{Int64})::Cvoid
-end
-
-function ma28id(n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep, rhs, x, r, w, mtype, prec, iflag)
-  @ccall libhsl.ma28id_(n::Ref{Cint}, nz::Ref{Cint}, aorg::Ptr{Float64}, irnorg::Ptr{Cint},
-                        icnorg::Ptr{Cint}, licn::Ref{Cint}, a::Ptr{Float64}, icn::Ptr{Cint},
-                        ikeep::Ptr{Cint}, rhs::Ptr{Float64}, x::Ptr{Float64}, r::Ptr{Float64},
-                        w::Ptr{Float64}, mtype::Ref{Cint}, prec::Ref{Float64},
-                        iflag::Ref{Cint})::Cvoid
-end
-
-function ma28id_64(n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep, rhs, x, r, w, mtype, prec,
-                   iflag)
-  @ccall libhsl_subset_64.ma28id_64_(n::Ref{Int64}, nz::Ref{Int64}, aorg::Ptr{Float64},
-                                     irnorg::Ptr{Int64}, icnorg::Ptr{Int64}, licn::Ref{Int64},
-                                     a::Ptr{Float64}, icn::Ptr{Int64}, ikeep::Ptr{Int64},
-                                     rhs::Ptr{Float64}, x::Ptr{Float64}, r::Ptr{Float64},
-                                     w::Ptr{Float64}, mtype::Ref{Int64}, prec::Ref{Float64},
-                                     iflag::Ref{Int64})::Cvoid
-end
-
-function ma28a(n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w, iflag)
-  @ccall libhsl.ma28a_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
-                       irn::Ptr{Cint}, lirn::Ref{Cint}, icn::Ptr{Cint}, u::Ref{Float32},
-                       ikeep::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float32}, iflag::Ref{Cint})::Cvoid
-end
-
-function ma28a_64(n, nz, a, licn, irn, lirn, icn, u, ikeep, iw, w, iflag)
-  @ccall libhsl_subset_64.ma28a_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32},
-                                    licn::Ref{Int64}, irn::Ptr{Int64}, lirn::Ref{Int64},
-                                    icn::Ptr{Int64}, u::Ref{Float32}, ikeep::Ptr{Int64},
-                                    iw::Ptr{Int64}, w::Ptr{Float32}, iflag::Ref{Int64})::Cvoid
-end
-
-function ma28b(n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w, iflag)
-  @ccall libhsl.ma28b_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
-                       ivect::Ptr{Cint}, jvect::Ptr{Cint}, icn::Ptr{Cint}, ikeep::Ptr{Cint},
-                       iw::Ptr{Cint}, w::Ptr{Float32}, iflag::Ref{Cint})::Cvoid
-end
-
-function ma28b_64(n, nz, a, licn, ivect, jvect, icn, ikeep, iw, w, iflag)
-  @ccall libhsl_subset_64.ma28b_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32},
-                                    licn::Ref{Int64}, ivect::Ptr{Int64}, jvect::Ptr{Int64},
-                                    icn::Ptr{Int64}, ikeep::Ptr{Int64}, iw::Ptr{Int64},
-                                    w::Ptr{Float32}, iflag::Ref{Int64})::Cvoid
-end
-
-function ma28c(n, a, licn, icn, ikeep, rhs, w, mtype)
-  @ccall libhsl.ma28c_(n::Ref{Cint}, a::Ptr{Float32}, licn::Ref{Cint}, icn::Ptr{Cint},
-                       ikeep::Ptr{Cint}, rhs::Ptr{Float32}, w::Ptr{Float32},
-                       mtype::Ref{Cint})::Cvoid
-end
-
-function ma28c_64(n, a, licn, icn, ikeep, rhs, w, mtype)
-  @ccall libhsl_subset_64.ma28c_64_(n::Ref{Int64}, a::Ptr{Float32}, licn::Ref{Int64},
-                                    icn::Ptr{Int64}, ikeep::Ptr{Int64}, rhs::Ptr{Float32},
-                                    w::Ptr{Float32}, mtype::Ref{Int64})::Cvoid
-end
-
-function ma28d(n, a, licn, ivect, jvect, nz, icn, lenr, lenrl, lenoff, ip, iq, iw1, iw, w1, iflag)
-  @ccall libhsl.ma28d_(n::Ref{Cint}, a::Ptr{Float32}, licn::Ref{Cint}, ivect::Ptr{Cint},
-                       jvect::Ptr{Cint}, nz::Ref{Cint}, icn::Ptr{Cint}, lenr::Ptr{Cint},
-                       lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, ip::Ptr{Cint}, iq::Ptr{Cint},
-                       iw1::Ptr{Cint}, iw::Ptr{Cint}, w1::Ref{Float32}, iflag::Ref{Cint})::Cvoid
-end
-
-function ma28d_64(n, a, licn, ivect, jvect, nz, icn, lenr, lenrl, lenoff, ip, iq, iw1, iw, w1,
-                  iflag)
-  @ccall libhsl_subset_64.ma28d_64_(n::Ref{Int64}, a::Ptr{Float32}, licn::Ref{Int64},
-                                    ivect::Ptr{Int64}, jvect::Ptr{Int64}, nz::Ref{Int64},
-                                    icn::Ptr{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                    lenoff::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                    iw1::Ptr{Int64}, iw::Ptr{Int64}, w1::Ref{Float32},
-                                    iflag::Ref{Int64})::Cvoid
-end
-
-function ma28i(n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep, rhs, x, r, w, mtype, prec, iflag)
-  @ccall libhsl.ma28i_(n::Ref{Cint}, nz::Ref{Cint}, aorg::Ptr{Float32}, irnorg::Ptr{Cint},
-                       icnorg::Ptr{Cint}, licn::Ref{Cint}, a::Ptr{Float32}, icn::Ptr{Cint},
-                       ikeep::Ptr{Cint}, rhs::Ptr{Float32}, x::Ptr{Float32}, r::Ptr{Float32},
-                       w::Ptr{Float32}, mtype::Ref{Cint}, prec::Ref{Float32},
-                       iflag::Ref{Cint})::Cvoid
-end
-
-function ma28i_64(n, nz, aorg, irnorg, icnorg, licn, a, icn, ikeep, rhs, x, r, w, mtype, prec,
-                  iflag)
-  @ccall libhsl_subset_64.ma28i_64_(n::Ref{Int64}, nz::Ref{Int64}, aorg::Ptr{Float32},
-                                    irnorg::Ptr{Int64}, icnorg::Ptr{Int64}, licn::Ref{Int64},
-                                    a::Ptr{Float32}, icn::Ptr{Int64}, ikeep::Ptr{Int64},
-                                    rhs::Ptr{Float32}, x::Ptr{Float32}, r::Ptr{Float32},
-                                    w::Ptr{Float32}, mtype::Ref{Int64}, prec::Ref{Float32},
-                                    iflag::Ref{Int64})::Cvoid
-end
diff --git a/src/Fortran/ma30.jl b/src/Fortran/ma30.jl
deleted file mode 100644
index e0af02f..0000000
--- a/src/Fortran/ma30.jl
+++ /dev/null
@@ -1,119 +0,0 @@
-function ma30ad(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr, nextr,
-                lastc, nextc, iptr, ipc, u, iflag)
-  @ccall libhsl.ma30ad_(nn::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
-                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
-                        iq::Ptr{Cint}, irn::Ptr{Cint}, lirn::Ref{Cint}, lenc::Ptr{Cint},
-                        ifirst::Ptr{Cint}, lastr::Ptr{Cint}, nextr::Ptr{Cint}, lastc::Ptr{Cint},
-                        nextc::Ptr{Cint}, iptr::Ptr{Cint}, ipc::Ptr{Cint}, u::Ref{Float64},
-                        iflag::Ref{Cint})::Cvoid
-end
-
-function ma30ad_64(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr,
-                   nextr, lastc, nextc, iptr, ipc, u, iflag)
-  @ccall libhsl_subset_64.ma30ad_64_(nn::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
-                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                     irn::Ptr{Int64}, lirn::Ref{Int64}, lenc::Ptr{Int64},
-                                     ifirst::Ptr{Int64}, lastr::Ptr{Int64}, nextr::Ptr{Int64},
-                                     lastc::Ptr{Int64}, nextc::Ptr{Int64}, iptr::Ptr{Int64},
-                                     ipc::Ptr{Int64}, u::Ref{Float64}, iflag::Ref{Int64})::Cvoid
-end
-
-function ma30bd(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag)
-  @ccall libhsl.ma30bd_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
-                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
-                        iq::Ptr{Cint}, w::Ptr{Float64}, iw::Ptr{Cint}, iflag::Ref{Cint})::Cvoid
-end
-
-function ma30bd_64(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag)
-  @ccall libhsl_subset_64.ma30bd_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
-                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                     w::Ptr{Float64}, iw::Ptr{Int64}, iflag::Ref{Int64})::Cvoid
-end
-
-function ma30cd(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype)
-  @ccall libhsl.ma30cd_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
-                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, idisp::Ptr{Cint},
-                        ip::Ptr{Cint}, iq::Ptr{Cint}, x::Ptr{Float64}, w::Ptr{Float64},
-                        mtype::Ref{Cint})::Cvoid
-end
-
-function ma30cd_64(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype)
-  @ccall libhsl_subset_64.ma30cd_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
-                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                     lenoff::Ptr{Int64}, idisp::Ptr{Int64}, ip::Ptr{Int64},
-                                     iq::Ptr{Int64}, x::Ptr{Float64}, w::Ptr{Float64},
-                                     mtype::Ref{Int64})::Cvoid
-end
-
-function ma30dd(a, icn, iptr, n, iactiv, itop, reals)
-  @ccall libhsl.ma30dd_(a::Ptr{Float64}, icn::Ptr{Cint}, iptr::Ptr{Cint}, n::Ref{Cint},
-                        iactiv::Ref{Cint}, itop::Ref{Cint}, reals::Ref{Cint})::Cvoid
-end
-
-function ma30dd_64(a, icn, iptr, n, iactiv, itop, reals)
-  @ccall libhsl_subset_64.ma30dd_64_(a::Ptr{Float64}, icn::Ptr{Int64}, iptr::Ptr{Int64},
-                                     n::Ref{Int64}, iactiv::Ref{Int64}, itop::Ref{Int64},
-                                     reals::Ref{Int64})::Cvoid
-end
-
-function ma30a(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr, nextr,
-               lastc, nextc, iptr, ipc, u, iflag)
-  @ccall libhsl.ma30a_(nn::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
-                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
-                       iq::Ptr{Cint}, irn::Ptr{Cint}, lirn::Ref{Cint}, lenc::Ptr{Cint},
-                       ifirst::Ptr{Cint}, lastr::Ptr{Cint}, nextr::Ptr{Cint}, lastc::Ptr{Cint},
-                       nextc::Ptr{Cint}, iptr::Ptr{Cint}, ipc::Ptr{Cint}, u::Ref{Float32},
-                       iflag::Ref{Cint})::Cvoid
-end
-
-function ma30a_64(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr,
-                  nextr, lastc, nextc, iptr, ipc, u, iflag)
-  @ccall libhsl_subset_64.ma30a_64_(nn::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
-                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                    idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                    irn::Ptr{Int64}, lirn::Ref{Int64}, lenc::Ptr{Int64},
-                                    ifirst::Ptr{Int64}, lastr::Ptr{Int64}, nextr::Ptr{Int64},
-                                    lastc::Ptr{Int64}, nextc::Ptr{Int64}, iptr::Ptr{Int64},
-                                    ipc::Ptr{Int64}, u::Ref{Float32}, iflag::Ref{Int64})::Cvoid
-end
-
-function ma30b(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag)
-  @ccall libhsl.ma30b_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
-                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
-                       iq::Ptr{Cint}, w::Ptr{Float32}, iw::Ptr{Cint}, iflag::Ref{Cint})::Cvoid
-end
-
-function ma30b_64(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag)
-  @ccall libhsl_subset_64.ma30b_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
-                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                    idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                    w::Ptr{Float32}, iw::Ptr{Int64}, iflag::Ref{Int64})::Cvoid
-end
-
-function ma30c(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype)
-  @ccall libhsl.ma30c_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
-                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, idisp::Ptr{Cint},
-                       ip::Ptr{Cint}, iq::Ptr{Cint}, x::Ptr{Float32}, w::Ptr{Float32},
-                       mtype::Ref{Cint})::Cvoid
-end
-
-function ma30c_64(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype)
-  @ccall libhsl_subset_64.ma30c_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
-                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                    lenoff::Ptr{Int64}, idisp::Ptr{Int64}, ip::Ptr{Int64},
-                                    iq::Ptr{Int64}, x::Ptr{Float32}, w::Ptr{Float32},
-                                    mtype::Ref{Int64})::Cvoid
-end
-
-function ma30d(a, icn, iptr, n, iactiv, itop, reals)
-  @ccall libhsl.ma30d_(a::Ptr{Float32}, icn::Ptr{Cint}, iptr::Ptr{Cint}, n::Ref{Cint},
-                       iactiv::Ref{Cint}, itop::Ref{Cint}, reals::Ref{Cint})::Cvoid
-end
-
-function ma30d_64(a, icn, iptr, n, iactiv, itop, reals)
-  @ccall libhsl_subset_64.ma30d_64_(a::Ptr{Float32}, icn::Ptr{Int64}, iptr::Ptr{Int64},
-                                    n::Ref{Int64}, iactiv::Ref{Int64}, itop::Ref{Int64},
-                                    reals::Ref{Int64})::Cvoid
-end
diff --git a/src/Fortran/ma33.jl b/src/Fortran/ma33.jl
deleted file mode 100644
index 9aaa3e5..0000000
--- a/src/Fortran/ma33.jl
+++ /dev/null
@@ -1,148 +0,0 @@
-function ma33id(icntl, cntl)
-  @ccall libhsl.ma33id_(icntl::Ptr{Cint}, cntl::Ptr{Float64})::Cvoid
-end
-
-function ma33id_64(icntl, cntl)
-  @ccall libhsl_subset_64.ma33id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64})::Cvoid
-end
-
-function ma33ad(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr, nextr,
-                lastc, nextc, iptr, ipc, u, iflag, icntl, cntl, info, rinfo)
-  @ccall libhsl.ma33ad_(nn::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
-                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
-                        iq::Ptr{Cint}, irn::Ptr{Cint}, lirn::Ref{Cint}, lenc::Ptr{Cint},
-                        ifirst::Ptr{Cint}, lastr::Ptr{Cint}, nextr::Ptr{Cint}, lastc::Ptr{Cint},
-                        nextc::Ptr{Cint}, iptr::Ptr{Cint}, ipc::Ptr{Cint}, u::Ref{Float64},
-                        iflag::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float64}, info::Ptr{Cint},
-                        rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma33ad_64(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr,
-                   nextr, lastc, nextc, iptr, ipc, u, iflag, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.ma33ad_64_(nn::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
-                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                     irn::Ptr{Int64}, lirn::Ref{Int64}, lenc::Ptr{Int64},
-                                     ifirst::Ptr{Int64}, lastr::Ptr{Int64}, nextr::Ptr{Int64},
-                                     lastc::Ptr{Int64}, nextc::Ptr{Int64}, iptr::Ptr{Int64},
-                                     ipc::Ptr{Int64}, u::Ref{Float64}, iflag::Ref{Int64},
-                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, info::Ptr{Int64},
-                                     rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma33bd(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag, icntl, cntl, rinfo)
-  @ccall libhsl.ma33bd_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
-                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
-                        iq::Ptr{Cint}, w::Ptr{Float64}, iw::Ptr{Cint}, iflag::Ref{Cint},
-                        icntl::Ptr{Cint}, cntl::Ptr{Float64}, rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma33bd_64(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag, icntl, cntl, rinfo)
-  @ccall libhsl_subset_64.ma33bd_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
-                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                     idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                     w::Ptr{Float64}, iw::Ptr{Int64}, iflag::Ref{Int64},
-                                     icntl::Ptr{Int64}, cntl::Ptr{Float64},
-                                     rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma33cd(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype, rinfo)
-  @ccall libhsl.ma33cd_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
-                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, idisp::Ptr{Cint},
-                        ip::Ptr{Cint}, iq::Ptr{Cint}, x::Ptr{Float64}, w::Ptr{Float64},
-                        mtype::Ref{Cint}, rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma33cd_64(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype, rinfo)
-  @ccall libhsl_subset_64.ma33cd_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
-                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                     lenoff::Ptr{Int64}, idisp::Ptr{Int64}, ip::Ptr{Int64},
-                                     iq::Ptr{Int64}, x::Ptr{Float64}, w::Ptr{Float64},
-                                     mtype::Ref{Int64}, rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma33dd(a, icn, iptr, n, iactiv, itop, reals, info)
-  @ccall libhsl.ma33dd_(a::Ptr{Float64}, icn::Ptr{Cint}, iptr::Ptr{Cint}, n::Ref{Cint},
-                        iactiv::Ref{Cint}, itop::Ref{Cint}, reals::Ref{Cint},
-                        info::Ptr{Cint})::Cvoid
-end
-
-function ma33dd_64(a, icn, iptr, n, iactiv, itop, reals, info)
-  @ccall libhsl_subset_64.ma33dd_64_(a::Ptr{Float64}, icn::Ptr{Int64}, iptr::Ptr{Int64},
-                                     n::Ref{Int64}, iactiv::Ref{Int64}, itop::Ref{Int64},
-                                     reals::Ref{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma33i(icntl, cntl)
-  @ccall libhsl.ma33i_(icntl::Ptr{Cint}, cntl::Ptr{Float32})::Cvoid
-end
-
-function ma33i_64(icntl, cntl)
-  @ccall libhsl_subset_64.ma33i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32})::Cvoid
-end
-
-function ma33a(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr, nextr,
-               lastc, nextc, iptr, ipc, u, iflag, icntl, cntl, info, rinfo)
-  @ccall libhsl.ma33a_(nn::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
-                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
-                       iq::Ptr{Cint}, irn::Ptr{Cint}, lirn::Ref{Cint}, lenc::Ptr{Cint},
-                       ifirst::Ptr{Cint}, lastr::Ptr{Cint}, nextr::Ptr{Cint}, lastc::Ptr{Cint},
-                       nextc::Ptr{Cint}, iptr::Ptr{Cint}, ipc::Ptr{Cint}, u::Ref{Float32},
-                       iflag::Ref{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float32}, info::Ptr{Cint},
-                       rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma33a_64(nn, icn, a, licn, lenr, lenrl, idisp, ip, iq, irn, lirn, lenc, ifirst, lastr,
-                  nextr, lastc, nextc, iptr, ipc, u, iflag, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.ma33a_64_(nn::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
-                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                    idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                    irn::Ptr{Int64}, lirn::Ref{Int64}, lenc::Ptr{Int64},
-                                    ifirst::Ptr{Int64}, lastr::Ptr{Int64}, nextr::Ptr{Int64},
-                                    lastc::Ptr{Int64}, nextc::Ptr{Int64}, iptr::Ptr{Int64},
-                                    ipc::Ptr{Int64}, u::Ref{Float32}, iflag::Ref{Int64},
-                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, info::Ptr{Int64},
-                                    rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma33b(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag, icntl, cntl, rinfo)
-  @ccall libhsl.ma33b_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
-                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint},
-                       iq::Ptr{Cint}, w::Ptr{Float32}, iw::Ptr{Cint}, iflag::Ref{Cint},
-                       icntl::Ptr{Cint}, cntl::Ptr{Float32}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma33b_64(n, icn, a, licn, lenr, lenrl, idisp, ip, iq, w, iw, iflag, icntl, cntl, rinfo)
-  @ccall libhsl_subset_64.ma33b_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
-                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                    idisp::Ptr{Int64}, ip::Ptr{Int64}, iq::Ptr{Int64},
-                                    w::Ptr{Float32}, iw::Ptr{Int64}, iflag::Ref{Int64},
-                                    icntl::Ptr{Int64}, cntl::Ptr{Float32},
-                                    rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma33c(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype, rinfo)
-  @ccall libhsl.ma33c_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
-                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, lenoff::Ptr{Cint}, idisp::Ptr{Cint},
-                       ip::Ptr{Cint}, iq::Ptr{Cint}, x::Ptr{Float32}, w::Ptr{Float32},
-                       mtype::Ref{Cint}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma33c_64(n, icn, a, licn, lenr, lenrl, lenoff, idisp, ip, iq, x, w, mtype, rinfo)
-  @ccall libhsl_subset_64.ma33c_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
-                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                    lenoff::Ptr{Int64}, idisp::Ptr{Int64}, ip::Ptr{Int64},
-                                    iq::Ptr{Int64}, x::Ptr{Float32}, w::Ptr{Float32},
-                                    mtype::Ref{Int64}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma33d(a, icn, iptr, n, iactiv, itop, reals, info)
-  @ccall libhsl.ma33d_(a::Ptr{Float32}, icn::Ptr{Cint}, iptr::Ptr{Cint}, n::Ref{Cint},
-                       iactiv::Ref{Cint}, itop::Ref{Cint}, reals::Ref{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma33d_64(a, icn, iptr, n, iactiv, itop, reals, info)
-  @ccall libhsl_subset_64.ma33d_64_(a::Ptr{Float32}, icn::Ptr{Int64}, iptr::Ptr{Int64},
-                                    n::Ref{Int64}, iactiv::Ref{Int64}, itop::Ref{Int64},
-                                    reals::Ref{Int64}, info::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/ma57.jl b/src/Fortran/ma57.jl
deleted file mode 100644
index 3052a6f..0000000
--- a/src/Fortran/ma57.jl
+++ /dev/null
@@ -1,677 +0,0 @@
-function ma57id(cntl, icntl)
-  @ccall libhsl.ma57id_(cntl::Ptr{Float64}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57id_64(cntl, icntl)
-  @ccall libhsl_subset_64.ma57id_64_(cntl::Ptr{Float64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57ad(n, ne, irn, jcn, lkeep, keep, iwork, icntl, info, rinfo)
-  @ccall libhsl.ma57ad_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
-                        lkeep::Ref{Cint}, keep::Ptr{Cint}, iwork::Ptr{Cint}, icntl::Ptr{Cint},
-                        info::Ptr{Cint}, rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma57ad_64(n, ne, irn, jcn, lkeep, keep, iwork, icntl, info, rinfo)
-  @ccall libhsl_subset_64.ma57ad_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                     jcn::Ptr{Int64}, lkeep::Ref{Int64}, keep::Ptr{Int64},
-                                     iwork::Ptr{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64},
-                                     rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma57bd(n, ne, a, fact, lfact, ifact, lifact, lkeep, keep, ppos, icntl, cntl, info, rinfo)
-  @ccall libhsl.ma57bd_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64}, fact::Ptr{Float64},
-                        lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint}, lkeep::Ref{Cint},
-                        keep::Ptr{Cint}, ppos::Ptr{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float64},
-                        info::Ptr{Cint}, rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma57bd_64(n, ne, a, fact, lfact, ifact, lifact, lkeep, keep, ppos, icntl, cntl, info,
-                   rinfo)
-  @ccall libhsl_subset_64.ma57bd_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float64},
-                                     fact::Ptr{Float64}, lfact::Ref{Int64}, ifact::Ptr{Int64},
-                                     lifact::Ref{Int64}, lkeep::Ref{Int64}, keep::Ptr{Int64},
-                                     ppos::Ptr{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
-                                     info::Ptr{Int64}, rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma57cd(job, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl, info)
-  @ccall libhsl.ma57cd_(job::Ref{Cint}, n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint},
-                        ifact::Ptr{Cint}, lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float64},
-                        lrhs::Ref{Cint}, w::Ptr{Float64}, lw::Ref{Cint}, iw1::Ptr{Cint},
-                        icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma57cd_64(job, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl, info)
-  @ccall libhsl_subset_64.ma57cd_64_(job::Ref{Int64}, n::Ref{Int64}, fact::Ptr{Float64},
-                                     lfact::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
-                                     nrhs::Ref{Int64}, rhs::Ptr{Float64}, lrhs::Ref{Int64},
-                                     w::Ptr{Float64}, lw::Ref{Int64}, iw1::Ptr{Int64},
-                                     icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma57qd(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl.ma57qd_(n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                        lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint},
-                        w::Ptr{Float64}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57qd_64(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl_subset_64.ma57qd_64_(n::Ref{Int64}, fact::Ptr{Float64}, lfact::Ref{Int64},
-                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
-                                     rhs::Ptr{Float64}, lrhs::Ref{Int64}, w::Ptr{Float64},
-                                     lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57rd(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl.ma57rd_(n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                        lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint},
-                        w::Ptr{Float64}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57rd_64(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl_subset_64.ma57rd_64_(n::Ref{Int64}, fact::Ptr{Float64}, lfact::Ref{Int64},
-                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
-                                     rhs::Ptr{Float64}, lrhs::Ref{Int64}, w::Ptr{Float64},
-                                     lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57ud(fact, lfact, ifact, lifact, icntl)
-  @ccall libhsl.ma57ud_(fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint},
-                        icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57ud_64(fact, lfact, ifact, lifact, icntl)
-  @ccall libhsl_subset_64.ma57ud_64_(fact::Ptr{Float64}, lfact::Ref{Int64}, ifact::Ptr{Int64},
-                                     lifact::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57sd(fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, icntl)
-  @ccall libhsl.ma57sd_(fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint},
-                        nrhs::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint}, w::Ptr{Float64},
-                        lw::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57sd_64(fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, icntl)
-  @ccall libhsl_subset_64.ma57sd_64_(fact::Ptr{Float64}, lfact::Ref{Int64}, ifact::Ptr{Int64},
-                                     lifact::Ref{Int64}, nrhs::Ref{Int64}, rhs::Ptr{Float64},
-                                     lrhs::Ref{Int64}, w::Ptr{Float64}, lw::Ref{Int64},
-                                     icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57td(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl.ma57td_(n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                        lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint},
-                        w::Ptr{Float64}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57td_64(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl_subset_64.ma57td_64_(n::Ref{Int64}, fact::Ptr{Float64}, lfact::Ref{Int64},
-                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
-                                     rhs::Ptr{Float64}, lrhs::Ref{Int64}, w::Ptr{Float64},
-                                     lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57dd(job, n, ne, a, irn, jcn, fact, lfact, ifact, lifact, rhs, x, resid, w, iw, icntl,
-                cntl, info, rinfo)
-  @ccall libhsl.ma57dd_(job::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64},
-                        irn::Ptr{Cint}, jcn::Ptr{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint},
-                        ifact::Ptr{Cint}, lifact::Ref{Cint}, rhs::Ptr{Float64}, x::Ptr{Float64},
-                        resid::Ptr{Float64}, w::Ptr{Float64}, iw::Ptr{Cint}, icntl::Ptr{Cint},
-                        cntl::Ptr{Float64}, info::Ptr{Cint}, rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma57dd_64(job, n, ne, a, irn, jcn, fact, lfact, ifact, lifact, rhs, x, resid, w, iw, icntl,
-                   cntl, info, rinfo)
-  @ccall libhsl_subset_64.ma57dd_64_(job::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64},
-                                     a::Ptr{Float64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
-                                     fact::Ptr{Float64}, lfact::Ref{Int64}, ifact::Ptr{Int64},
-                                     lifact::Ref{Int64}, rhs::Ptr{Float64}, x::Ptr{Float64},
-                                     resid::Ptr{Float64}, w::Ptr{Float64}, iw::Ptr{Int64},
-                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, info::Ptr{Int64},
-                                     rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma57ed(n, ic, keep, fact, lfact, newfac, lnew, ifact, lifact, newifc, linew, info)
-  @ccall libhsl.ma57ed_(n::Ref{Cint}, ic::Ref{Cint}, keep::Ptr{Cint}, fact::Ptr{Float64},
-                        lfact::Ref{Cint}, newfac::Ptr{Float64}, lnew::Ref{Cint}, ifact::Ptr{Cint},
-                        lifact::Ref{Cint}, newifc::Ptr{Cint}, linew::Ref{Cint},
-                        info::Ptr{Cint})::Cvoid
-end
-
-function ma57ed_64(n, ic, keep, fact, lfact, newfac, lnew, ifact, lifact, newifc, linew, info)
-  @ccall libhsl_subset_64.ma57ed_64_(n::Ref{Int64}, ic::Ref{Int64}, keep::Ptr{Int64},
-                                     fact::Ptr{Float64}, lfact::Ref{Int64}, newfac::Ptr{Float64},
-                                     lnew::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
-                                     newifc::Ptr{Int64}, linew::Ref{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma57gd(n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl, info)
-  @ccall libhsl.ma57gd_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, iw::Ptr{Cint},
-                        ipe::Ptr{Cint}, count::Ptr{Cint}, flag::Ptr{Cint}, iwfr::Ref{Cint},
-                        icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma57gd_64(n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl, info)
-  @ccall libhsl_subset_64.ma57gd_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                     jcn::Ptr{Int64}, iw::Ptr{Int64}, ipe::Ptr{Int64},
-                                     count::Ptr{Int64}, flag::Ptr{Int64}, iwfr::Ref{Int64},
-                                     icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma57jd(n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr, icntl, info)
-  @ccall libhsl.ma57jd_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
-                        perm::Ptr{Cint}, iw::Ptr{Cint}, ipe::Ptr{Cint}, count::Ptr{Cint},
-                        flag::Ptr{Cint}, iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma57jd_64(n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr, icntl, info)
-  @ccall libhsl_subset_64.ma57jd_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                     jcn::Ptr{Int64}, perm::Ptr{Int64}, iw::Ptr{Int64},
-                                     ipe::Ptr{Int64}, count::Ptr{Int64}, flag::Ptr{Int64},
-                                     iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma57kd(n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
-  @ccall libhsl.ma57kd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                        perm::Ptr{Cint}, ips::Ptr{Cint}, nv::Ptr{Cint}, flag::Ptr{Cint},
-                        ncmpa::Ref{Cint})::Cvoid
-end
-
-function ma57kd_64(n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
-  @ccall libhsl_subset_64.ma57kd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                     iwfr::Ref{Int64}, perm::Ptr{Int64}, ips::Ptr{Int64},
-                                     nv::Ptr{Int64}, flag::Ptr{Int64}, ncmpa::Ref{Int64})::Cvoid
-end
-
-function ma57fd(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl.ma57fd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                        ncmpa::Ref{Cint})::Cvoid
-end
-
-function ma57fd_64(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl_subset_64.ma57fd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                     iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
-end
-
-function ma57ld(n, ipe, nv, ips, ne, na, node, perm, nsteps, fils, frere, nd, nemin, subord)
-  @ccall libhsl.ma57ld_(n::Ref{Cint}, ipe::Ptr{Cint}, nv::Ptr{Cint}, ips::Ptr{Cint}, ne::Ptr{Cint},
-                        na::Ptr{Cint}, node::Ptr{Cint}, perm::Ptr{Cint}, nsteps::Ref{Cint},
-                        fils::Ptr{Cint}, frere::Ptr{Cint}, nd::Ptr{Cint}, nemin::Ref{Cint},
-                        subord::Ptr{Cint})::Cvoid
-end
-
-function ma57ld_64(n, ipe, nv, ips, ne, na, node, perm, nsteps, fils, frere, nd, nemin, subord)
-  @ccall libhsl_subset_64.ma57ld_64_(n::Ref{Int64}, ipe::Ptr{Int64}, nv::Ptr{Int64},
-                                     ips::Ptr{Int64}, ne::Ptr{Int64}, na::Ptr{Int64},
-                                     node::Ptr{Int64}, perm::Ptr{Int64}, nsteps::Ref{Int64},
-                                     fils::Ptr{Int64}, frere::Ptr{Int64}, nd::Ptr{Int64},
-                                     nemin::Ref{Int64}, subord::Ptr{Int64})::Cvoid
-end
-
-function ma57md(n, ne, irn, jcn, map, irnprm, lrow, perm, count, idiag)
-  @ccall libhsl.ma57md_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, map::Ptr{Cint},
-                        irnprm::Ptr{Cint}, lrow::Ptr{Cint}, perm::Ptr{Cint}, count::Ptr{Cint},
-                        idiag::Ptr{Cint})::Cvoid
-end
-
-function ma57md_64(n, ne, irn, jcn, map, irnprm, lrow, perm, count, idiag)
-  @ccall libhsl_subset_64.ma57md_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                     jcn::Ptr{Int64}, map::Ptr{Int64}, irnprm::Ptr{Int64},
-                                     lrow::Ptr{Int64}, perm::Ptr{Int64}, count::Ptr{Int64},
-                                     idiag::Ptr{Int64})::Cvoid
-end
-
-function ma57nd(n, lenr, na, ne, nd, nsteps, lstki, lstkr, info, rinfo)
-  @ccall libhsl.ma57nd_(n::Ref{Cint}, lenr::Ptr{Cint}, na::Ptr{Cint}, ne::Ptr{Cint}, nd::Ptr{Cint},
-                        nsteps::Ref{Cint}, lstki::Ptr{Cint}, lstkr::Ptr{Cint}, info::Ptr{Cint},
-                        rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma57nd_64(n, lenr, na, ne, nd, nsteps, lstki, lstkr, info, rinfo)
-  @ccall libhsl_subset_64.ma57nd_64_(n::Ref{Int64}, lenr::Ptr{Int64}, na::Ptr{Int64},
-                                     ne::Ptr{Int64}, nd::Ptr{Int64}, nsteps::Ref{Int64},
-                                     lstki::Ptr{Int64}, lstkr::Ptr{Int64}, info::Ptr{Int64},
-                                     rinfo::Ptr{Float64})::Cvoid
-end
-
-function ma57od(n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk, node, diag, schnab, ppos, cntl,
-                icntl, info, rinfo, hold, biga)
-  @ccall libhsl.ma57od_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint},
-                        liw::Ref{Cint}, lrow::Ptr{Cint}, perm::Ptr{Cint}, nsteps::Ref{Cint},
-                        nstk::Ptr{Cint}, node::Ptr{Cint}, diag::Ptr{Float64}, schnab::Ptr{Float64},
-                        ppos::Ptr{Cint}, cntl::Ptr{Float64}, icntl::Ptr{Cint}, info::Ptr{Cint},
-                        rinfo::Ptr{Float64}, hold::Ptr{Cint}, biga::Ref{Float64})::Cvoid
-end
-
-function ma57od_64(n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk, node, diag, schnab, ppos, cntl,
-                   icntl, info, rinfo, hold, biga)
-  @ccall libhsl_subset_64.ma57od_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float64}, la::Ref{Int64},
-                                     iw::Ptr{Int64}, liw::Ref{Int64}, lrow::Ptr{Int64},
-                                     perm::Ptr{Int64}, nsteps::Ref{Int64}, nstk::Ptr{Int64},
-                                     node::Ptr{Int64}, diag::Ptr{Float64}, schnab::Ptr{Float64},
-                                     ppos::Ptr{Int64}, cntl::Ptr{Float64}, icntl::Ptr{Int64},
-                                     info::Ptr{Int64}, rinfo::Ptr{Float64}, hold::Ptr{Int64},
-                                     biga::Ref{Float64})::Cvoid
-end
-
-function ma57pd(a, iw, j1, j2, itop, real)
-  @ccall libhsl.ma57pd_(a::Ptr{Float64}, iw::Ptr{Cint}, j1::Ref{Cint}, j2::Ref{Cint},
-                        itop::Ref{Cint}, real::Ref{Cint})::Cvoid
-end
-
-function ma57pd_64(a, iw, j1, j2, itop, real)
-  @ccall libhsl_subset_64.ma57pd_64_(a::Ptr{Float64}, iw::Ptr{Int64}, j1::Ref{Int64},
-                                     j2::Ref{Int64}, itop::Ref{Int64}, real::Ref{Int64})::Cvoid
-end
-
-function ma57wd(a, la, iw, liw, nrlbdu)
-  @ccall libhsl.ma57wd_(a::Ptr{Float64}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                        nrlbdu::Ref{Cint})::Cvoid
-end
-
-function ma57wd_64(a, la, iw, liw, nrlbdu)
-  @ccall libhsl_subset_64.ma57wd_64_(a::Ptr{Float64}, la::Ref{Int64}, iw::Ptr{Int64},
-                                     liw::Ref{Int64}, nrlbdu::Ref{Int64})::Cvoid
-end
-
-function ma57xd(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl.ma57xd_(n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                        lifact::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint}, w::Ptr{Float64},
-                        lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57xd_64(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl_subset_64.ma57xd_64_(n::Ref{Int64}, fact::Ptr{Float64}, lfact::Ref{Int64},
-                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, rhs::Ptr{Float64},
-                                     lrhs::Ref{Int64}, w::Ptr{Float64}, lw::Ref{Int64},
-                                     iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57yd(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl.ma57yd_(n::Ref{Cint}, fact::Ptr{Float64}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                        lifact::Ref{Cint}, rhs::Ptr{Float64}, lrhs::Ref{Cint}, w::Ptr{Float64},
-                        lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57yd_64(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl_subset_64.ma57yd_64_(n::Ref{Int64}, fact::Ptr{Float64}, lfact::Ref{Int64},
-                                     ifact::Ptr{Int64}, lifact::Ref{Int64}, rhs::Ptr{Float64},
-                                     lrhs::Ref{Int64}, w::Ptr{Float64}, lw::Ref{Int64},
-                                     iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57vd(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl.ma57vd_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
-                        lw::Ref{Cint}, ipe::Ptr{Cint}, iq::Ptr{Cint}, flag::Ptr{Cint},
-                        iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma57vd_64(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl_subset_64.ma57vd_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64},
-                                     icn::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                     ipe::Ptr{Int64}, iq::Ptr{Int64}, flag::Ptr{Int64},
-                                     iwfr::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma57hd(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
-  @ccall libhsl.ma57hd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                        nv::Ptr{Cint}, nxt::Ptr{Cint}, lst::Ptr{Cint}, ipd::Ptr{Cint},
-                        flag::Ptr{Cint}, iovflo::Ref{Cint}, ncmpa::Ref{Cint},
-                        fratio::Ref{Float64})::Cvoid
-end
-
-function ma57hd_64(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
-  @ccall libhsl_subset_64.ma57hd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                     iwfr::Ref{Int64}, nv::Ptr{Int64}, nxt::Ptr{Int64},
-                                     lst::Ptr{Int64}, ipd::Ptr{Int64}, flag::Ptr{Int64},
-                                     iovflo::Ref{Int64}, ncmpa::Ref{Int64},
-                                     fratio::Ref{Float64})::Cvoid
-end
-
-function ma57zd(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl.ma57zd_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                        ncmpa::Ref{Cint})::Cvoid
-end
-
-function ma57zd_64(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl_subset_64.ma57zd_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                     iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
-end
-
-function ma57i(cntl, icntl)
-  @ccall libhsl.ma57i_(cntl::Ptr{Float32}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57i_64(cntl, icntl)
-  @ccall libhsl_subset_64.ma57i_64_(cntl::Ptr{Float32}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57a(n, ne, irn, jcn, lkeep, keep, iwork, icntl, info, rinfo)
-  @ccall libhsl.ma57a_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
-                       lkeep::Ref{Cint}, keep::Ptr{Cint}, iwork::Ptr{Cint}, icntl::Ptr{Cint},
-                       info::Ptr{Cint}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma57a_64(n, ne, irn, jcn, lkeep, keep, iwork, icntl, info, rinfo)
-  @ccall libhsl_subset_64.ma57a_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
-                                    lkeep::Ref{Int64}, keep::Ptr{Int64}, iwork::Ptr{Int64},
-                                    icntl::Ptr{Int64}, info::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma57b(n, ne, a, fact, lfact, ifact, lifact, lkeep, keep, ppos, icntl, cntl, info, rinfo)
-  @ccall libhsl.ma57b_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, fact::Ptr{Float32},
-                       lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint}, lkeep::Ref{Cint},
-                       keep::Ptr{Cint}, ppos::Ptr{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float32},
-                       info::Ptr{Cint}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma57b_64(n, ne, a, fact, lfact, ifact, lifact, lkeep, keep, ppos, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.ma57b_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32},
-                                    fact::Ptr{Float32}, lfact::Ref{Int64}, ifact::Ptr{Int64},
-                                    lifact::Ref{Int64}, lkeep::Ref{Int64}, keep::Ptr{Int64},
-                                    ppos::Ptr{Int64}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
-                                    info::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma57c(job, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl, info)
-  @ccall libhsl.ma57c_(job::Ref{Cint}, n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint},
-                       ifact::Ptr{Cint}, lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float32},
-                       lrhs::Ref{Cint}, w::Ptr{Float32}, lw::Ref{Cint}, iw1::Ptr{Cint},
-                       icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma57c_64(job, n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl, info)
-  @ccall libhsl_subset_64.ma57c_64_(job::Ref{Int64}, n::Ref{Int64}, fact::Ptr{Float32},
-                                    lfact::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
-                                    nrhs::Ref{Int64}, rhs::Ptr{Float32}, lrhs::Ref{Int64},
-                                    w::Ptr{Float32}, lw::Ref{Int64}, iw1::Ptr{Int64},
-                                    icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma57q(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl.ma57q_(n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                       lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint},
-                       w::Ptr{Float32}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57q_64(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl_subset_64.ma57q_64_(n::Ref{Int64}, fact::Ptr{Float32}, lfact::Ref{Int64},
-                                    ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
-                                    rhs::Ptr{Float32}, lrhs::Ref{Int64}, w::Ptr{Float32},
-                                    lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57r(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl.ma57r_(n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                       lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint},
-                       w::Ptr{Float32}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57r_64(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl_subset_64.ma57r_64_(n::Ref{Int64}, fact::Ptr{Float32}, lfact::Ref{Int64},
-                                    ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
-                                    rhs::Ptr{Float32}, lrhs::Ref{Int64}, w::Ptr{Float32},
-                                    lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57u(fact, lfact, ifact, lifact, icntl)
-  @ccall libhsl.ma57u_(fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint},
-                       icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57u_64(fact, lfact, ifact, lifact, icntl)
-  @ccall libhsl_subset_64.ma57u_64_(fact::Ptr{Float32}, lfact::Ref{Int64}, ifact::Ptr{Int64},
-                                    lifact::Ref{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57s(fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, icntl)
-  @ccall libhsl.ma57s_(fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint}, lifact::Ref{Cint},
-                       nrhs::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint}, w::Ptr{Float32},
-                       lw::Ref{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57s_64(fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, icntl)
-  @ccall libhsl_subset_64.ma57s_64_(fact::Ptr{Float32}, lfact::Ref{Int64}, ifact::Ptr{Int64},
-                                    lifact::Ref{Int64}, nrhs::Ref{Int64}, rhs::Ptr{Float32},
-                                    lrhs::Ref{Int64}, w::Ptr{Float32}, lw::Ref{Int64},
-                                    icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57t(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl.ma57t_(n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                       lifact::Ref{Cint}, nrhs::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint},
-                       w::Ptr{Float32}, lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57t_64(n, fact, lfact, ifact, lifact, nrhs, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl_subset_64.ma57t_64_(n::Ref{Int64}, fact::Ptr{Float32}, lfact::Ref{Int64},
-                                    ifact::Ptr{Int64}, lifact::Ref{Int64}, nrhs::Ref{Int64},
-                                    rhs::Ptr{Float32}, lrhs::Ref{Int64}, w::Ptr{Float32},
-                                    lw::Ref{Int64}, iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57d(job, n, ne, a, irn, jcn, fact, lfact, ifact, lifact, rhs, x, resid, w, iw, icntl,
-               cntl, info, rinfo)
-  @ccall libhsl.ma57d_(job::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, irn::Ptr{Cint},
-                       jcn::Ptr{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                       lifact::Ref{Cint}, rhs::Ptr{Float32}, x::Ptr{Float32}, resid::Ptr{Float32},
-                       w::Ptr{Float32}, iw::Ptr{Cint}, icntl::Ptr{Cint}, cntl::Ptr{Float32},
-                       info::Ptr{Cint}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma57d_64(job, n, ne, a, irn, jcn, fact, lfact, ifact, lifact, rhs, x, resid, w, iw, icntl,
-                  cntl, info, rinfo)
-  @ccall libhsl_subset_64.ma57d_64_(job::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32},
-                                    irn::Ptr{Int64}, jcn::Ptr{Int64}, fact::Ptr{Float32},
-                                    lfact::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
-                                    rhs::Ptr{Float32}, x::Ptr{Float32}, resid::Ptr{Float32},
-                                    w::Ptr{Float32}, iw::Ptr{Int64}, icntl::Ptr{Int64},
-                                    cntl::Ptr{Float32}, info::Ptr{Int64},
-                                    rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma57e(n, ic, keep, fact, lfact, newfac, lnew, ifact, lifact, newifc, linew, info)
-  @ccall libhsl.ma57e_(n::Ref{Cint}, ic::Ref{Cint}, keep::Ptr{Cint}, fact::Ptr{Float32},
-                       lfact::Ref{Cint}, newfac::Ptr{Float32}, lnew::Ref{Cint}, ifact::Ptr{Cint},
-                       lifact::Ref{Cint}, newifc::Ptr{Cint}, linew::Ref{Cint},
-                       info::Ptr{Cint})::Cvoid
-end
-
-function ma57e_64(n, ic, keep, fact, lfact, newfac, lnew, ifact, lifact, newifc, linew, info)
-  @ccall libhsl_subset_64.ma57e_64_(n::Ref{Int64}, ic::Ref{Int64}, keep::Ptr{Int64},
-                                    fact::Ptr{Float32}, lfact::Ref{Int64}, newfac::Ptr{Float32},
-                                    lnew::Ref{Int64}, ifact::Ptr{Int64}, lifact::Ref{Int64},
-                                    newifc::Ptr{Int64}, linew::Ref{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma57g(n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl, info)
-  @ccall libhsl.ma57g_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, iw::Ptr{Cint},
-                       ipe::Ptr{Cint}, count::Ptr{Cint}, flag::Ptr{Cint}, iwfr::Ref{Cint},
-                       icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma57g_64(n, ne, irn, jcn, iw, ipe, count, flag, iwfr, icntl, info)
-  @ccall libhsl_subset_64.ma57g_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
-                                    iw::Ptr{Int64}, ipe::Ptr{Int64}, count::Ptr{Int64},
-                                    flag::Ptr{Int64}, iwfr::Ref{Int64}, icntl::Ptr{Int64},
-                                    info::Ptr{Int64})::Cvoid
-end
-
-function ma57j(n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr, icntl, info)
-  @ccall libhsl.ma57j_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, perm::Ptr{Cint},
-                       iw::Ptr{Cint}, ipe::Ptr{Cint}, count::Ptr{Cint}, flag::Ptr{Cint},
-                       iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma57j_64(n, ne, irn, jcn, perm, iw, ipe, count, flag, iwfr, icntl, info)
-  @ccall libhsl_subset_64.ma57j_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
-                                    perm::Ptr{Int64}, iw::Ptr{Int64}, ipe::Ptr{Int64},
-                                    count::Ptr{Int64}, flag::Ptr{Int64}, iwfr::Ref{Int64},
-                                    icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function ma57k(n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
-  @ccall libhsl.ma57k_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                       perm::Ptr{Cint}, ips::Ptr{Cint}, nv::Ptr{Cint}, flag::Ptr{Cint},
-                       ncmpa::Ref{Cint})::Cvoid
-end
-
-function ma57k_64(n, ipe, iw, lw, iwfr, perm, ips, nv, flag, ncmpa)
-  @ccall libhsl_subset_64.ma57k_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                    iwfr::Ref{Int64}, perm::Ptr{Int64}, ips::Ptr{Int64},
-                                    nv::Ptr{Int64}, flag::Ptr{Int64}, ncmpa::Ref{Int64})::Cvoid
-end
-
-function ma57f(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl.ma57f_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                       ncmpa::Ref{Cint})::Cvoid
-end
-
-function ma57f_64(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl_subset_64.ma57f_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                    iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
-end
-
-function ma57l(n, ipe, nv, ips, ne, na, node, perm, nsteps, fils, frere, nd, nemin, subord)
-  @ccall libhsl.ma57l_(n::Ref{Cint}, ipe::Ptr{Cint}, nv::Ptr{Cint}, ips::Ptr{Cint}, ne::Ptr{Cint},
-                       na::Ptr{Cint}, node::Ptr{Cint}, perm::Ptr{Cint}, nsteps::Ref{Cint},
-                       fils::Ptr{Cint}, frere::Ptr{Cint}, nd::Ptr{Cint}, nemin::Ref{Cint},
-                       subord::Ptr{Cint})::Cvoid
-end
-
-function ma57l_64(n, ipe, nv, ips, ne, na, node, perm, nsteps, fils, frere, nd, nemin, subord)
-  @ccall libhsl_subset_64.ma57l_64_(n::Ref{Int64}, ipe::Ptr{Int64}, nv::Ptr{Int64}, ips::Ptr{Int64},
-                                    ne::Ptr{Int64}, na::Ptr{Int64}, node::Ptr{Int64},
-                                    perm::Ptr{Int64}, nsteps::Ref{Int64}, fils::Ptr{Int64},
-                                    frere::Ptr{Int64}, nd::Ptr{Int64}, nemin::Ref{Int64},
-                                    subord::Ptr{Int64})::Cvoid
-end
-
-function ma57m(n, ne, irn, jcn, map, irnprm, lrow, perm, count, idiag)
-  @ccall libhsl.ma57m_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, map::Ptr{Cint},
-                       irnprm::Ptr{Cint}, lrow::Ptr{Cint}, perm::Ptr{Cint}, count::Ptr{Cint},
-                       idiag::Ptr{Cint})::Cvoid
-end
-
-function ma57m_64(n, ne, irn, jcn, map, irnprm, lrow, perm, count, idiag)
-  @ccall libhsl_subset_64.ma57m_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
-                                    map::Ptr{Int64}, irnprm::Ptr{Int64}, lrow::Ptr{Int64},
-                                    perm::Ptr{Int64}, count::Ptr{Int64}, idiag::Ptr{Int64})::Cvoid
-end
-
-function ma57n(n, lenr, na, ne, nd, nsteps, lstki, lstkr, info, rinfo)
-  @ccall libhsl.ma57n_(n::Ref{Cint}, lenr::Ptr{Cint}, na::Ptr{Cint}, ne::Ptr{Cint}, nd::Ptr{Cint},
-                       nsteps::Ref{Cint}, lstki::Ptr{Cint}, lstkr::Ptr{Cint}, info::Ptr{Cint},
-                       rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma57n_64(n, lenr, na, ne, nd, nsteps, lstki, lstkr, info, rinfo)
-  @ccall libhsl_subset_64.ma57n_64_(n::Ref{Int64}, lenr::Ptr{Int64}, na::Ptr{Int64}, ne::Ptr{Int64},
-                                    nd::Ptr{Int64}, nsteps::Ref{Int64}, lstki::Ptr{Int64},
-                                    lstkr::Ptr{Int64}, info::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function ma57o(n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk, node, diag, schnab, ppos, cntl,
-               icntl, info, rinfo, hold, biga)
-  @ccall libhsl.ma57o_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint},
-                       liw::Ref{Cint}, lrow::Ptr{Cint}, perm::Ptr{Cint}, nsteps::Ref{Cint},
-                       nstk::Ptr{Cint}, node::Ptr{Cint}, diag::Ptr{Float32}, schnab::Ptr{Float32},
-                       ppos::Ptr{Cint}, cntl::Ptr{Float32}, icntl::Ptr{Cint}, info::Ptr{Cint},
-                       rinfo::Ptr{Float32}, hold::Ptr{Cint}, biga::Ref{Float32})::Cvoid
-end
-
-function ma57o_64(n, ne, a, la, iw, liw, lrow, perm, nsteps, nstk, node, diag, schnab, ppos, cntl,
-                  icntl, info, rinfo, hold, biga)
-  @ccall libhsl_subset_64.ma57o_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32}, la::Ref{Int64},
-                                    iw::Ptr{Int64}, liw::Ref{Int64}, lrow::Ptr{Int64},
-                                    perm::Ptr{Int64}, nsteps::Ref{Int64}, nstk::Ptr{Int64},
-                                    node::Ptr{Int64}, diag::Ptr{Float32}, schnab::Ptr{Float32},
-                                    ppos::Ptr{Int64}, cntl::Ptr{Float32}, icntl::Ptr{Int64},
-                                    info::Ptr{Int64}, rinfo::Ptr{Float32}, hold::Ptr{Int64},
-                                    biga::Ref{Float32})::Cvoid
-end
-
-function ma57p(a, iw, j1, j2, itop, real)
-  @ccall libhsl.ma57p_(a::Ptr{Float32}, iw::Ptr{Cint}, j1::Ref{Cint}, j2::Ref{Cint},
-                       itop::Ref{Cint}, real::Ref{Cint})::Cvoid
-end
-
-function ma57p_64(a, iw, j1, j2, itop, real)
-  @ccall libhsl_subset_64.ma57p_64_(a::Ptr{Float32}, iw::Ptr{Int64}, j1::Ref{Int64}, j2::Ref{Int64},
-                                    itop::Ref{Int64}, real::Ref{Int64})::Cvoid
-end
-
-function ma57w(a, la, iw, liw, nrlbdu)
-  @ccall libhsl.ma57w_(a::Ptr{Float32}, la::Ref{Cint}, iw::Ptr{Cint}, liw::Ref{Cint},
-                       nrlbdu::Ref{Cint})::Cvoid
-end
-
-function ma57w_64(a, la, iw, liw, nrlbdu)
-  @ccall libhsl_subset_64.ma57w_64_(a::Ptr{Float32}, la::Ref{Int64}, iw::Ptr{Int64},
-                                    liw::Ref{Int64}, nrlbdu::Ref{Int64})::Cvoid
-end
-
-function ma57x(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl.ma57x_(n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                       lifact::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint}, w::Ptr{Float32},
-                       lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57x_64(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl_subset_64.ma57x_64_(n::Ref{Int64}, fact::Ptr{Float32}, lfact::Ref{Int64},
-                                    ifact::Ptr{Int64}, lifact::Ref{Int64}, rhs::Ptr{Float32},
-                                    lrhs::Ref{Int64}, w::Ptr{Float32}, lw::Ref{Int64},
-                                    iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57y(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl.ma57y_(n::Ref{Cint}, fact::Ptr{Float32}, lfact::Ref{Cint}, ifact::Ptr{Cint},
-                       lifact::Ref{Cint}, rhs::Ptr{Float32}, lrhs::Ref{Cint}, w::Ptr{Float32},
-                       lw::Ref{Cint}, iw1::Ptr{Cint}, icntl::Ptr{Cint})::Cvoid
-end
-
-function ma57y_64(n, fact, lfact, ifact, lifact, rhs, lrhs, w, lw, iw1, icntl)
-  @ccall libhsl_subset_64.ma57y_64_(n::Ref{Int64}, fact::Ptr{Float32}, lfact::Ref{Int64},
-                                    ifact::Ptr{Int64}, lifact::Ref{Int64}, rhs::Ptr{Float32},
-                                    lrhs::Ref{Int64}, w::Ptr{Float32}, lw::Ref{Int64},
-                                    iw1::Ptr{Int64}, icntl::Ptr{Int64})::Cvoid
-end
-
-function ma57v(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl.ma57v_(n::Ref{Cint}, nz::Ref{Cint}, irn::Ptr{Cint}, icn::Ptr{Cint}, iw::Ptr{Cint},
-                       lw::Ref{Cint}, ipe::Ptr{Cint}, iq::Ptr{Cint}, flag::Ptr{Cint},
-                       iwfr::Ref{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function ma57v_64(n, nz, irn, icn, iw, lw, ipe, iq, flag, iwfr, icntl, info)
-  @ccall libhsl_subset_64.ma57v_64_(n::Ref{Int64}, nz::Ref{Int64}, irn::Ptr{Int64}, icn::Ptr{Int64},
-                                    iw::Ptr{Int64}, lw::Ref{Int64}, ipe::Ptr{Int64}, iq::Ptr{Int64},
-                                    flag::Ptr{Int64}, iwfr::Ref{Int64}, icntl::Ptr{Int64},
-                                    info::Ptr{Int64})::Cvoid
-end
-
-function ma57h(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
-  @ccall libhsl.ma57h_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                       nv::Ptr{Cint}, nxt::Ptr{Cint}, lst::Ptr{Cint}, ipd::Ptr{Cint},
-                       flag::Ptr{Cint}, iovflo::Ref{Cint}, ncmpa::Ref{Cint},
-                       fratio::Ref{Float32})::Cvoid
-end
-
-function ma57h_64(n, ipe, iw, lw, iwfr, nv, nxt, lst, ipd, flag, iovflo, ncmpa, fratio)
-  @ccall libhsl_subset_64.ma57h_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                    iwfr::Ref{Int64}, nv::Ptr{Int64}, nxt::Ptr{Int64},
-                                    lst::Ptr{Int64}, ipd::Ptr{Int64}, flag::Ptr{Int64},
-                                    iovflo::Ref{Int64}, ncmpa::Ref{Int64},
-                                    fratio::Ref{Float32})::Cvoid
-end
-
-function ma57z(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl.ma57z_(n::Ref{Cint}, ipe::Ptr{Cint}, iw::Ptr{Cint}, lw::Ref{Cint}, iwfr::Ref{Cint},
-                       ncmpa::Ref{Cint})::Cvoid
-end
-
-function ma57z_64(n, ipe, iw, lw, iwfr, ncmpa)
-  @ccall libhsl_subset_64.ma57z_64_(n::Ref{Int64}, ipe::Ptr{Int64}, iw::Ptr{Int64}, lw::Ref{Int64},
-                                    iwfr::Ref{Int64}, ncmpa::Ref{Int64})::Cvoid
-end
diff --git a/src/Fortran/ma61.jl b/src/Fortran/ma61.jl
deleted file mode 100644
index ae59eee..0000000
--- a/src/Fortran/ma61.jl
+++ /dev/null
@@ -1,230 +0,0 @@
-function ma61id(icntl, cntl, keep)
-  @ccall libhsl.ma61id_(icntl::Ptr{Cint}, cntl::Ptr{Float64}, keep::Ptr{Cint})::Cvoid
-end
-
-function ma61id_64(icntl, cntl, keep)
-  @ccall libhsl_subset_64.ma61id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64}, keep::Ptr{Int64})::Cvoid
-end
-
-function ma61ad(n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl, cntl, info, keep)
-  @ccall libhsl.ma61ad_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, ini::Ptr{Cint},
-                        inj::Ptr{Cint}, iai::Ref{Cint}, iaj::Ref{Cint}, ik::Ptr{Cint},
-                        iw::Ptr{Cint}, w::Ptr{Float64}, c::Ref{Float64}, icntl::Ptr{Cint},
-                        cntl::Ptr{Float64}, info::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
-end
-
-function ma61ad_64(n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl, cntl, info, keep)
-  @ccall libhsl_subset_64.ma61ad_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64},
-                                     ini::Ptr{Int64}, inj::Ptr{Int64}, iai::Ref{Int64},
-                                     iaj::Ref{Int64}, ik::Ptr{Int64}, iw::Ptr{Int64},
-                                     w::Ptr{Float64}, c::Ref{Float64}, icntl::Ptr{Int64},
-                                     cntl::Ptr{Float64}, info::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
-end
-
-function ma61cd(n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w, iflag, c, icntl, cntl, keep)
-  @ccall libhsl.ma61cd_(n::Ref{Cint}, nz::Ref{Cint}, d::Ptr{Float64}, a::Ptr{Float64},
-                        ini::Ptr{Cint}, inj::Ptr{Cint}, iai::Ref{Cint}, iaj::Ref{Cint},
-                        ik::Ptr{Cint}, ip::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float64},
-                        iflag::Ref{Cint}, c::Ref{Float64}, icntl::Ptr{Cint}, cntl::Ptr{Float64},
-                        keep::Ptr{Cint})::Cvoid
-end
-
-function ma61cd_64(n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w, iflag, c, icntl, cntl, keep)
-  @ccall libhsl_subset_64.ma61cd_64_(n::Ref{Int64}, nz::Ref{Int64}, d::Ptr{Float64},
-                                     a::Ptr{Float64}, ini::Ptr{Int64}, inj::Ptr{Int64},
-                                     iai::Ref{Int64}, iaj::Ref{Int64}, ik::Ptr{Int64},
-                                     ip::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float64},
-                                     iflag::Ref{Int64}, c::Ref{Float64}, icntl::Ptr{Int64},
-                                     cntl::Ptr{Float64}, keep::Ptr{Int64})::Cvoid
-end
-
-function ma61dd(a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
-  @ccall libhsl.ma61dd_(a::Ptr{Float64}, irn::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ik::Ptr{Cint},
-                        ip::Ptr{Cint}, row::Ref{Cint}, ncp::Ref{Cint}, nucl::Ref{Cint},
-                        nual::Ref{Cint})::Cvoid
-end
-
-function ma61dd_64(a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
-  @ccall libhsl_subset_64.ma61dd_64_(a::Ptr{Float64}, irn::Ptr{Int64}, ia::Ref{Int64},
-                                     n::Ref{Int64}, ik::Ptr{Int64}, ip::Ptr{Int64}, row::Ref{Int64},
-                                     ncp::Ref{Int64}, nucl::Ref{Int64}, nual::Ref{Int64})::Cvoid
-end
-
-function ma61ed(in1, in2, nz, ip, n, a)
-  @ccall libhsl.ma61ed_(in1::Ptr{Cint}, in2::Ptr{Cint}, nz::Ref{Cint}, ip::Ptr{Cint}, n::Ref{Cint},
-                        a::Ptr{Float64})::Cvoid
-end
-
-function ma61ed_64(in1, in2, nz, ip, n, a)
-  @ccall libhsl_subset_64.ma61ed_64_(in1::Ptr{Int64}, in2::Ptr{Int64}, nz::Ref{Int64},
-                                     ip::Ptr{Int64}, n::Ref{Int64}, a::Ptr{Float64})::Cvoid
-end
-
-function ma61gd(n, a, inj, iaj, d, ik, b, lrow)
-  @ccall libhsl.ma61gd_(n::Ref{Cint}, a::Ptr{Float64}, inj::Ptr{Cint}, iaj::Ref{Cint},
-                        d::Ptr{Float64}, ik::Ptr{Cint}, b::Ptr{Float64}, lrow::Ref{Cint})::Cvoid
-end
-
-function ma61gd_64(n, a, inj, iaj, d, ik, b, lrow)
-  @ccall libhsl_subset_64.ma61gd_64_(n::Ref{Int64}, a::Ptr{Float64}, inj::Ptr{Int64},
-                                     iaj::Ref{Int64}, d::Ptr{Float64}, ik::Ptr{Int64},
-                                     b::Ptr{Float64}, lrow::Ref{Int64})::Cvoid
-end
-
-function ma61bd(n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps, icntl, info, keep)
-  @ccall libhsl.ma61bd_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, ini::Ptr{Cint},
-                        inj::Ptr{Cint}, iaj::Ref{Cint}, ik::Ptr{Cint}, b::Ptr{Float64},
-                        w::Ptr{Float64}, w1::Ptr{Float64}, kmax::Ptr{Cint}, eps::Ptr{Float64},
-                        icntl::Ptr{Cint}, info::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
-end
-
-function ma61bd_64(n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps, icntl, info, keep)
-  @ccall libhsl_subset_64.ma61bd_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64},
-                                     ini::Ptr{Int64}, inj::Ptr{Int64}, iaj::Ref{Int64},
-                                     ik::Ptr{Int64}, b::Ptr{Float64}, w::Ptr{Float64},
-                                     w1::Ptr{Float64}, kmax::Ptr{Int64}, eps::Ptr{Float64},
-                                     icntl::Ptr{Int64}, info::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
-end
-
-function ma61fd(n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e, f, g, kmax, eps, lrow)
-  @ccall libhsl.ma61fd_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float64}, ini::Ptr{Cint},
-                        inj::Ptr{Cint}, iaf::Ref{Cint}, af::Ptr{Float64}, df::Ptr{Float64},
-                        injf::Ptr{Cint}, ik::Ptr{Cint}, b::Ptr{Float64}, r::Ptr{Float64},
-                        e::Ptr{Float64}, f::Ptr{Float64}, g::Ptr{Float64}, kmax::Ref{Cint},
-                        eps::Ref{Float64}, lrow::Ref{Cint})::Cvoid
-end
-
-function ma61fd_64(n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e, f, g, kmax, eps, lrow)
-  @ccall libhsl_subset_64.ma61fd_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float64},
-                                     ini::Ptr{Int64}, inj::Ptr{Int64}, iaf::Ref{Int64},
-                                     af::Ptr{Float64}, df::Ptr{Float64}, injf::Ptr{Int64},
-                                     ik::Ptr{Int64}, b::Ptr{Float64}, r::Ptr{Float64},
-                                     e::Ptr{Float64}, f::Ptr{Float64}, g::Ptr{Float64},
-                                     kmax::Ref{Int64}, eps::Ref{Float64}, lrow::Ref{Int64})::Cvoid
-end
-
-function ma61hd(a, ini, inj, nz, n, b, z)
-  @ccall libhsl.ma61hd_(a::Ptr{Float64}, ini::Ptr{Cint}, inj::Ptr{Cint}, nz::Ref{Cint},
-                        n::Ref{Cint}, b::Ptr{Float64}, z::Ptr{Float64})::Cvoid
-end
-
-function ma61hd_64(a, ini, inj, nz, n, b, z)
-  @ccall libhsl_subset_64.ma61hd_64_(a::Ptr{Float64}, ini::Ptr{Int64}, inj::Ptr{Int64},
-                                     nz::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float64},
-                                     z::Ptr{Float64})::Cvoid
-end
-
-function ma61i(icntl, cntl, keep)
-  @ccall libhsl.ma61i_(icntl::Ptr{Cint}, cntl::Ptr{Float32}, keep::Ptr{Cint})::Cvoid
-end
-
-function ma61i_64(icntl, cntl, keep)
-  @ccall libhsl_subset_64.ma61i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32}, keep::Ptr{Int64})::Cvoid
-end
-
-function ma61a(n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl, cntl, info, keep)
-  @ccall libhsl.ma61a_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, ini::Ptr{Cint}, inj::Ptr{Cint},
-                       iai::Ref{Cint}, iaj::Ref{Cint}, ik::Ptr{Cint}, iw::Ptr{Cint},
-                       w::Ptr{Float32}, c::Ref{Float32}, icntl::Ptr{Cint}, cntl::Ptr{Float32},
-                       info::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
-end
-
-function ma61a_64(n, nz, a, ini, inj, iai, iaj, ik, iw, w, c, icntl, cntl, info, keep)
-  @ccall libhsl_subset_64.ma61a_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32}, ini::Ptr{Int64},
-                                    inj::Ptr{Int64}, iai::Ref{Int64}, iaj::Ref{Int64},
-                                    ik::Ptr{Int64}, iw::Ptr{Int64}, w::Ptr{Float32},
-                                    c::Ref{Float32}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
-                                    info::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
-end
-
-function ma61c(n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w, iflag, c, icntl, cntl, keep)
-  @ccall libhsl.ma61c_(n::Ref{Cint}, nz::Ref{Cint}, d::Ptr{Float32}, a::Ptr{Float32},
-                       ini::Ptr{Cint}, inj::Ptr{Cint}, iai::Ref{Cint}, iaj::Ref{Cint},
-                       ik::Ptr{Cint}, ip::Ptr{Cint}, iw::Ptr{Cint}, w::Ptr{Float32},
-                       iflag::Ref{Cint}, c::Ref{Float32}, icntl::Ptr{Cint}, cntl::Ptr{Float32},
-                       keep::Ptr{Cint})::Cvoid
-end
-
-function ma61c_64(n, nz, d, a, ini, inj, iai, iaj, ik, ip, iw, w, iflag, c, icntl, cntl, keep)
-  @ccall libhsl_subset_64.ma61c_64_(n::Ref{Int64}, nz::Ref{Int64}, d::Ptr{Float32}, a::Ptr{Float32},
-                                    ini::Ptr{Int64}, inj::Ptr{Int64}, iai::Ref{Int64},
-                                    iaj::Ref{Int64}, ik::Ptr{Int64}, ip::Ptr{Int64}, iw::Ptr{Int64},
-                                    w::Ptr{Float32}, iflag::Ref{Int64}, c::Ref{Float32},
-                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, keep::Ptr{Int64})::Cvoid
-end
-
-function ma61d(a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
-  @ccall libhsl.ma61d_(a::Ptr{Float32}, irn::Ptr{Cint}, ia::Ref{Cint}, n::Ref{Cint}, ik::Ptr{Cint},
-                       ip::Ptr{Cint}, row::Ref{Cint}, ncp::Ref{Cint}, nucl::Ref{Cint},
-                       nual::Ref{Cint})::Cvoid
-end
-
-function ma61d_64(a, irn, ia, n, ik, ip, row, ncp, nucl, nual)
-  @ccall libhsl_subset_64.ma61d_64_(a::Ptr{Float32}, irn::Ptr{Int64}, ia::Ref{Int64}, n::Ref{Int64},
-                                    ik::Ptr{Int64}, ip::Ptr{Int64}, row::Ref{Int64},
-                                    ncp::Ref{Int64}, nucl::Ref{Int64}, nual::Ref{Int64})::Cvoid
-end
-
-function ma61e(in1, in2, nz, ip, n, a)
-  @ccall libhsl.ma61e_(in1::Ptr{Cint}, in2::Ptr{Cint}, nz::Ref{Cint}, ip::Ptr{Cint}, n::Ref{Cint},
-                       a::Ptr{Float32})::Cvoid
-end
-
-function ma61e_64(in1, in2, nz, ip, n, a)
-  @ccall libhsl_subset_64.ma61e_64_(in1::Ptr{Int64}, in2::Ptr{Int64}, nz::Ref{Int64},
-                                    ip::Ptr{Int64}, n::Ref{Int64}, a::Ptr{Float32})::Cvoid
-end
-
-function ma61g(n, a, inj, iaj, d, ik, b, lrow)
-  @ccall libhsl.ma61g_(n::Ref{Cint}, a::Ptr{Float32}, inj::Ptr{Cint}, iaj::Ref{Cint},
-                       d::Ptr{Float32}, ik::Ptr{Cint}, b::Ptr{Float32}, lrow::Ref{Cint})::Cvoid
-end
-
-function ma61g_64(n, a, inj, iaj, d, ik, b, lrow)
-  @ccall libhsl_subset_64.ma61g_64_(n::Ref{Int64}, a::Ptr{Float32}, inj::Ptr{Int64},
-                                    iaj::Ref{Int64}, d::Ptr{Float32}, ik::Ptr{Int64},
-                                    b::Ptr{Float32}, lrow::Ref{Int64})::Cvoid
-end
-
-function ma61b(n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps, icntl, info, keep)
-  @ccall libhsl.ma61b_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, ini::Ptr{Cint}, inj::Ptr{Cint},
-                       iaj::Ref{Cint}, ik::Ptr{Cint}, b::Ptr{Float32}, w::Ptr{Float32},
-                       w1::Ptr{Float32}, kmax::Ptr{Cint}, eps::Ptr{Float32}, icntl::Ptr{Cint},
-                       info::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
-end
-
-function ma61b_64(n, nz, a, ini, inj, iaj, ik, b, w, w1, kmax, eps, icntl, info, keep)
-  @ccall libhsl_subset_64.ma61b_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32}, ini::Ptr{Int64},
-                                    inj::Ptr{Int64}, iaj::Ref{Int64}, ik::Ptr{Int64},
-                                    b::Ptr{Float32}, w::Ptr{Float32}, w1::Ptr{Float32},
-                                    kmax::Ptr{Int64}, eps::Ptr{Float32}, icntl::Ptr{Int64},
-                                    info::Ptr{Int64}, keep::Ptr{Int64})::Cvoid
-end
-
-function ma61f(n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e, f, g, kmax, eps, lrow)
-  @ccall libhsl.ma61f_(n::Ref{Cint}, nz::Ref{Cint}, a::Ptr{Float32}, ini::Ptr{Cint}, inj::Ptr{Cint},
-                       iaf::Ref{Cint}, af::Ptr{Float32}, df::Ptr{Float32}, injf::Ptr{Cint},
-                       ik::Ptr{Cint}, b::Ptr{Float32}, r::Ptr{Float32}, e::Ptr{Float32},
-                       f::Ptr{Float32}, g::Ptr{Float32}, kmax::Ref{Cint}, eps::Ref{Float32},
-                       lrow::Ref{Cint})::Cvoid
-end
-
-function ma61f_64(n, nz, a, ini, inj, iaf, af, df, injf, ik, b, r, e, f, g, kmax, eps, lrow)
-  @ccall libhsl_subset_64.ma61f_64_(n::Ref{Int64}, nz::Ref{Int64}, a::Ptr{Float32}, ini::Ptr{Int64},
-                                    inj::Ptr{Int64}, iaf::Ref{Int64}, af::Ptr{Float32},
-                                    df::Ptr{Float32}, injf::Ptr{Int64}, ik::Ptr{Int64},
-                                    b::Ptr{Float32}, r::Ptr{Float32}, e::Ptr{Float32},
-                                    f::Ptr{Float32}, g::Ptr{Float32}, kmax::Ref{Int64},
-                                    eps::Ref{Float32}, lrow::Ref{Int64})::Cvoid
-end
-
-function ma61h(a, ini, inj, nz, n, b, z)
-  @ccall libhsl.ma61h_(a::Ptr{Float32}, ini::Ptr{Cint}, inj::Ptr{Cint}, nz::Ref{Cint}, n::Ref{Cint},
-                       b::Ptr{Float32}, z::Ptr{Float32})::Cvoid
-end
-
-function ma61h_64(a, ini, inj, nz, n, b, z)
-  @ccall libhsl_subset_64.ma61h_64_(a::Ptr{Float32}, ini::Ptr{Int64}, inj::Ptr{Int64},
-                                    nz::Ref{Int64}, n::Ref{Int64}, b::Ptr{Float32},
-                                    z::Ptr{Float32})::Cvoid
-end
diff --git a/src/Fortran/mc13.jl b/src/Fortran/mc13.jl
deleted file mode 100644
index 4685a04..0000000
--- a/src/Fortran/mc13.jl
+++ /dev/null
@@ -1,49 +0,0 @@
-function mc13dd(n, icn, licn, ip, lenr, ior, ib, num, iw)
-  @ccall libhsl.mc13dd_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
-                        lenr::Ptr{Cint}, ior::Ptr{Cint}, ib::Ptr{Cint}, num::Ref{Cint},
-                        iw::Ptr{Cint})::Cvoid
-end
-
-function mc13dd_64(n, icn, licn, ip, lenr, ior, ib, num, iw)
-  @ccall libhsl_subset_64.mc13dd_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
-                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, ior::Ptr{Int64},
-                                     ib::Ptr{Int64}, num::Ref{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
-function mc13ed(n, icn, licn, ip, lenr, arp, ib, num, lowl, numb, prev)
-  @ccall libhsl.mc13ed_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
-                        lenr::Ptr{Cint}, arp::Ptr{Cint}, ib::Ptr{Cint}, num::Ref{Cint},
-                        lowl::Ptr{Cint}, numb::Ptr{Cint}, prev::Ptr{Cint})::Cvoid
-end
-
-function mc13ed_64(n, icn, licn, ip, lenr, arp, ib, num, lowl, numb, prev)
-  @ccall libhsl_subset_64.mc13ed_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
-                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, arp::Ptr{Int64},
-                                     ib::Ptr{Int64}, num::Ref{Int64}, lowl::Ptr{Int64},
-                                     numb::Ptr{Int64}, prev::Ptr{Int64})::Cvoid
-end
-
-function mc13d(n, icn, licn, ip, lenr, ior, ib, num, iw)
-  @ccall libhsl.mc13d_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
-                       lenr::Ptr{Cint}, ior::Ptr{Cint}, ib::Ptr{Cint}, num::Ref{Cint},
-                       iw::Ptr{Cint})::Cvoid
-end
-
-function mc13d_64(n, icn, licn, ip, lenr, ior, ib, num, iw)
-  @ccall libhsl_subset_64.mc13d_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
-                                    ip::Ptr{Int64}, lenr::Ptr{Int64}, ior::Ptr{Int64},
-                                    ib::Ptr{Int64}, num::Ref{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
-function mc13e(n, icn, licn, ip, lenr, arp, ib, num, lowl, numb, prev)
-  @ccall libhsl.mc13e_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
-                       lenr::Ptr{Cint}, arp::Ptr{Cint}, ib::Ptr{Cint}, num::Ref{Cint},
-                       lowl::Ptr{Cint}, numb::Ptr{Cint}, prev::Ptr{Cint})::Cvoid
-end
-
-function mc13e_64(n, icn, licn, ip, lenr, arp, ib, num, lowl, numb, prev)
-  @ccall libhsl_subset_64.mc13e_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
-                                    ip::Ptr{Int64}, lenr::Ptr{Int64}, arp::Ptr{Int64},
-                                    ib::Ptr{Int64}, num::Ref{Int64}, lowl::Ptr{Int64},
-                                    numb::Ptr{Int64}, prev::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc19.jl b/src/Fortran/mc19.jl
deleted file mode 100644
index 5937975..0000000
--- a/src/Fortran/mc19.jl
+++ /dev/null
@@ -1,21 +0,0 @@
-function mc19ad(n, na, a, irn, icn, r, c, w)
-  @ccall libhsl.mc19ad_(n::Ref{Cint}, na::Ref{Cint}, a::Ptr{Float64}, irn::Ptr{Cint},
-                        icn::Ptr{Cint}, r::Ptr{Float32}, c::Ptr{Float32}, w::Ptr{Float32})::Cvoid
-end
-
-function mc19ad_64(n, na, a, irn, icn, r, c, w)
-  @ccall libhsl_subset_64.mc19ad_64_(n::Ref{Int64}, na::Ref{Int64}, a::Ptr{Float64},
-                                     irn::Ptr{Int64}, icn::Ptr{Int64}, r::Ptr{Float32},
-                                     c::Ptr{Float32}, w::Ptr{Float32})::Cvoid
-end
-
-function mc19a(n, na, a, irn, icn, r, c, w)
-  @ccall libhsl.mc19a_(n::Ref{Cint}, na::Ref{Cint}, a::Ptr{Float32}, irn::Ptr{Cint}, icn::Ptr{Cint},
-                       r::Ptr{Float32}, c::Ptr{Float32}, w::Ptr{Float32})::Cvoid
-end
-
-function mc19a_64(n, na, a, irn, icn, r, c, w)
-  @ccall libhsl_subset_64.mc19a_64_(n::Ref{Int64}, na::Ref{Int64}, a::Ptr{Float32}, irn::Ptr{Int64},
-                                    icn::Ptr{Int64}, r::Ptr{Float32}, c::Ptr{Float32},
-                                    w::Ptr{Float32})::Cvoid
-end
diff --git a/src/Fortran/mc20.jl b/src/Fortran/mc20.jl
deleted file mode 100644
index 3adc959..0000000
--- a/src/Fortran/mc20.jl
+++ /dev/null
@@ -1,41 +0,0 @@
-function mc20ad(nc, maxa, a, inum, jptr, jnum, jdisp)
-  @ccall libhsl.mc20ad_(nc::Ref{Cint}, maxa::Ref{Cint}, a::Ptr{Float64}, inum::Ptr{Cint},
-                        jptr::Ptr{Cint}, jnum::Ptr{Cint}, jdisp::Ref{Cint})::Cvoid
-end
-
-function mc20ad_64(nc, maxa, a, inum, jptr, jnum, jdisp)
-  @ccall libhsl_subset_64.mc20ad_64_(nc::Ref{Int64}, maxa::Ref{Int64}, a::Ptr{Float64},
-                                     inum::Ptr{Int64}, jptr::Ptr{Int64}, jnum::Ptr{Int64},
-                                     jdisp::Ref{Int64})::Cvoid
-end
-
-function mc20bd(nc, maxa, a, inum, jptr)
-  @ccall libhsl.mc20bd_(nc::Ref{Cint}, maxa::Ref{Cint}, a::Ptr{Float64}, inum::Ptr{Cint},
-                        jptr::Ptr{Cint})::Cvoid
-end
-
-function mc20bd_64(nc, maxa, a, inum, jptr)
-  @ccall libhsl_subset_64.mc20bd_64_(nc::Ref{Int64}, maxa::Ref{Int64}, a::Ptr{Float64},
-                                     inum::Ptr{Int64}, jptr::Ptr{Int64})::Cvoid
-end
-
-function mc20a(nc, maxa, a, inum, jptr, jnum, jdisp)
-  @ccall libhsl.mc20a_(nc::Ref{Cint}, maxa::Ref{Cint}, a::Ptr{Float32}, inum::Ptr{Cint},
-                       jptr::Ptr{Cint}, jnum::Ptr{Cint}, jdisp::Ref{Cint})::Cvoid
-end
-
-function mc20a_64(nc, maxa, a, inum, jptr, jnum, jdisp)
-  @ccall libhsl_subset_64.mc20a_64_(nc::Ref{Int64}, maxa::Ref{Int64}, a::Ptr{Float32},
-                                    inum::Ptr{Int64}, jptr::Ptr{Int64}, jnum::Ptr{Int64},
-                                    jdisp::Ref{Int64})::Cvoid
-end
-
-function mc20b(nc, maxa, a, inum, jptr)
-  @ccall libhsl.mc20b_(nc::Ref{Cint}, maxa::Ref{Cint}, a::Ptr{Float32}, inum::Ptr{Cint},
-                       jptr::Ptr{Cint})::Cvoid
-end
-
-function mc20b_64(nc, maxa, a, inum, jptr)
-  @ccall libhsl_subset_64.mc20b_64_(nc::Ref{Int64}, maxa::Ref{Int64}, a::Ptr{Float32},
-                                    inum::Ptr{Int64}, jptr::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc21.jl b/src/Fortran/mc21.jl
deleted file mode 100644
index e7cfd38..0000000
--- a/src/Fortran/mc21.jl
+++ /dev/null
@@ -1,47 +0,0 @@
-function mc21ad(n, icn, licn, ip, lenr, iperm, numnz, iw)
-  @ccall libhsl.mc21ad_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
-                        lenr::Ptr{Cint}, iperm::Ptr{Cint}, numnz::Ref{Cint}, iw::Ptr{Cint})::Cvoid
-end
-
-function mc21ad_64(n, icn, licn, ip, lenr, iperm, numnz, iw)
-  @ccall libhsl_subset_64.mc21ad_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
-                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, iperm::Ptr{Int64},
-                                     numnz::Ref{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
-function mc21bd(n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv, out)
-  @ccall libhsl.mc21bd_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
-                        lenr::Ptr{Cint}, iperm::Ptr{Cint}, numnz::Ref{Cint}, pr::Ptr{Cint},
-                        arp::Ptr{Cint}, cv::Ptr{Cint}, out::Ptr{Cint})::Cvoid
-end
-
-function mc21bd_64(n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv, out)
-  @ccall libhsl_subset_64.mc21bd_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
-                                     ip::Ptr{Int64}, lenr::Ptr{Int64}, iperm::Ptr{Int64},
-                                     numnz::Ref{Int64}, pr::Ptr{Int64}, arp::Ptr{Int64},
-                                     cv::Ptr{Int64}, out::Ptr{Int64})::Cvoid
-end
-
-function mc21a(n, icn, licn, ip, lenr, iperm, numnz, iw)
-  @ccall libhsl.mc21a_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
-                       lenr::Ptr{Cint}, iperm::Ptr{Cint}, numnz::Ref{Cint}, iw::Ptr{Cint})::Cvoid
-end
-
-function mc21a_64(n, icn, licn, ip, lenr, iperm, numnz, iw)
-  @ccall libhsl_subset_64.mc21a_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
-                                    ip::Ptr{Int64}, lenr::Ptr{Int64}, iperm::Ptr{Int64},
-                                    numnz::Ref{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
-function mc21b(n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv, out)
-  @ccall libhsl.mc21b_(n::Ref{Cint}, icn::Ptr{Cint}, licn::Ref{Cint}, ip::Ptr{Cint},
-                       lenr::Ptr{Cint}, iperm::Ptr{Cint}, numnz::Ref{Cint}, pr::Ptr{Cint},
-                       arp::Ptr{Cint}, cv::Ptr{Cint}, out::Ptr{Cint})::Cvoid
-end
-
-function mc21b_64(n, icn, licn, ip, lenr, iperm, numnz, pr, arp, cv, out)
-  @ccall libhsl_subset_64.mc21b_64_(n::Ref{Int64}, icn::Ptr{Int64}, licn::Ref{Int64},
-                                    ip::Ptr{Int64}, lenr::Ptr{Int64}, iperm::Ptr{Int64},
-                                    numnz::Ref{Int64}, pr::Ptr{Int64}, arp::Ptr{Int64},
-                                    cv::Ptr{Int64}, out::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc23.jl b/src/Fortran/mc23.jl
deleted file mode 100644
index 889633f..0000000
--- a/src/Fortran/mc23.jl
+++ /dev/null
@@ -1,25 +0,0 @@
-function mc23ad(n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw, iw1)
-  @ccall libhsl.mc23ad_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
-                        lenr::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint}, iq::Ptr{Cint},
-                        lenoff::Ptr{Cint}, iw::Ptr{Cint}, iw1::Ptr{Cint})::Cvoid
-end
-
-function mc23ad_64(n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw, iw1)
-  @ccall libhsl_subset_64.mc23ad_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
-                                     licn::Ref{Int64}, lenr::Ptr{Int64}, idisp::Ptr{Int64},
-                                     ip::Ptr{Int64}, iq::Ptr{Int64}, lenoff::Ptr{Int64},
-                                     iw::Ptr{Int64}, iw1::Ptr{Int64})::Cvoid
-end
-
-function mc23a(n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw, iw1)
-  @ccall libhsl.mc23a_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
-                       lenr::Ptr{Cint}, idisp::Ptr{Cint}, ip::Ptr{Cint}, iq::Ptr{Cint},
-                       lenoff::Ptr{Cint}, iw::Ptr{Cint}, iw1::Ptr{Cint})::Cvoid
-end
-
-function mc23a_64(n, icn, a, licn, lenr, idisp, ip, iq, lenoff, iw, iw1)
-  @ccall libhsl_subset_64.mc23a_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
-                                    licn::Ref{Int64}, lenr::Ptr{Int64}, idisp::Ptr{Int64},
-                                    ip::Ptr{Int64}, iq::Ptr{Int64}, lenoff::Ptr{Int64},
-                                    iw::Ptr{Int64}, iw1::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc24.jl b/src/Fortran/mc24.jl
deleted file mode 100644
index 25290f8..0000000
--- a/src/Fortran/mc24.jl
+++ /dev/null
@@ -1,21 +0,0 @@
-function mc24ad(n, icn, a, licn, lenr, lenrl, w)
-  @ccall libhsl.mc24ad_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float64}, licn::Ref{Cint},
-                        lenr::Ptr{Cint}, lenrl::Ptr{Cint}, w::Ptr{Float64})::Cvoid
-end
-
-function mc24ad_64(n, icn, a, licn, lenr, lenrl, w)
-  @ccall libhsl_subset_64.mc24ad_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float64},
-                                     licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                     w::Ptr{Float64})::Cvoid
-end
-
-function mc24a(n, icn, a, licn, lenr, lenrl, w)
-  @ccall libhsl.mc24a_(n::Ref{Cint}, icn::Ptr{Cint}, a::Ptr{Float32}, licn::Ref{Cint},
-                       lenr::Ptr{Cint}, lenrl::Ptr{Cint}, w::Ptr{Float32})::Cvoid
-end
-
-function mc24a_64(n, icn, a, licn, lenr, lenrl, w)
-  @ccall libhsl_subset_64.mc24a_64_(n::Ref{Int64}, icn::Ptr{Int64}, a::Ptr{Float32},
-                                    licn::Ref{Int64}, lenr::Ptr{Int64}, lenrl::Ptr{Int64},
-                                    w::Ptr{Float32})::Cvoid
-end
diff --git a/src/Fortran/mc29.jl b/src/Fortran/mc29.jl
deleted file mode 100644
index b79afeb..0000000
--- a/src/Fortran/mc29.jl
+++ /dev/null
@@ -1,25 +0,0 @@
-function mc29ad(m, n, ne, a, irn, icn, r, c, w, lp, ifail)
-  @ccall libhsl.mc29ad_(m::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64}, irn::Ptr{Cint},
-                        icn::Ptr{Cint}, r::Ptr{Float64}, c::Ptr{Float64}, w::Ptr{Float64},
-                        lp::Ref{Cint}, ifail::Ref{Cint})::Cvoid
-end
-
-function mc29ad_64(m, n, ne, a, irn, icn, r, c, w, lp, ifail)
-  @ccall libhsl_subset_64.mc29ad_64_(m::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float64},
-                                     irn::Ptr{Int64}, icn::Ptr{Int64}, r::Ptr{Float64},
-                                     c::Ptr{Float64}, w::Ptr{Float64}, lp::Ref{Int64},
-                                     ifail::Ref{Int64})::Cvoid
-end
-
-function mc29a(m, n, ne, a, irn, icn, r, c, w, lp, ifail)
-  @ccall libhsl.mc29a_(m::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, irn::Ptr{Cint},
-                       icn::Ptr{Cint}, r::Ptr{Float32}, c::Ptr{Float32}, w::Ptr{Float32},
-                       lp::Ref{Cint}, ifail::Ref{Cint})::Cvoid
-end
-
-function mc29a_64(m, n, ne, a, irn, icn, r, c, w, lp, ifail)
-  @ccall libhsl_subset_64.mc29a_64_(m::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32},
-                                    irn::Ptr{Int64}, icn::Ptr{Int64}, r::Ptr{Float32},
-                                    c::Ptr{Float32}, w::Ptr{Float32}, lp::Ref{Int64},
-                                    ifail::Ref{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc30.jl b/src/Fortran/mc30.jl
deleted file mode 100644
index ded5cc6..0000000
--- a/src/Fortran/mc30.jl
+++ /dev/null
@@ -1,22 +0,0 @@
-function mc30ad(n, ne, a, irn, icn, s, w, lp, ifail)
-  @ccall libhsl.mc30ad_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64}, irn::Ptr{Cint},
-                        icn::Ptr{Cint}, s::Ptr{Float64}, w::Ptr{Float64}, lp::Ref{Cint},
-                        ifail::Ref{Cint})::Cvoid
-end
-
-function mc30ad_64(n, ne, a, irn, icn, s, w, lp, ifail)
-  @ccall libhsl_subset_64.mc30ad_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float64},
-                                     irn::Ptr{Int64}, icn::Ptr{Int64}, s::Ptr{Float64},
-                                     w::Ptr{Float64}, lp::Ref{Int64}, ifail::Ref{Int64})::Cvoid
-end
-
-function mc30a(n, ne, a, irn, icn, s, w, lp, ifail)
-  @ccall libhsl.mc30a_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, irn::Ptr{Cint}, icn::Ptr{Cint},
-                       s::Ptr{Float32}, w::Ptr{Float32}, lp::Ref{Cint}, ifail::Ref{Cint})::Cvoid
-end
-
-function mc30a_64(n, ne, a, irn, icn, s, w, lp, ifail)
-  @ccall libhsl_subset_64.mc30a_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32}, irn::Ptr{Int64},
-                                    icn::Ptr{Int64}, s::Ptr{Float32}, w::Ptr{Float32},
-                                    lp::Ref{Int64}, ifail::Ref{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc34.jl b/src/Fortran/mc34.jl
deleted file mode 100644
index c25ff26..0000000
--- a/src/Fortran/mc34.jl
+++ /dev/null
@@ -1,19 +0,0 @@
-function mc34ad(n, irn, jcolst, yesa, a, iw)
-  @ccall libhsl.mc34ad_(n::Ref{Cint}, irn::Ptr{Cint}, jcolst::Ptr{Cint}, yesa::Ref{Cint},
-                        a::Ptr{Float64}, iw::Ptr{Cint})::Cvoid
-end
-
-function mc34ad_64(n, irn, jcolst, yesa, a, iw)
-  @ccall libhsl_subset_64.mc34ad_64_(n::Ref{Int64}, irn::Ptr{Int64}, jcolst::Ptr{Int64},
-                                     yesa::Ref{Int64}, a::Ptr{Float64}, iw::Ptr{Int64})::Cvoid
-end
-
-function mc34a(n, irn, jcolst, yesa, a, iw)
-  @ccall libhsl.mc34a_(n::Ref{Cint}, irn::Ptr{Cint}, jcolst::Ptr{Cint}, yesa::Ref{Cint},
-                       a::Ptr{Float32}, iw::Ptr{Cint})::Cvoid
-end
-
-function mc34a_64(n, irn, jcolst, yesa, a, iw)
-  @ccall libhsl_subset_64.mc34a_64_(n::Ref{Int64}, irn::Ptr{Int64}, jcolst::Ptr{Int64},
-                                    yesa::Ref{Int64}, a::Ptr{Float32}, iw::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc37.jl b/src/Fortran/mc37.jl
deleted file mode 100644
index 694ed64..0000000
--- a/src/Fortran/mc37.jl
+++ /dev/null
@@ -1,58 +0,0 @@
-function mc37ad(n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt, ielt, laelt, aelt, iw, icntl, info)
-  @ccall libhsl.mc37ad_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint},
-                        a::Ptr{Float64}, ip::Ptr{Cint}, lielt::Ref{Cint}, numelt::Ref{Cint},
-                        ptrelt::Ptr{Cint}, ielt::Ptr{Cint}, laelt::Ref{Cint}, aelt::Ptr{Float64},
-                        iw::Ptr{Cint}, icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function mc37ad_64(n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt, ielt, laelt, aelt, iw, icntl,
-                   info)
-  @ccall libhsl_subset_64.mc37ad_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64},
-                                     jcn::Ptr{Int64}, a::Ptr{Float64}, ip::Ptr{Int64},
-                                     lielt::Ref{Int64}, numelt::Ref{Int64}, ptrelt::Ptr{Int64},
-                                     ielt::Ptr{Int64}, laelt::Ref{Int64}, aelt::Ptr{Float64},
-                                     iw::Ptr{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function mc37bd(n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt, lielt, aelt, laelt)
-  @ccall libhsl.mc37bd_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float64}, irn::Ptr{Cint},
-                        jcn::Ptr{Cint}, ip::Ptr{Cint}, numelt::Ref{Cint}, ptrelt::Ptr{Cint},
-                        ielt::Ptr{Cint}, lielt::Ref{Cint}, aelt::Ptr{Float64},
-                        laelt::Ref{Cint})::Cvoid
-end
-
-function mc37bd_64(n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt, lielt, aelt, laelt)
-  @ccall libhsl_subset_64.mc37bd_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float64},
-                                     irn::Ptr{Int64}, jcn::Ptr{Int64}, ip::Ptr{Int64},
-                                     numelt::Ref{Int64}, ptrelt::Ptr{Int64}, ielt::Ptr{Int64},
-                                     lielt::Ref{Int64}, aelt::Ptr{Float64},
-                                     laelt::Ref{Int64})::Cvoid
-end
-
-function mc37a(n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt, ielt, laelt, aelt, iw, icntl, info)
-  @ccall libhsl.mc37a_(n::Ref{Cint}, ne::Ref{Cint}, irn::Ptr{Cint}, jcn::Ptr{Cint}, a::Ptr{Float32},
-                       ip::Ptr{Cint}, lielt::Ref{Cint}, numelt::Ref{Cint}, ptrelt::Ptr{Cint},
-                       ielt::Ptr{Cint}, laelt::Ref{Cint}, aelt::Ptr{Float32}, iw::Ptr{Cint},
-                       icntl::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function mc37a_64(n, ne, irn, jcn, a, ip, lielt, numelt, ptrelt, ielt, laelt, aelt, iw, icntl, info)
-  @ccall libhsl_subset_64.mc37a_64_(n::Ref{Int64}, ne::Ref{Int64}, irn::Ptr{Int64}, jcn::Ptr{Int64},
-                                    a::Ptr{Float32}, ip::Ptr{Int64}, lielt::Ref{Int64},
-                                    numelt::Ref{Int64}, ptrelt::Ptr{Int64}, ielt::Ptr{Int64},
-                                    laelt::Ref{Int64}, aelt::Ptr{Float32}, iw::Ptr{Int64},
-                                    icntl::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function mc37b(n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt, lielt, aelt, laelt)
-  @ccall libhsl.mc37b_(n::Ref{Cint}, ne::Ref{Cint}, a::Ptr{Float32}, irn::Ptr{Cint}, jcn::Ptr{Cint},
-                       ip::Ptr{Cint}, numelt::Ref{Cint}, ptrelt::Ptr{Cint}, ielt::Ptr{Cint},
-                       lielt::Ref{Cint}, aelt::Ptr{Float32}, laelt::Ref{Cint})::Cvoid
-end
-
-function mc37b_64(n, ne, a, irn, jcn, ip, numelt, ptrelt, ielt, lielt, aelt, laelt)
-  @ccall libhsl_subset_64.mc37b_64_(n::Ref{Int64}, ne::Ref{Int64}, a::Ptr{Float32}, irn::Ptr{Int64},
-                                    jcn::Ptr{Int64}, ip::Ptr{Int64}, numelt::Ref{Int64},
-                                    ptrelt::Ptr{Int64}, ielt::Ptr{Int64}, lielt::Ref{Int64},
-                                    aelt::Ptr{Float32}, laelt::Ref{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc47.jl b/src/Fortran/mc47.jl
deleted file mode 100644
index 7f1b048..0000000
--- a/src/Fortran/mc47.jl
+++ /dev/null
@@ -1,73 +0,0 @@
-function mc47id(icntl)
-  @ccall libhsl.mc47id_(icntl::Ptr{Cint})::Cvoid
-end
-
-function mc47id_64(icntl)
-  @ccall libhsl_subset_64.mc47id_64_(icntl::Ptr{Int64})::Cvoid
-end
-
-function mc47ad(n, ne, pe, iw, iwlen, icntl, info, rinfo)
-  @ccall libhsl.mc47ad_(n::Ref{Cint}, ne::Ref{Cint}, pe::Ptr{Cint}, iw::Ptr{Cint}, iwlen::Ref{Cint},
-                        icntl::Ptr{Cint}, info::Ptr{Cint}, rinfo::Ptr{Float64})::Cvoid
-end
-
-function mc47ad_64(n, ne, pe, iw, iwlen, icntl, info, rinfo)
-  @ccall libhsl_subset_64.mc47ad_64_(n::Ref{Int64}, ne::Ref{Int64}, pe::Ptr{Int64}, iw::Ptr{Int64},
-                                     iwlen::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64},
-                                     rinfo::Ptr{Float64})::Cvoid
-end
-
-function mc47bd(n, iwlen, pe, pfree, len, iw, nv, elen, last, degree, head, denxt, w, icntl, jnfo,
-                rjnfo)
-  @ccall libhsl.mc47bd_(n::Ref{Cint}, iwlen::Ref{Cint}, pe::Ptr{Cint}, pfree::Ref{Cint},
-                        len::Ptr{Cint}, iw::Ptr{Cint}, nv::Ptr{Cint}, elen::Ptr{Cint},
-                        last::Ptr{Cint}, degree::Ptr{Cint}, head::Ptr{Cint}, denxt::Ptr{Cint},
-                        w::Ptr{Cint}, icntl::Ptr{Cint}, jnfo::Ptr{Cint}, rjnfo::Ptr{Float64})::Cvoid
-end
-
-function mc47bd_64(n, iwlen, pe, pfree, len, iw, nv, elen, last, degree, head, denxt, w, icntl,
-                   jnfo, rjnfo)
-  @ccall libhsl_subset_64.mc47bd_64_(n::Ref{Int64}, iwlen::Ref{Int64}, pe::Ptr{Int64},
-                                     pfree::Ref{Int64}, len::Ptr{Int64}, iw::Ptr{Int64},
-                                     nv::Ptr{Int64}, elen::Ptr{Int64}, last::Ptr{Int64},
-                                     degree::Ptr{Int64}, head::Ptr{Int64}, denxt::Ptr{Int64},
-                                     w::Ptr{Int64}, icntl::Ptr{Int64}, jnfo::Ptr{Int64},
-                                     rjnfo::Ptr{Float64})::Cvoid
-end
-
-function mc47i(icntl)
-  @ccall libhsl.mc47i_(icntl::Ptr{Cint})::Cvoid
-end
-
-function mc47i_64(icntl)
-  @ccall libhsl_subset_64.mc47i_64_(icntl::Ptr{Int64})::Cvoid
-end
-
-function mc47a(n, ne, pe, iw, iwlen, icntl, info, rinfo)
-  @ccall libhsl.mc47a_(n::Ref{Cint}, ne::Ref{Cint}, pe::Ptr{Cint}, iw::Ptr{Cint}, iwlen::Ref{Cint},
-                       icntl::Ptr{Cint}, info::Ptr{Cint}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function mc47a_64(n, ne, pe, iw, iwlen, icntl, info, rinfo)
-  @ccall libhsl_subset_64.mc47a_64_(n::Ref{Int64}, ne::Ref{Int64}, pe::Ptr{Int64}, iw::Ptr{Int64},
-                                    iwlen::Ref{Int64}, icntl::Ptr{Int64}, info::Ptr{Int64},
-                                    rinfo::Ptr{Float32})::Cvoid
-end
-
-function mc47b(n, iwlen, pe, pfree, len, iw, nv, elen, last, degree, head, denxt, w, icntl, jnfo,
-               rjnfo)
-  @ccall libhsl.mc47b_(n::Ref{Cint}, iwlen::Ref{Cint}, pe::Ptr{Cint}, pfree::Ref{Cint},
-                       len::Ptr{Cint}, iw::Ptr{Cint}, nv::Ptr{Cint}, elen::Ptr{Cint},
-                       last::Ptr{Cint}, degree::Ptr{Cint}, head::Ptr{Cint}, denxt::Ptr{Cint},
-                       w::Ptr{Cint}, icntl::Ptr{Cint}, jnfo::Ptr{Cint}, rjnfo::Ptr{Float32})::Cvoid
-end
-
-function mc47b_64(n, iwlen, pe, pfree, len, iw, nv, elen, last, degree, head, denxt, w, icntl, jnfo,
-                  rjnfo)
-  @ccall libhsl_subset_64.mc47b_64_(n::Ref{Int64}, iwlen::Ref{Int64}, pe::Ptr{Int64},
-                                    pfree::Ref{Int64}, len::Ptr{Int64}, iw::Ptr{Int64},
-                                    nv::Ptr{Int64}, elen::Ptr{Int64}, last::Ptr{Int64},
-                                    degree::Ptr{Int64}, head::Ptr{Int64}, denxt::Ptr{Int64},
-                                    w::Ptr{Int64}, icntl::Ptr{Int64}, jnfo::Ptr{Int64},
-                                    rjnfo::Ptr{Float32})::Cvoid
-end
diff --git a/src/Fortran/mc57.jl b/src/Fortran/mc57.jl
deleted file mode 100644
index 42b26fd..0000000
--- a/src/Fortran/mc57.jl
+++ /dev/null
@@ -1,51 +0,0 @@
-function mc57ad(lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn, irn, ip, la, a, iw, lp, info)
-  @ccall libhsl.mc57ad_(lcntl::Ptr{Cint}, nmax::Ref{Cint}, nelt::Ref{Cint}, eltvar::Ptr{Cint},
-                        eltptr::Ptr{Cint}, aelt::Ptr{Float64}, n::Ref{Cint}, lirn::Ref{Cint},
-                        irn::Ptr{Cint}, ip::Ptr{Cint}, la::Ref{Cint}, a::Ptr{Float64},
-                        iw::Ptr{Cint}, lp::Ref{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function mc57ad_64(lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn, irn, ip, la, a, iw, lp, info)
-  @ccall libhsl_subset_64.mc57ad_64_(lcntl::Ptr{Int64}, nmax::Ref{Int64}, nelt::Ref{Int64},
-                                     eltvar::Ptr{Int64}, eltptr::Ptr{Int64}, aelt::Ptr{Float64},
-                                     n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
-                                     ip::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float64},
-                                     iw::Ptr{Int64}, lp::Ref{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function mc57bd(n, yesa, la, a, nz, irn, ip)
-  @ccall libhsl.mc57bd_(n::Ref{Cint}, yesa::Ref{Cint}, la::Ref{Cint}, a::Ptr{Float64},
-                        nz::Ref{Cint}, irn::Ptr{Cint}, ip::Ptr{Cint})::Cvoid
-end
-
-function mc57bd_64(n, yesa, la, a, nz, irn, ip)
-  @ccall libhsl_subset_64.mc57bd_64_(n::Ref{Int64}, yesa::Ref{Int64}, la::Ref{Int64},
-                                     a::Ptr{Float64}, nz::Ref{Int64}, irn::Ptr{Int64},
-                                     ip::Ptr{Int64})::Cvoid
-end
-
-function mc57a(lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn, irn, ip, la, a, iw, lp, info)
-  @ccall libhsl.mc57a_(lcntl::Ptr{Cint}, nmax::Ref{Cint}, nelt::Ref{Cint}, eltvar::Ptr{Cint},
-                       eltptr::Ptr{Cint}, aelt::Ptr{Float32}, n::Ref{Cint}, lirn::Ref{Cint},
-                       irn::Ptr{Cint}, ip::Ptr{Cint}, la::Ref{Cint}, a::Ptr{Float32}, iw::Ptr{Cint},
-                       lp::Ref{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function mc57a_64(lcntl, nmax, nelt, eltvar, eltptr, aelt, n, lirn, irn, ip, la, a, iw, lp, info)
-  @ccall libhsl_subset_64.mc57a_64_(lcntl::Ptr{Int64}, nmax::Ref{Int64}, nelt::Ref{Int64},
-                                    eltvar::Ptr{Int64}, eltptr::Ptr{Int64}, aelt::Ptr{Float32},
-                                    n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
-                                    ip::Ptr{Int64}, la::Ref{Int64}, a::Ptr{Float32}, iw::Ptr{Int64},
-                                    lp::Ref{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function mc57b(n, yesa, la, a, nz, irn, ip)
-  @ccall libhsl.mc57b_(n::Ref{Cint}, yesa::Ref{Cint}, la::Ref{Cint}, a::Ptr{Float32}, nz::Ref{Cint},
-                       irn::Ptr{Cint}, ip::Ptr{Cint})::Cvoid
-end
-
-function mc57b_64(n, yesa, la, a, nz, irn, ip)
-  @ccall libhsl_subset_64.mc57b_64_(n::Ref{Int64}, yesa::Ref{Int64}, la::Ref{Int64},
-                                    a::Ptr{Float32}, nz::Ref{Int64}, irn::Ptr{Int64},
-                                    ip::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc60.jl b/src/Fortran/mc60.jl
deleted file mode 100644
index c57b239..0000000
--- a/src/Fortran/mc60.jl
+++ /dev/null
@@ -1,335 +0,0 @@
-function mc60ad(n, lirn, irn, icptr, icntl, iw, info)
-  @ccall libhsl.mc60ad_(n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint},
-                        icntl::Ptr{Cint}, iw::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function mc60ad_64(n, lirn, irn, icptr, icntl, iw, info)
-  @ccall libhsl_subset_64.mc60ad_64_(n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
-                                     icptr::Ptr{Int64}, icntl::Ptr{Int64}, iw::Ptr{Int64},
-                                     info::Ptr{Int64})::Cvoid
-end
-
-function mc60bd(n, lirn, irn, icptr, nsup, svar, vars, iw)
-  @ccall libhsl.mc60bd_(n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint},
-                        nsup::Ref{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
-end
-
-function mc60bd_64(n, lirn, irn, icptr, nsup, svar, vars, iw)
-  @ccall libhsl_subset_64.mc60bd_64_(n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
-                                     icptr::Ptr{Int64}, nsup::Ref{Int64}, svar::Ptr{Int64},
-                                     vars::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
-function mc60cd(n, nsup, lirn, irn, icptr, vars, jcntl, permsv, weight, pair, info, iw, w)
-  @ccall libhsl.mc60cd_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                        icptr::Ptr{Cint}, vars::Ptr{Cint}, jcntl::Ptr{Cint}, permsv::Ptr{Cint},
-                        weight::Ptr{Float64}, pair::Ptr{Cint}, info::Ptr{Cint}, iw::Ptr{Cint},
-                        w::Ptr{Float64})::Cvoid
-end
-
-function mc60cd_64(n, nsup, lirn, irn, icptr, vars, jcntl, permsv, weight, pair, info, iw, w)
-  @ccall libhsl_subset_64.mc60cd_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
-                                     jcntl::Ptr{Int64}, permsv::Ptr{Int64}, weight::Ptr{Float64},
-                                     pair::Ptr{Int64}, info::Ptr{Int64}, iw::Ptr{Int64},
-                                     w::Ptr{Float64})::Cvoid
-end
-
-function mc60dd(n, nsup, svar, vars, permsv, perm, possv)
-  @ccall libhsl.mc60dd_(n::Ref{Cint}, nsup::Ref{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint},
-                        permsv::Ptr{Cint}, perm::Ptr{Cint}, possv::Ptr{Cint})::Cvoid
-end
-
-function mc60dd_64(n, nsup, svar, vars, permsv, perm, possv)
-  @ccall libhsl_subset_64.mc60dd_64_(n::Ref{Int64}, nsup::Ref{Int64}, svar::Ptr{Int64},
-                                     vars::Ptr{Int64}, permsv::Ptr{Int64}, perm::Ptr{Int64},
-                                     possv::Ptr{Int64})::Cvoid
-end
-
-function mc60ed(n, nsup, lirn, irn, icptr, svar, vars, permsv, perm, iw)
-  @ccall libhsl.mc60ed_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                        icptr::Ptr{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint},
-                        perm::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
-end
-
-function mc60ed_64(n, nsup, lirn, irn, icptr, svar, vars, permsv, perm, iw)
-  @ccall libhsl_subset_64.mc60ed_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
-                                     vars::Ptr{Int64}, permsv::Ptr{Int64}, perm::Ptr{Int64},
-                                     iw::Ptr{Int64})::Cvoid
-end
-
-function mc60fd(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
-  @ccall libhsl.mc60fd_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                        icptr::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint}, iw::Ptr{Cint},
-                        rinfo::Ptr{Float64})::Cvoid
-end
-
-function mc60fd_64(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
-  @ccall libhsl_subset_64.mc60fd_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
-                                     permsv::Ptr{Int64}, iw::Ptr{Int64}, rinfo::Ptr{Float64})::Cvoid
-end
-
-function mc60gd(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
-  @ccall libhsl.mc60gd_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                        icptr::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint}, iw::Ptr{Cint},
-                        rinfo::Ptr{Float64})::Cvoid
-end
-
-function mc60gd_64(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
-  @ccall libhsl_subset_64.mc60gd_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
-                                     permsv::Ptr{Int64}, iw::Ptr{Int64}, rinfo::Ptr{Float64})::Cvoid
-end
-
-function mc60hd(n, nsup, lirn, irn, icptr, vars, mask, ls, xls, list, info)
-  @ccall libhsl.mc60hd_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                        icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint}, ls::Ptr{Cint},
-                        xls::Ptr{Cint}, list::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function mc60hd_64(n, nsup, lirn, irn, icptr, vars, mask, ls, xls, list, info)
-  @ccall libhsl_subset_64.mc60hd_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
-                                     mask::Ptr{Int64}, ls::Ptr{Int64}, xls::Ptr{Int64},
-                                     list::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function mc60jd(nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars, status, weight, nlist, queue,
-                deg, prior)
-  @ccall libhsl.mc60jd_(nsup::Ref{Cint}, lirn::Ref{Cint}, nodes::Ref{Cint}, nstrt::Ref{Cint},
-                        lstnum::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint}, vars::Ptr{Cint},
-                        status::Ptr{Cint}, weight::Ptr{Float64}, nlist::Ptr{Cint}, queue::Ptr{Cint},
-                        deg::Ptr{Cint}, prior::Ptr{Float64})::Cvoid
-end
-
-function mc60jd_64(nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars, status, weight, nlist, queue,
-                   deg, prior)
-  @ccall libhsl_subset_64.mc60jd_64_(nsup::Ref{Int64}, lirn::Ref{Int64}, nodes::Ref{Int64},
-                                     nstrt::Ref{Int64}, lstnum::Ref{Int64}, irn::Ptr{Int64},
-                                     icptr::Ptr{Int64}, vars::Ptr{Int64}, status::Ptr{Int64},
-                                     weight::Ptr{Float64}, nlist::Ptr{Int64}, queue::Ptr{Int64},
-                                     deg::Ptr{Int64}, prior::Ptr{Float64})::Cvoid
-end
-
-function mc60ld(root, maxwid, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, lwidth, nvars)
-  @ccall libhsl.mc60ld_(root::Ref{Cint}, maxwid::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint},
-                        irn::Ptr{Cint}, icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint},
-                        ls::Ptr{Cint}, xls::Ptr{Cint}, nlvl::Ref{Cint}, lwidth::Ref{Cint},
-                        nvars::Ref{Cint})::Cvoid
-end
-
-function mc60ld_64(root, maxwid, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, lwidth, nvars)
-  @ccall libhsl_subset_64.mc60ld_64_(root::Ref{Int64}, maxwid::Ref{Int64}, nsup::Ref{Int64},
-                                     lirn::Ref{Int64}, irn::Ptr{Int64}, icptr::Ptr{Int64},
-                                     vars::Ptr{Int64}, mask::Ptr{Int64}, ls::Ptr{Int64},
-                                     xls::Ptr{Int64}, nlvl::Ref{Int64}, lwidth::Ref{Int64},
-                                     nvars::Ref{Int64})::Cvoid
-end
-
-function mc60od(n, nc, lirn, irn, icptr, svar, nsup, new, vars, flag)
-  @ccall libhsl.mc60od_(n::Ref{Cint}, nc::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                        icptr::Ptr{Cint}, svar::Ptr{Cint}, nsup::Ref{Cint}, new::Ptr{Cint},
-                        vars::Ptr{Cint}, flag::Ptr{Cint})::Cvoid
-end
-
-function mc60od_64(n, nc, lirn, irn, icptr, svar, nsup, new, vars, flag)
-  @ccall libhsl_subset_64.mc60od_64_(n::Ref{Int64}, nc::Ref{Int64}, lirn::Ref{Int64},
-                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
-                                     nsup::Ref{Int64}, new::Ptr{Int64}, vars::Ptr{Int64},
-                                     flag::Ptr{Int64})::Cvoid
-end
-
-function mc60pd(n, nsup, lirn, irn, icptr, svar, vars, var, flag)
-  @ccall libhsl.mc60pd_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                        icptr::Ptr{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, var::Ptr{Cint},
-                        flag::Ptr{Cint})::Cvoid
-end
-
-function mc60pd_64(n, nsup, lirn, irn, icptr, svar, vars, var, flag)
-  @ccall libhsl_subset_64.mc60pd_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
-                                     vars::Ptr{Int64}, var::Ptr{Int64}, flag::Ptr{Int64})::Cvoid
-end
-
-function mc60qd(root, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, nvars, degree)
-  @ccall libhsl.mc60qd_(root::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                        icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint}, ls::Ptr{Cint},
-                        xls::Ptr{Cint}, nlvl::Ref{Cint}, nvars::Ref{Cint}, degree::Ptr{Cint})::Cvoid
-end
-
-function mc60qd_64(root, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, nvars, degree)
-  @ccall libhsl_subset_64.mc60qd_64_(root::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
-                                     mask::Ptr{Int64}, ls::Ptr{Int64}, xls::Ptr{Int64},
-                                     nlvl::Ref{Int64}, nvars::Ref{Int64}, degree::Ptr{Int64})::Cvoid
-end
-
-function mc60a(n, lirn, irn, icptr, icntl, iw, info)
-  @ccall libhsl.mc60a_(n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint},
-                       icntl::Ptr{Cint}, iw::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function mc60a_64(n, lirn, irn, icptr, icntl, iw, info)
-  @ccall libhsl_subset_64.mc60a_64_(n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
-                                    icptr::Ptr{Int64}, icntl::Ptr{Int64}, iw::Ptr{Int64},
-                                    info::Ptr{Int64})::Cvoid
-end
-
-function mc60b(n, lirn, irn, icptr, nsup, svar, vars, iw)
-  @ccall libhsl.mc60b_(n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint},
-                       nsup::Ref{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
-end
-
-function mc60b_64(n, lirn, irn, icptr, nsup, svar, vars, iw)
-  @ccall libhsl_subset_64.mc60b_64_(n::Ref{Int64}, lirn::Ref{Int64}, irn::Ptr{Int64},
-                                    icptr::Ptr{Int64}, nsup::Ref{Int64}, svar::Ptr{Int64},
-                                    vars::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
-function mc60c(n, nsup, lirn, irn, icptr, vars, jcntl, permsv, weight, pair, info, iw, w)
-  @ccall libhsl.mc60c_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                       icptr::Ptr{Cint}, vars::Ptr{Cint}, jcntl::Ptr{Cint}, permsv::Ptr{Cint},
-                       weight::Ptr{Float32}, pair::Ptr{Cint}, info::Ptr{Cint}, iw::Ptr{Cint},
-                       w::Ptr{Float32})::Cvoid
-end
-
-function mc60c_64(n, nsup, lirn, irn, icptr, vars, jcntl, permsv, weight, pair, info, iw, w)
-  @ccall libhsl_subset_64.mc60c_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
-                                    jcntl::Ptr{Int64}, permsv::Ptr{Int64}, weight::Ptr{Float32},
-                                    pair::Ptr{Int64}, info::Ptr{Int64}, iw::Ptr{Int64},
-                                    w::Ptr{Float32})::Cvoid
-end
-
-function mc60d(n, nsup, svar, vars, permsv, perm, possv)
-  @ccall libhsl.mc60d_(n::Ref{Cint}, nsup::Ref{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint},
-                       permsv::Ptr{Cint}, perm::Ptr{Cint}, possv::Ptr{Cint})::Cvoid
-end
-
-function mc60d_64(n, nsup, svar, vars, permsv, perm, possv)
-  @ccall libhsl_subset_64.mc60d_64_(n::Ref{Int64}, nsup::Ref{Int64}, svar::Ptr{Int64},
-                                    vars::Ptr{Int64}, permsv::Ptr{Int64}, perm::Ptr{Int64},
-                                    possv::Ptr{Int64})::Cvoid
-end
-
-function mc60e(n, nsup, lirn, irn, icptr, svar, vars, permsv, perm, iw)
-  @ccall libhsl.mc60e_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                       icptr::Ptr{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint},
-                       perm::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
-end
-
-function mc60e_64(n, nsup, lirn, irn, icptr, svar, vars, permsv, perm, iw)
-  @ccall libhsl_subset_64.mc60e_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
-                                    vars::Ptr{Int64}, permsv::Ptr{Int64}, perm::Ptr{Int64},
-                                    iw::Ptr{Int64})::Cvoid
-end
-
-function mc60f(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
-  @ccall libhsl.mc60f_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                       icptr::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint}, iw::Ptr{Cint},
-                       rinfo::Ptr{Float32})::Cvoid
-end
-
-function mc60f_64(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
-  @ccall libhsl_subset_64.mc60f_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
-                                    permsv::Ptr{Int64}, iw::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function mc60g(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
-  @ccall libhsl.mc60g_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                       icptr::Ptr{Cint}, vars::Ptr{Cint}, permsv::Ptr{Cint}, iw::Ptr{Cint},
-                       rinfo::Ptr{Float32})::Cvoid
-end
-
-function mc60g_64(n, nsup, lirn, irn, icptr, vars, permsv, iw, rinfo)
-  @ccall libhsl_subset_64.mc60g_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
-                                    permsv::Ptr{Int64}, iw::Ptr{Int64}, rinfo::Ptr{Float32})::Cvoid
-end
-
-function mc60h(n, nsup, lirn, irn, icptr, vars, mask, ls, xls, list, info)
-  @ccall libhsl.mc60h_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                       icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint}, ls::Ptr{Cint},
-                       xls::Ptr{Cint}, list::Ptr{Cint}, info::Ptr{Cint})::Cvoid
-end
-
-function mc60h_64(n, nsup, lirn, irn, icptr, vars, mask, ls, xls, list, info)
-  @ccall libhsl_subset_64.mc60h_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
-                                    mask::Ptr{Int64}, ls::Ptr{Int64}, xls::Ptr{Int64},
-                                    list::Ptr{Int64}, info::Ptr{Int64})::Cvoid
-end
-
-function mc60j(nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars, status, weight, nlist, queue,
-               deg, prior)
-  @ccall libhsl.mc60j_(nsup::Ref{Cint}, lirn::Ref{Cint}, nodes::Ref{Cint}, nstrt::Ref{Cint},
-                       lstnum::Ref{Cint}, irn::Ptr{Cint}, icptr::Ptr{Cint}, vars::Ptr{Cint},
-                       status::Ptr{Cint}, weight::Ptr{Float32}, nlist::Ptr{Cint}, queue::Ptr{Cint},
-                       deg::Ptr{Cint}, prior::Ptr{Float32})::Cvoid
-end
-
-function mc60j_64(nsup, lirn, nodes, nstrt, lstnum, irn, icptr, vars, status, weight, nlist, queue,
-                  deg, prior)
-  @ccall libhsl_subset_64.mc60j_64_(nsup::Ref{Int64}, lirn::Ref{Int64}, nodes::Ref{Int64},
-                                    nstrt::Ref{Int64}, lstnum::Ref{Int64}, irn::Ptr{Int64},
-                                    icptr::Ptr{Int64}, vars::Ptr{Int64}, status::Ptr{Int64},
-                                    weight::Ptr{Float32}, nlist::Ptr{Int64}, queue::Ptr{Int64},
-                                    deg::Ptr{Int64}, prior::Ptr{Float32})::Cvoid
-end
-
-function mc60l(root, maxwid, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, lwidth, nvars)
-  @ccall libhsl.mc60l_(root::Ref{Cint}, maxwid::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint},
-                       irn::Ptr{Cint}, icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint},
-                       ls::Ptr{Cint}, xls::Ptr{Cint}, nlvl::Ref{Cint}, lwidth::Ref{Cint},
-                       nvars::Ref{Cint})::Cvoid
-end
-
-function mc60l_64(root, maxwid, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, lwidth, nvars)
-  @ccall libhsl_subset_64.mc60l_64_(root::Ref{Int64}, maxwid::Ref{Int64}, nsup::Ref{Int64},
-                                    lirn::Ref{Int64}, irn::Ptr{Int64}, icptr::Ptr{Int64},
-                                    vars::Ptr{Int64}, mask::Ptr{Int64}, ls::Ptr{Int64},
-                                    xls::Ptr{Int64}, nlvl::Ref{Int64}, lwidth::Ref{Int64},
-                                    nvars::Ref{Int64})::Cvoid
-end
-
-function mc60o(n, nc, lirn, irn, icptr, svar, nsup, new, vars, flag)
-  @ccall libhsl.mc60o_(n::Ref{Cint}, nc::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                       icptr::Ptr{Cint}, svar::Ptr{Cint}, nsup::Ref{Cint}, new::Ptr{Cint},
-                       vars::Ptr{Cint}, flag::Ptr{Cint})::Cvoid
-end
-
-function mc60o_64(n, nc, lirn, irn, icptr, svar, nsup, new, vars, flag)
-  @ccall libhsl_subset_64.mc60o_64_(n::Ref{Int64}, nc::Ref{Int64}, lirn::Ref{Int64},
-                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
-                                    nsup::Ref{Int64}, new::Ptr{Int64}, vars::Ptr{Int64},
-                                    flag::Ptr{Int64})::Cvoid
-end
-
-function mc60p(n, nsup, lirn, irn, icptr, svar, vars, var, flag)
-  @ccall libhsl.mc60p_(n::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                       icptr::Ptr{Cint}, svar::Ptr{Cint}, vars::Ptr{Cint}, var::Ptr{Cint},
-                       flag::Ptr{Cint})::Cvoid
-end
-
-function mc60p_64(n, nsup, lirn, irn, icptr, svar, vars, var, flag)
-  @ccall libhsl_subset_64.mc60p_64_(n::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, svar::Ptr{Int64},
-                                    vars::Ptr{Int64}, var::Ptr{Int64}, flag::Ptr{Int64})::Cvoid
-end
-
-function mc60q(root, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, nvars)
-  @ccall libhsl.mc60q_(root::Ref{Cint}, nsup::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                       icptr::Ptr{Cint}, vars::Ptr{Cint}, mask::Ptr{Cint}, ls::Ptr{Cint},
-                       xls::Ptr{Cint}, nlvl::Ref{Cint}, nvars::Ref{Cint})::Cvoid
-end
-
-function mc60q_64(root, nsup, lirn, irn, icptr, vars, mask, ls, xls, nlvl, nvars)
-  @ccall libhsl_subset_64.mc60q_64_(root::Ref{Int64}, nsup::Ref{Int64}, lirn::Ref{Int64},
-                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, vars::Ptr{Int64},
-                                    mask::Ptr{Int64}, ls::Ptr{Int64}, xls::Ptr{Int64},
-                                    nlvl::Ref{Int64}, nvars::Ref{Int64})::Cvoid
-end
diff --git a/src/Fortran/mc61.jl b/src/Fortran/mc61.jl
deleted file mode 100644
index 4c93cfa..0000000
--- a/src/Fortran/mc61.jl
+++ /dev/null
@@ -1,45 +0,0 @@
-function mc61id(icntl, cntl)
-  @ccall libhsl.mc61id_(icntl::Ptr{Cint}, cntl::Ptr{Float64})::Cvoid
-end
-
-function mc61id_64(icntl, cntl)
-  @ccall libhsl_subset_64.mc61id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64})::Cvoid
-end
-
-function mc61ad(job, n, lirn, irn, icptr, perm, liw, iw, w, icntl, cntl, info, rinfo)
-  @ccall libhsl.mc61ad_(job::Ref{Cint}, n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                        icptr::Ptr{Cint}, perm::Ptr{Cint}, liw::Ref{Cint}, iw::Ptr{Cint},
-                        w::Ptr{Float64}, icntl::Ptr{Cint}, cntl::Ptr{Float64}, info::Ptr{Cint},
-                        rinfo::Ptr{Float64})::Cvoid
-end
-
-function mc61ad_64(job, n, lirn, irn, icptr, perm, liw, iw, w, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.mc61ad_64_(job::Ref{Int64}, n::Ref{Int64}, lirn::Ref{Int64},
-                                     irn::Ptr{Int64}, icptr::Ptr{Int64}, perm::Ptr{Int64},
-                                     liw::Ref{Int64}, iw::Ptr{Int64}, w::Ptr{Float64},
-                                     icntl::Ptr{Int64}, cntl::Ptr{Float64}, info::Ptr{Int64},
-                                     rinfo::Ptr{Float64})::Cvoid
-end
-
-function mc61i(icntl, cntl)
-  @ccall libhsl.mc61i_(icntl::Ptr{Cint}, cntl::Ptr{Float32})::Cvoid
-end
-
-function mc61i_64(icntl, cntl)
-  @ccall libhsl_subset_64.mc61i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32})::Cvoid
-end
-
-function mc61a(job, n, lirn, irn, icptr, perm, liw, iw, w, icntl, cntl, info, rinfo)
-  @ccall libhsl.mc61a_(job::Ref{Cint}, n::Ref{Cint}, lirn::Ref{Cint}, irn::Ptr{Cint},
-                       icptr::Ptr{Cint}, perm::Ptr{Cint}, liw::Ref{Cint}, iw::Ptr{Cint},
-                       w::Ptr{Float32}, icntl::Ptr{Cint}, cntl::Ptr{Float32}, info::Ptr{Cint},
-                       rinfo::Ptr{Float32})::Cvoid
-end
-
-function mc61a_64(job, n, lirn, irn, icptr, perm, liw, iw, w, icntl, cntl, info, rinfo)
-  @ccall libhsl_subset_64.mc61a_64_(job::Ref{Int64}, n::Ref{Int64}, lirn::Ref{Int64},
-                                    irn::Ptr{Int64}, icptr::Ptr{Int64}, perm::Ptr{Int64},
-                                    liw::Ref{Int64}, iw::Ptr{Int64}, w::Ptr{Float32},
-                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, info::Ptr{Int64},
-                                    rinfo::Ptr{Float32})::Cvoid
-end
diff --git a/src/Fortran/mc64.jl b/src/Fortran/mc64.jl
deleted file mode 100644
index 1485072..0000000
--- a/src/Fortran/mc64.jl
+++ /dev/null
@@ -1,265 +0,0 @@
-function mc64id(icntl)
-  @ccall libhsl.mc64id_(icntl::Ptr{Cint})::Cvoid
-end
-
-function mc64id_64(icntl)
-  @ccall libhsl_subset_64.mc64id_64_(icntl::Ptr{Int64})::Cvoid
-end
-
-function mc64ad(job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw, dw, icntl, info)
-  @ccall libhsl.mc64ad_(job::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint},
-                        a::Ptr{Float64}, num::Ref{Cint}, cperm::Ptr{Cint}, liw::Ref{Cint},
-                        iw::Ptr{Cint}, ldw::Ref{Cint}, dw::Ptr{Float64}, icntl::Ptr{Cint},
-                        info::Ptr{Cint})::Cvoid
-end
-
-function mc64ad_64(job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw, dw, icntl, info)
-  @ccall libhsl_subset_64.mc64ad_64_(job::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64},
-                                     irn::Ptr{Int64}, a::Ptr{Float64}, num::Ref{Int64},
-                                     cperm::Ptr{Int64}, liw::Ref{Int64}, iw::Ptr{Int64},
-                                     ldw::Ref{Int64}, dw::Ptr{Float64}, icntl::Ptr{Int64},
-                                     info::Ptr{Int64})::Cvoid
-end
-
-function mc64bd(n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
-  @ccall libhsl.mc64bd_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float64},
-                        iperm::Ptr{Cint}, num::Ref{Cint}, jperm::Ptr{Cint}, pr::Ptr{Cint},
-                        q::Ptr{Cint}, l::Ptr{Cint}, d::Ptr{Float64})::Cvoid
-end
-
-function mc64bd_64(n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
-  @ccall libhsl_subset_64.mc64bd_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
-                                     a::Ptr{Float64}, iperm::Ptr{Int64}, num::Ref{Int64},
-                                     jperm::Ptr{Int64}, pr::Ptr{Int64}, q::Ptr{Int64},
-                                     l::Ptr{Int64}, d::Ptr{Float64})::Cvoid
-end
-
-function mc64dd(i, n, q, d, l, iway)
-  @ccall libhsl.mc64dd_(i::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint}, d::Ptr{Float64}, l::Ptr{Cint},
-                        iway::Ref{Cint})::Cvoid
-end
-
-function mc64dd_64(i, n, q, d, l, iway)
-  @ccall libhsl_subset_64.mc64dd_64_(i::Ref{Int64}, n::Ref{Int64}, q::Ptr{Int64}, d::Ptr{Float64},
-                                     l::Ptr{Int64}, iway::Ref{Int64})::Cvoid
-end
-
-function mc64ed(qlen, n, q, d, l, iway)
-  @ccall libhsl.mc64ed_(qlen::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint}, d::Ptr{Float64}, l::Ptr{Cint},
-                        iway::Ref{Cint})::Cvoid
-end
-
-function mc64ed_64(qlen, n, q, d, l, iway)
-  @ccall libhsl_subset_64.mc64ed_64_(qlen::Ref{Int64}, n::Ref{Int64}, q::Ptr{Int64},
-                                     d::Ptr{Float64}, l::Ptr{Int64}, iway::Ref{Int64})::Cvoid
-end
-
-function mc64fd(pos0, qlen, n, q, d, l, iway)
-  @ccall libhsl.mc64fd_(pos0::Ref{Cint}, qlen::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint},
-                        d::Ptr{Float64}, l::Ptr{Cint}, iway::Ref{Cint})::Cvoid
-end
-
-function mc64fd_64(pos0, qlen, n, q, d, l, iway)
-  @ccall libhsl_subset_64.mc64fd_64_(pos0::Ref{Int64}, qlen::Ref{Int64}, n::Ref{Int64},
-                                     q::Ptr{Int64}, d::Ptr{Float64}, l::Ptr{Int64},
-                                     iway::Ref{Int64})::Cvoid
-end
-
-function mc64rd(n, ne, ip, irn, a)
-  @ccall libhsl.mc64rd_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint},
-                        a::Ptr{Float64})::Cvoid
-end
-
-function mc64rd_64(n, ne, ip, irn, a)
-  @ccall libhsl_subset_64.mc64rd_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
-                                     a::Ptr{Float64})::Cvoid
-end
-
-function mc64sd(n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh, fc, iw, iw4)
-  @ccall libhsl.mc64sd_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float64},
-                        iperm::Ptr{Cint}, numx::Ref{Cint}, w::Ptr{Cint}, len::Ptr{Cint},
-                        lenl::Ptr{Cint}, lenh::Ptr{Cint}, fc::Ptr{Cint}, iw::Ptr{Cint},
-                        iw4::Ptr{Cint})::Cvoid
-end
-
-function mc64sd_64(n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh, fc, iw, iw4)
-  @ccall libhsl_subset_64.mc64sd_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
-                                     a::Ptr{Float64}, iperm::Ptr{Int64}, numx::Ref{Int64},
-                                     w::Ptr{Int64}, len::Ptr{Int64}, lenl::Ptr{Int64},
-                                     lenh::Ptr{Int64}, fc::Ptr{Int64}, iw::Ptr{Int64},
-                                     iw4::Ptr{Int64})::Cvoid
-end
-
-function mc64qd(ip, lenl, lenh, w, wlen, a, nval, val)
-  @ccall libhsl.mc64qd_(ip::Ptr{Cint}, lenl::Ptr{Cint}, lenh::Ptr{Cint}, w::Ptr{Cint},
-                        wlen::Ref{Cint}, a::Ptr{Float64}, nval::Ref{Cint}, val::Ref{Float64})::Cvoid
-end
-
-function mc64qd_64(ip, lenl, lenh, w, wlen, a, nval, val)
-  @ccall libhsl_subset_64.mc64qd_64_(ip::Ptr{Int64}, lenl::Ptr{Int64}, lenh::Ptr{Int64},
-                                     w::Ptr{Int64}, wlen::Ref{Int64}, a::Ptr{Float64},
-                                     nval::Ref{Int64}, val::Ref{Float64})::Cvoid
-end
-
-function mc64ud(id, mod, n, irn, lirn, ip, lenc, fc, iperm, num, numx, pr, arp, cv, out)
-  @ccall libhsl.mc64ud_(id::Ref{Cint}, mod::Ref{Cint}, n::Ref{Cint}, irn::Ptr{Cint},
-                        lirn::Ref{Cint}, ip::Ptr{Cint}, lenc::Ptr{Cint}, fc::Ptr{Cint},
-                        iperm::Ptr{Cint}, num::Ref{Cint}, numx::Ref{Cint}, pr::Ptr{Cint},
-                        arp::Ptr{Cint}, cv::Ptr{Cint}, out::Ptr{Cint})::Cvoid
-end
-
-function mc64ud_64(id, mod, n, irn, lirn, ip, lenc, fc, iperm, num, numx, pr, arp, cv, out)
-  @ccall libhsl_subset_64.mc64ud_64_(id::Ref{Int64}, mod::Ref{Int64}, n::Ref{Int64},
-                                     irn::Ptr{Int64}, lirn::Ref{Int64}, ip::Ptr{Int64},
-                                     lenc::Ptr{Int64}, fc::Ptr{Int64}, iperm::Ptr{Int64},
-                                     num::Ref{Int64}, numx::Ref{Int64}, pr::Ptr{Int64},
-                                     arp::Ptr{Int64}, cv::Ptr{Int64}, out::Ptr{Int64})::Cvoid
-end
-
-function mc64wd(n, ne, ip, irn, a, iperm, num, jperm, out, pr, q, l, u, d)
-  @ccall libhsl.mc64wd_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float64},
-                        iperm::Ptr{Cint}, num::Ref{Cint}, jperm::Ptr{Cint}, out::Ptr{Cint},
-                        pr::Ptr{Cint}, q::Ptr{Cint}, l::Ptr{Cint}, u::Ptr{Float64},
-                        d::Ptr{Float64})::Cvoid
-end
-
-function mc64wd_64(n, ne, ip, irn, a, iperm, num, jperm, out, pr, q, l, u, d)
-  @ccall libhsl_subset_64.mc64wd_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
-                                     a::Ptr{Float64}, iperm::Ptr{Int64}, num::Ref{Int64},
-                                     jperm::Ptr{Int64}, out::Ptr{Int64}, pr::Ptr{Int64},
-                                     q::Ptr{Int64}, l::Ptr{Int64}, u::Ptr{Float64},
-                                     d::Ptr{Float64})::Cvoid
-end
-
-function mc64i(icntl)
-  @ccall libhsl.mc64i_(icntl::Ptr{Cint})::Cvoid
-end
-
-function mc64i_64(icntl)
-  @ccall libhsl_subset_64.mc64i_64_(icntl::Ptr{Int64})::Cvoid
-end
-
-function mc64a(job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw, dw, icntl, info)
-  @ccall libhsl.mc64a_(job::Ref{Cint}, n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint},
-                       a::Ptr{Float32}, num::Ref{Cint}, cperm::Ptr{Cint}, liw::Ref{Cint},
-                       iw::Ptr{Cint}, ldw::Ref{Cint}, dw::Ptr{Float32}, icntl::Ptr{Cint},
-                       info::Ptr{Cint})::Cvoid
-end
-
-function mc64a_64(job, n, ne, ip, irn, a, num, cperm, liw, iw, ldw, dw, icntl, info)
-  @ccall libhsl_subset_64.mc64a_64_(job::Ref{Int64}, n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64},
-                                    irn::Ptr{Int64}, a::Ptr{Float32}, num::Ref{Int64},
-                                    cperm::Ptr{Int64}, liw::Ref{Int64}, iw::Ptr{Int64},
-                                    ldw::Ref{Int64}, dw::Ptr{Float32}, icntl::Ptr{Int64},
-                                    info::Ptr{Int64})::Cvoid
-end
-
-function mc64b(n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
-  @ccall libhsl.mc64b_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float32},
-                       iperm::Ptr{Cint}, num::Ref{Cint}, jperm::Ptr{Cint}, pr::Ptr{Cint},
-                       q::Ptr{Cint}, l::Ptr{Cint}, d::Ptr{Float32})::Cvoid
-end
-
-function mc64b_64(n, ne, ip, irn, a, iperm, num, jperm, pr, q, l, d)
-  @ccall libhsl_subset_64.mc64b_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
-                                    a::Ptr{Float32}, iperm::Ptr{Int64}, num::Ref{Int64},
-                                    jperm::Ptr{Int64}, pr::Ptr{Int64}, q::Ptr{Int64}, l::Ptr{Int64},
-                                    d::Ptr{Float32})::Cvoid
-end
-
-function mc64d(i, n, q, d, l, iway)
-  @ccall libhsl.mc64d_(i::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint}, d::Ptr{Float32}, l::Ptr{Cint},
-                       iway::Ref{Cint})::Cvoid
-end
-
-function mc64d_64(i, n, q, d, l, iway)
-  @ccall libhsl_subset_64.mc64d_64_(i::Ref{Int64}, n::Ref{Int64}, q::Ptr{Int64}, d::Ptr{Float32},
-                                    l::Ptr{Int64}, iway::Ref{Int64})::Cvoid
-end
-
-function mc64e(qlen, n, q, d, l, iway)
-  @ccall libhsl.mc64e_(qlen::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint}, d::Ptr{Float32}, l::Ptr{Cint},
-                       iway::Ref{Cint})::Cvoid
-end
-
-function mc64e_64(qlen, n, q, d, l, iway)
-  @ccall libhsl_subset_64.mc64e_64_(qlen::Ref{Int64}, n::Ref{Int64}, q::Ptr{Int64}, d::Ptr{Float32},
-                                    l::Ptr{Int64}, iway::Ref{Int64})::Cvoid
-end
-
-function mc64f(pos0, qlen, n, q, d, l, iway)
-  @ccall libhsl.mc64f_(pos0::Ref{Cint}, qlen::Ref{Cint}, n::Ref{Cint}, q::Ptr{Cint},
-                       d::Ptr{Float32}, l::Ptr{Cint}, iway::Ref{Cint})::Cvoid
-end
-
-function mc64f_64(pos0, qlen, n, q, d, l, iway)
-  @ccall libhsl_subset_64.mc64f_64_(pos0::Ref{Int64}, qlen::Ref{Int64}, n::Ref{Int64},
-                                    q::Ptr{Int64}, d::Ptr{Float32}, l::Ptr{Int64},
-                                    iway::Ref{Int64})::Cvoid
-end
-
-function mc64r(n, ne, ip, irn, a)
-  @ccall libhsl.mc64r_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint},
-                       a::Ptr{Float32})::Cvoid
-end
-
-function mc64r_64(n, ne, ip, irn, a)
-  @ccall libhsl_subset_64.mc64r_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
-                                    a::Ptr{Float32})::Cvoid
-end
-
-function mc64s(n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh, fc, iw, iw4)
-  @ccall libhsl.mc64s_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float32},
-                       iperm::Ptr{Cint}, numx::Ref{Cint}, w::Ptr{Cint}, len::Ptr{Cint},
-                       lenl::Ptr{Cint}, lenh::Ptr{Cint}, fc::Ptr{Cint}, iw::Ptr{Cint},
-                       iw4::Ptr{Cint})::Cvoid
-end
-
-function mc64s_64(n, ne, ip, irn, a, iperm, numx, w, len, lenl, lenh, fc, iw, iw4)
-  @ccall libhsl_subset_64.mc64s_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
-                                    a::Ptr{Float32}, iperm::Ptr{Int64}, numx::Ref{Int64},
-                                    w::Ptr{Int64}, len::Ptr{Int64}, lenl::Ptr{Int64},
-                                    lenh::Ptr{Int64}, fc::Ptr{Int64}, iw::Ptr{Int64},
-                                    iw4::Ptr{Int64})::Cvoid
-end
-
-function mc64q(ip, lenl, lenh, w, wlen, a, nval, val)
-  @ccall libhsl.mc64q_(ip::Ptr{Cint}, lenl::Ptr{Cint}, lenh::Ptr{Cint}, w::Ptr{Cint},
-                       wlen::Ref{Cint}, a::Ptr{Float32}, nval::Ref{Cint}, val::Ref{Float32})::Cvoid
-end
-
-function mc64q_64(ip, lenl, lenh, w, wlen, a, nval, val)
-  @ccall libhsl_subset_64.mc64q_64_(ip::Ptr{Int64}, lenl::Ptr{Int64}, lenh::Ptr{Int64},
-                                    w::Ptr{Int64}, wlen::Ref{Int64}, a::Ptr{Float32},
-                                    nval::Ref{Int64}, val::Ref{Float32})::Cvoid
-end
-
-function mc64u(id, mod, n, irn, lirn, ip, lenc, fc, iperm, num, numx, pr, arp, cv, out)
-  @ccall libhsl.mc64u_(id::Ref{Cint}, mod::Ref{Cint}, n::Ref{Cint}, irn::Ptr{Cint}, lirn::Ref{Cint},
-                       ip::Ptr{Cint}, lenc::Ptr{Cint}, fc::Ptr{Cint}, iperm::Ptr{Cint},
-                       num::Ref{Cint}, numx::Ref{Cint}, pr::Ptr{Cint}, arp::Ptr{Cint},
-                       cv::Ptr{Cint}, out::Ptr{Cint})::Cvoid
-end
-
-function mc64u_64(id, mod, n, irn, lirn, ip, lenc, fc, iperm, num, numx, pr, arp, cv, out)
-  @ccall libhsl_subset_64.mc64u_64_(id::Ref{Int64}, mod::Ref{Int64}, n::Ref{Int64}, irn::Ptr{Int64},
-                                    lirn::Ref{Int64}, ip::Ptr{Int64}, lenc::Ptr{Int64},
-                                    fc::Ptr{Int64}, iperm::Ptr{Int64}, num::Ref{Int64},
-                                    numx::Ref{Int64}, pr::Ptr{Int64}, arp::Ptr{Int64},
-                                    cv::Ptr{Int64}, out::Ptr{Int64})::Cvoid
-end
-
-function mc64w(n, ne, ip, irn, a, iperm, num, jperm, out, pr, q, l, u, d)
-  @ccall libhsl.mc64w_(n::Ref{Cint}, ne::Ref{Cint}, ip::Ptr{Cint}, irn::Ptr{Cint}, a::Ptr{Float32},
-                       iperm::Ptr{Cint}, num::Ref{Cint}, jperm::Ptr{Cint}, out::Ptr{Cint},
-                       pr::Ptr{Cint}, q::Ptr{Cint}, l::Ptr{Cint}, u::Ptr{Float32},
-                       d::Ptr{Float32})::Cvoid
-end
-
-function mc64w_64(n, ne, ip, irn, a, iperm, num, jperm, out, pr, q, l, u, d)
-  @ccall libhsl_subset_64.mc64w_64_(n::Ref{Int64}, ne::Ref{Int64}, ip::Ptr{Int64}, irn::Ptr{Int64},
-                                    a::Ptr{Float32}, iperm::Ptr{Int64}, num::Ref{Int64},
-                                    jperm::Ptr{Int64}, out::Ptr{Int64}, pr::Ptr{Int64},
-                                    q::Ptr{Int64}, l::Ptr{Int64}, u::Ptr{Float32},
-                                    d::Ptr{Float32})::Cvoid
-end
diff --git a/src/Fortran/mc71.jl b/src/Fortran/mc71.jl
deleted file mode 100644
index e2eaaca..0000000
--- a/src/Fortran/mc71.jl
+++ /dev/null
@@ -1,21 +0,0 @@
-function mc71ad(n, kase, x, est, w, iw, keep)
-  @ccall libhsl.mc71ad_(n::Ref{Cint}, kase::Ref{Cint}, x::Ptr{Float64}, est::Ref{Float64},
-                        w::Ptr{Float64}, iw::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
-end
-
-function mc71ad_64(n, kase, x, est, w, iw, keep)
-  @ccall libhsl_subset_64.mc71ad_64_(n::Ref{Int64}, kase::Ref{Int64}, x::Ptr{Float64},
-                                     est::Ref{Float64}, w::Ptr{Float64}, iw::Ptr{Int64},
-                                     keep::Ptr{Int64})::Cvoid
-end
-
-function mc71a(n, kase, x, est, w, iw, keep)
-  @ccall libhsl.mc71a_(n::Ref{Cint}, kase::Ref{Cint}, x::Ptr{Float32}, est::Ref{Float32},
-                       w::Ptr{Float32}, iw::Ptr{Cint}, keep::Ptr{Cint})::Cvoid
-end
-
-function mc71a_64(n, kase, x, est, w, iw, keep)
-  @ccall libhsl_subset_64.mc71a_64_(n::Ref{Int64}, kase::Ref{Int64}, x::Ptr{Float32},
-                                    est::Ref{Float32}, w::Ptr{Float32}, iw::Ptr{Int64},
-                                    keep::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/mi21.jl b/src/Fortran/mi21.jl
deleted file mode 100644
index a9e9e30..0000000
--- a/src/Fortran/mi21.jl
+++ /dev/null
@@ -1,48 +0,0 @@
-function mi21id(icntl, cntl, isave, rsave)
-  @ccall libhsl.mi21id_(icntl::Ptr{Cint}, cntl::Ptr{Float64}, isave::Ptr{Cint},
-                        rsave::Ptr{Float64})::Cvoid
-end
-
-function mi21id_64(icntl, cntl, isave, rsave)
-  @ccall libhsl_subset_64.mi21id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64}, isave::Ptr{Int64},
-                                     rsave::Ptr{Float64})::Cvoid
-end
-
-function mi21ad(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
-  @ccall libhsl.mi21ad_(iact::Ref{Cint}, n::Ref{Cint}, w::Ptr{Float64}, ldw::Ref{Cint},
-                        locy::Ref{Cint}, locz::Ref{Cint}, resid::Ref{Float64}, icntl::Ptr{Cint},
-                        cntl::Ptr{Float64}, info::Ptr{Cint}, isave::Ptr{Cint},
-                        rsave::Ptr{Float64})::Cvoid
-end
-
-function mi21ad_64(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
-  @ccall libhsl_subset_64.mi21ad_64_(iact::Ref{Int64}, n::Ref{Int64}, w::Ptr{Float64},
-                                     ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
-                                     resid::Ref{Float64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
-                                     info::Ptr{Int64}, isave::Ptr{Int64},
-                                     rsave::Ptr{Float64})::Cvoid
-end
-
-function mi21i(icntl, cntl, isave, rsave)
-  @ccall libhsl.mi21i_(icntl::Ptr{Cint}, cntl::Ptr{Float32}, isave::Ptr{Cint},
-                       rsave::Ptr{Float32})::Cvoid
-end
-
-function mi21i_64(icntl, cntl, isave, rsave)
-  @ccall libhsl_subset_64.mi21i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32}, isave::Ptr{Int64},
-                                    rsave::Ptr{Float32})::Cvoid
-end
-
-function mi21a(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
-  @ccall libhsl.mi21a_(iact::Ref{Cint}, n::Ref{Cint}, w::Ptr{Float32}, ldw::Ref{Cint},
-                       locy::Ref{Cint}, locz::Ref{Cint}, resid::Ref{Float32}, icntl::Ptr{Cint},
-                       cntl::Ptr{Float32}, info::Ptr{Cint}, isave::Ptr{Cint},
-                       rsave::Ptr{Float32})::Cvoid
-end
-
-function mi21a_64(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
-  @ccall libhsl_subset_64.mi21a_64_(iact::Ref{Int64}, n::Ref{Int64}, w::Ptr{Float32},
-                                    ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
-                                    resid::Ref{Float32}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
-                                    info::Ptr{Int64}, isave::Ptr{Int64}, rsave::Ptr{Float32})::Cvoid
-end
diff --git a/src/Fortran/mi24.jl b/src/Fortran/mi24.jl
deleted file mode 100644
index cc6bf6c..0000000
--- a/src/Fortran/mi24.jl
+++ /dev/null
@@ -1,56 +0,0 @@
-function mi24id(icntl, cntl, isave, rsave, lsave)
-  @ccall libhsl.mi24id_(icntl::Ptr{Cint}, cntl::Ptr{Float64}, isave::Ptr{Cint}, rsave::Ptr{Float64},
-                        lsave::Ptr{Cint})::Cvoid
-end
-
-function mi24id_64(icntl, cntl, isave, rsave, lsave)
-  @ccall libhsl_subset_64.mi24id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64}, isave::Ptr{Int64},
-                                     rsave::Ptr{Float64}, lsave::Ptr{Int64})::Cvoid
-end
-
-function mi24ad(iact, n, m, w, ldw, locy, locz, h, ldh, resid, icntl, cntl, info, isave, rsave,
-                lsave)
-  @ccall libhsl.mi24ad_(iact::Ref{Cint}, n::Ref{Cint}, m::Ref{Cint}, w::Ptr{Float64},
-                        ldw::Ref{Cint}, locy::Ref{Cint}, locz::Ref{Cint}, h::Ptr{Float64},
-                        ldh::Ref{Cint}, resid::Ref{Float64}, icntl::Ptr{Cint}, cntl::Ptr{Float64},
-                        info::Ptr{Cint}, isave::Ptr{Cint}, rsave::Ptr{Float64},
-                        lsave::Ptr{Cint})::Cvoid
-end
-
-function mi24ad_64(iact, n, m, w, ldw, locy, locz, h, ldh, resid, icntl, cntl, info, isave, rsave,
-                   lsave)
-  @ccall libhsl_subset_64.mi24ad_64_(iact::Ref{Int64}, n::Ref{Int64}, m::Ref{Int64},
-                                     w::Ptr{Float64}, ldw::Ref{Int64}, locy::Ref{Int64},
-                                     locz::Ref{Int64}, h::Ptr{Float64}, ldh::Ref{Int64},
-                                     resid::Ref{Float64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
-                                     info::Ptr{Int64}, isave::Ptr{Int64}, rsave::Ptr{Float64},
-                                     lsave::Ptr{Int64})::Cvoid
-end
-
-function mi24i(icntl, cntl, isave, rsave, lsave)
-  @ccall libhsl.mi24i_(icntl::Ptr{Cint}, cntl::Ptr{Float32}, isave::Ptr{Cint}, rsave::Ptr{Float32},
-                       lsave::Ptr{Cint})::Cvoid
-end
-
-function mi24i_64(icntl, cntl, isave, rsave, lsave)
-  @ccall libhsl_subset_64.mi24i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32}, isave::Ptr{Int64},
-                                    rsave::Ptr{Float32}, lsave::Ptr{Int64})::Cvoid
-end
-
-function mi24a(iact, n, m, w, ldw, locy, locz, h, ldh, resid, icntl, cntl, info, isave, rsave,
-               lsave)
-  @ccall libhsl.mi24a_(iact::Ref{Cint}, n::Ref{Cint}, m::Ref{Cint}, w::Ptr{Float32}, ldw::Ref{Cint},
-                       locy::Ref{Cint}, locz::Ref{Cint}, h::Ptr{Float32}, ldh::Ref{Cint},
-                       resid::Ref{Float32}, icntl::Ptr{Cint}, cntl::Ptr{Float32}, info::Ptr{Cint},
-                       isave::Ptr{Cint}, rsave::Ptr{Float32}, lsave::Ptr{Cint})::Cvoid
-end
-
-function mi24a_64(iact, n, m, w, ldw, locy, locz, h, ldh, resid, icntl, cntl, info, isave, rsave,
-                  lsave)
-  @ccall libhsl_subset_64.mi24a_64_(iact::Ref{Int64}, n::Ref{Int64}, m::Ref{Int64}, w::Ptr{Float32},
-                                    ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
-                                    h::Ptr{Float32}, ldh::Ref{Int64}, resid::Ref{Float32},
-                                    icntl::Ptr{Int64}, cntl::Ptr{Float32}, info::Ptr{Int64},
-                                    isave::Ptr{Int64}, rsave::Ptr{Float32},
-                                    lsave::Ptr{Int64})::Cvoid
-end
diff --git a/src/Fortran/mi26.jl b/src/Fortran/mi26.jl
deleted file mode 100644
index 4ada9a7..0000000
--- a/src/Fortran/mi26.jl
+++ /dev/null
@@ -1,48 +0,0 @@
-function mi26id(icntl, cntl, isave, rsave)
-  @ccall libhsl.mi26id_(icntl::Ptr{Cint}, cntl::Ptr{Float64}, isave::Ptr{Cint},
-                        rsave::Ptr{Float64})::Cvoid
-end
-
-function mi26id_64(icntl, cntl, isave, rsave)
-  @ccall libhsl_subset_64.mi26id_64_(icntl::Ptr{Int64}, cntl::Ptr{Float64}, isave::Ptr{Int64},
-                                     rsave::Ptr{Float64})::Cvoid
-end
-
-function mi26ad(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
-  @ccall libhsl.mi26ad_(iact::Ref{Cint}, n::Ref{Cint}, w::Ptr{Float64}, ldw::Ref{Cint},
-                        locy::Ref{Cint}, locz::Ref{Cint}, resid::Ref{Float64}, icntl::Ptr{Cint},
-                        cntl::Ptr{Float64}, info::Ptr{Cint}, isave::Ptr{Cint},
-                        rsave::Ptr{Float64})::Cvoid
-end
-
-function mi26ad_64(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
-  @ccall libhsl_subset_64.mi26ad_64_(iact::Ref{Int64}, n::Ref{Int64}, w::Ptr{Float64},
-                                     ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
-                                     resid::Ref{Float64}, icntl::Ptr{Int64}, cntl::Ptr{Float64},
-                                     info::Ptr{Int64}, isave::Ptr{Int64},
-                                     rsave::Ptr{Float64})::Cvoid
-end
-
-function mi26i(icntl, cntl, isave, rsave)
-  @ccall libhsl.mi26i_(icntl::Ptr{Cint}, cntl::Ptr{Float32}, isave::Ptr{Cint},
-                       rsave::Ptr{Float32})::Cvoid
-end
-
-function mi26i_64(icntl, cntl, isave, rsave)
-  @ccall libhsl_subset_64.mi26i_64_(icntl::Ptr{Int64}, cntl::Ptr{Float32}, isave::Ptr{Int64},
-                                    rsave::Ptr{Float32})::Cvoid
-end
-
-function mi26a(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
-  @ccall libhsl.mi26a_(iact::Ref{Cint}, n::Ref{Cint}, w::Ptr{Float32}, ldw::Ref{Cint},
-                       locy::Ref{Cint}, locz::Ref{Cint}, resid::Ref{Float32}, icntl::Ptr{Cint},
-                       cntl::Ptr{Float32}, info::Ptr{Cint}, isave::Ptr{Cint},
-                       rsave::Ptr{Float32})::Cvoid
-end
-
-function mi26a_64(iact, n, w, ldw, locy, locz, resid, icntl, cntl, info, isave, rsave)
-  @ccall libhsl_subset_64.mi26a_64_(iact::Ref{Int64}, n::Ref{Int64}, w::Ptr{Float32},
-                                    ldw::Ref{Int64}, locy::Ref{Int64}, locz::Ref{Int64},
-                                    resid::Ref{Float32}, icntl::Ptr{Int64}, cntl::Ptr{Float32},
-                                    info::Ptr{Int64}, isave::Ptr{Int64}, rsave::Ptr{Float32})::Cvoid
-end
diff --git a/src/Fortran/openmp.jl b/src/Fortran/openmp.jl
index 1529d74..2495594 100644
--- a/src/Fortran/openmp.jl
+++ b/src/Fortran/openmp.jl
@@ -1,3 +1,5 @@
 function omp_set_num_threads(num_threads)
   @ccall libhsl.omp_set_num_threads_(num_threads::Ref{Cint})::Cvoid
+  @ccall libhsl_subset.omp_set_num_threads_(num_threads::Ref{Cint})::Cvoid
+  @ccall libhsl_subset_64.omp_set_num_threads_(num_threads::Ref{Cint})::Cvoid
 end
diff --git a/src/Fortran/ym01.jl b/src/Fortran/ym01.jl
deleted file mode 100644
index fab67df..0000000
--- a/src/Fortran/ym01.jl
+++ /dev/null
@@ -1,43 +0,0 @@
-function ym01ad(m, n, nzin, nzout, ibw, itype, nonsin, irn, a, jcolst, iw)
-  @ccall libhsl.ym01ad_(m::Ref{Cint}, n::Ref{Cint}, nzin::Ref{Cint}, nzout::Ref{Cint},
-                        ibw::Ref{Cint}, itype::Ref{Cint}, nonsin::Ref{Cint}, irn::Ptr{Cint},
-                        a::Ptr{Float64}, jcolst::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
-end
-
-function ym01ad_64(m, n, nzin, nzout, ibw, itype, nonsin, irn, a, jcolst, iw)
-  @ccall libhsl_subset_64.ym01ad_64_(m::Ref{Int64}, n::Ref{Int64}, nzin::Ref{Int64},
-                                     nzout::Ref{Int64}, ibw::Ref{Int64}, itype::Ref{Int64},
-                                     nonsin::Ref{Int64}, irn::Ptr{Int64}, a::Ptr{Float64},
-                                     jcolst::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
-function ym01bd(n, m, perm, invprm)
-  @ccall libhsl.ym01bd_(n::Ref{Cint}, m::Ref{Cint}, perm::Ptr{Cint}, invprm::Ptr{Cint})::Cvoid
-end
-
-function ym01bd_64(n, m, perm, invprm)
-  @ccall libhsl_subset_64.ym01bd_64_(n::Ref{Int64}, m::Ref{Int64}, perm::Ptr{Int64},
-                                     invprm::Ptr{Int64})::Cvoid
-end
-
-function ym01a(m, n, nzin, nzout, ibw, itype, nonsin, irn, a, jcolst, iw)
-  @ccall libhsl.ym01a_(m::Ref{Cint}, n::Ref{Cint}, nzin::Ref{Cint}, nzout::Ref{Cint},
-                       ibw::Ref{Cint}, itype::Ref{Cint}, nonsin::Ref{Cint}, irn::Ptr{Cint},
-                       a::Ptr{Float32}, jcolst::Ptr{Cint}, iw::Ptr{Cint})::Cvoid
-end
-
-function ym01a_64(m, n, nzin, nzout, ibw, itype, nonsin, irn, a, jcolst, iw)
-  @ccall libhsl_subset_64.ym01a_64_(m::Ref{Int64}, n::Ref{Int64}, nzin::Ref{Int64},
-                                    nzout::Ref{Int64}, ibw::Ref{Int64}, itype::Ref{Int64},
-                                    nonsin::Ref{Int64}, irn::Ptr{Int64}, a::Ptr{Float32},
-                                    jcolst::Ptr{Int64}, iw::Ptr{Int64})::Cvoid
-end
-
-function ym01b(n, m, perm, invprm)
-  @ccall libhsl.ym01b_(n::Ref{Cint}, m::Ref{Cint}, perm::Ptr{Cint}, invprm::Ptr{Cint})::Cvoid
-end
-
-function ym01b_64(n, m, perm, invprm)
-  @ccall libhsl_subset_64.ym01b_64_(n::Ref{Int64}, m::Ref{Int64}, perm::Ptr{Int64},
-                                    invprm::Ptr{Int64})::Cvoid
-end
diff --git a/src/HSL.jl b/src/HSL.jl
index bd28bad..c2317a9 100644
--- a/src/HSL.jl
+++ b/src/HSL.jl
@@ -3,13 +3,19 @@ module HSL
 using Libdl
 using LinearAlgebra
 using SparseArrays
+using Quadmath
 
 if haskey(ENV, "JULIA_HSL_LIBRARY_PATH")
   const libhsl = joinpath(ENV["JULIA_HSL_LIBRARY_PATH"], "libhsl.$dlext")
+  const libhsl_subset = joinpath(ENV["JULIA_HSL_LIBRARY_PATH"], "libhsl_subset.$dlext")
+  const libhsl_subset_64 = joinpath(ENV["JULIA_HSL_LIBRARY_PATH"], "libhsl_subset_64.$dlext")
   const HSL_INSTALLATION = "CUSTOM"
 else
-  using OpenBLAS32_jll
-  using HSL_jll
+  import OpenBLAS32_jll
+  import HSL_jll
+  const libhsl = HSL_jll.libhsl
+  const libhsl_subset = HSL_jll.libhsl_subset
+  const libhsl_subset_64 = HSL_jll.libhsl_subset_64
   const HSL_INSTALLATION = "ARTIFACT"
 end
 
diff --git a/src/wrappers.jl b/src/wrappers.jl
index 689a59f..c4711fa 100644
--- a/src/wrappers.jl
+++ b/src/wrappers.jl
@@ -20,111 +20,152 @@ include("C/hsl_mi20.jl")
 include("C/hsl_mi28.jl")
 
 # Wrappers for HSL packages written in Fortran 77
-include("Fortran/btf.jl")
-include("Fortran/ea16.jl")
-include("Fortran/ea22.jl")
-include("Fortran/ea25.jl")
-include("Fortran/eb13.jl")
-include("Fortran/eb22.jl")
-include("Fortran/ep25.jl")
-include("Fortran/fa01.jl")
-include("Fortran/fa04.jl")
-include("Fortran/fa14.jl")
-include("Fortran/fd05.jl")
-include("Fortran/fd15.jl")
-include("Fortran/id05.jl")
-include("Fortran/kb05.jl")
-include("Fortran/kb06.jl")
-include("Fortran/kb07.jl")
-include("Fortran/kb08.jl")
-include("Fortran/la04.jl")
-include("Fortran/la15.jl")
-include("Fortran/ma27.jl")
-include("Fortran/ma28.jl")
-include("Fortran/ma30.jl")
-include("Fortran/ma33.jl")
-include("Fortran/ma38.jl")
-include("Fortran/ma41.jl")
-include("Fortran/ma42.jl")
-include("Fortran/ma43.jl")
-include("Fortran/ma44.jl")
-include("Fortran/ma46.jl")
-include("Fortran/ma48.jl")
-include("Fortran/ma49.jl")
-include("Fortran/ma50.jl")
-include("Fortran/ma51.jl")
-include("Fortran/ma52.jl")
-include("Fortran/ma57.jl")
-include("Fortran/ma60.jl")
-include("Fortran/ma61.jl")
-include("Fortran/ma62.jl")
-include("Fortran/ma65.jl")
-include("Fortran/ma67.jl")
-include("Fortran/ma69.jl")
-include("Fortran/ma72.jl")
-include("Fortran/ma75.jl")
-include("Fortran/mc13.jl")
-include("Fortran/mc19.jl")
-include("Fortran/mc20.jl")
-include("Fortran/mc21.jl")
-include("Fortran/mc22.jl")
-include("Fortran/mc23.jl")
-include("Fortran/mc24.jl")
-include("Fortran/mc25.jl")
-include("Fortran/mc26.jl")
-include("Fortran/mc29.jl")
-include("Fortran/mc30.jl")
-include("Fortran/mc33.jl")
-include("Fortran/mc34.jl")
-include("Fortran/mc36.jl")
-include("Fortran/mc37.jl")
-include("Fortran/mc38.jl")
-include("Fortran/mc44.jl")
-include("Fortran/mc46.jl")
-include("Fortran/mc47.jl")
-include("Fortran/mc49.jl")
-include("Fortran/mc53.jl")
-include("Fortran/mc54.jl")
-include("Fortran/mc55.jl")
-include("Fortran/mc56.jl")
-include("Fortran/mc57.jl")
-include("Fortran/mc58.jl")
-include("Fortran/mc59.jl")
-include("Fortran/mc60.jl")
-include("Fortran/mc61.jl")
-include("Fortran/mc62.jl")
-include("Fortran/mc63.jl")
-include("Fortran/mc64.jl")
-include("Fortran/mc67.jl")
-include("Fortran/mc71.jl")
-include("Fortran/mc72.jl")
-include("Fortran/mc75.jl")
-include("Fortran/mc77.jl")
-include("Fortran/me20.jl")
-include("Fortran/me22.jl")
-include("Fortran/me38.jl")
-include("Fortran/me42.jl")
-include("Fortran/me43.jl")
-include("Fortran/me48.jl")
-include("Fortran/me50.jl")
-include("Fortran/me57.jl")
-include("Fortran/me62.jl")
-include("Fortran/mf29.jl")
-include("Fortran/mf30.jl")
-include("Fortran/mf36.jl")
-include("Fortran/mf64.jl")
-include("Fortran/mf71.jl")
-include("Fortran/mi11.jl")
-include("Fortran/mi12.jl")
-include("Fortran/mi15.jl")
-include("Fortran/mi21.jl")
-include("Fortran/mi23.jl")
-include("Fortran/mi24.jl")
-include("Fortran/mi25.jl")
-include("Fortran/mi26.jl")
-include("Fortran/ns23.jl")
-include("Fortran/pa16.jl")
-include("Fortran/pa17.jl")
-include("Fortran/td22.jl")
-include("Fortran/ym01.jl")
-include("Fortran/ym11.jl")
+include("Fortran/libhsl/btf.jl")
+include("Fortran/libhsl/ea16.jl")
+include("Fortran/libhsl/ea22.jl")
+include("Fortran/libhsl/ea25.jl")
+include("Fortran/libhsl/eb13.jl")
+include("Fortran/libhsl/eb22.jl")
+include("Fortran/libhsl/ep25.jl")
+include("Fortran/libhsl/fa01.jl")
+include("Fortran/libhsl/fa04.jl")
+include("Fortran/libhsl/fa14.jl")
+include("Fortran/libhsl/fd05.jl")
+include("Fortran/libhsl/fd15.jl")
+include("Fortran/libhsl/id05.jl")
+include("Fortran/libhsl/kb05.jl")
+include("Fortran/libhsl/kb06.jl")
+include("Fortran/libhsl/kb07.jl")
+include("Fortran/libhsl/kb08.jl")
+include("Fortran/libhsl/la04.jl")
+include("Fortran/libhsl/la15.jl")
+include("Fortran/libhsl/ma27.jl")
+include("Fortran/libhsl/ma28.jl")
+include("Fortran/libhsl/ma30.jl")
+include("Fortran/libhsl/ma33.jl")
+include("Fortran/libhsl/ma38.jl")
+include("Fortran/libhsl/ma41.jl")
+include("Fortran/libhsl/ma42.jl")
+include("Fortran/libhsl/ma43.jl")
+include("Fortran/libhsl/ma44.jl")
+include("Fortran/libhsl/ma46.jl")
+include("Fortran/libhsl/ma48.jl")
+include("Fortran/libhsl/ma49.jl")
+include("Fortran/libhsl/ma50.jl")
+include("Fortran/libhsl/ma51.jl")
+include("Fortran/libhsl/ma52.jl")
+include("Fortran/libhsl/ma57.jl")
+include("Fortran/libhsl/ma60.jl")
+include("Fortran/libhsl/ma61.jl")
+include("Fortran/libhsl/ma62.jl")
+include("Fortran/libhsl/ma65.jl")
+include("Fortran/libhsl/ma67.jl")
+include("Fortran/libhsl/ma69.jl")
+include("Fortran/libhsl/ma72.jl")
+include("Fortran/libhsl/ma75.jl")
+include("Fortran/libhsl/mc13.jl")
+include("Fortran/libhsl/mc19.jl")
+include("Fortran/libhsl/mc20.jl")
+include("Fortran/libhsl/mc21.jl")
+include("Fortran/libhsl/mc22.jl")
+include("Fortran/libhsl/mc23.jl")
+include("Fortran/libhsl/mc24.jl")
+include("Fortran/libhsl/mc25.jl")
+include("Fortran/libhsl/mc26.jl")
+include("Fortran/libhsl/mc29.jl")
+include("Fortran/libhsl/mc30.jl")
+include("Fortran/libhsl/mc33.jl")
+include("Fortran/libhsl/mc34.jl")
+include("Fortran/libhsl/mc36.jl")
+include("Fortran/libhsl/mc37.jl")
+include("Fortran/libhsl/mc38.jl")
+include("Fortran/libhsl/mc44.jl")
+include("Fortran/libhsl/mc46.jl")
+include("Fortran/libhsl/mc47.jl")
+include("Fortran/libhsl/mc49.jl")
+include("Fortran/libhsl/mc53.jl")
+include("Fortran/libhsl/mc54.jl")
+include("Fortran/libhsl/mc55.jl")
+include("Fortran/libhsl/mc56.jl")
+include("Fortran/libhsl/mc57.jl")
+include("Fortran/libhsl/mc58.jl")
+include("Fortran/libhsl/mc59.jl")
+include("Fortran/libhsl/mc60.jl")
+include("Fortran/libhsl/mc61.jl")
+include("Fortran/libhsl/mc62.jl")
+include("Fortran/libhsl/mc63.jl")
+include("Fortran/libhsl/mc64.jl")
+include("Fortran/libhsl/mc67.jl")
+include("Fortran/libhsl/mc71.jl")
+include("Fortran/libhsl/mc72.jl")
+include("Fortran/libhsl/mc75.jl")
+include("Fortran/libhsl/mc77.jl")
+include("Fortran/libhsl/me20.jl")
+include("Fortran/libhsl/me22.jl")
+include("Fortran/libhsl/me38.jl")
+include("Fortran/libhsl/me42.jl")
+include("Fortran/libhsl/me43.jl")
+include("Fortran/libhsl/me48.jl")
+include("Fortran/libhsl/me50.jl")
+include("Fortran/libhsl/me57.jl")
+include("Fortran/libhsl/me62.jl")
+include("Fortran/libhsl/mf29.jl")
+include("Fortran/libhsl/mf30.jl")
+include("Fortran/libhsl/mf36.jl")
+include("Fortran/libhsl/mf64.jl")
+include("Fortran/libhsl/mf71.jl")
+include("Fortran/libhsl/mi11.jl")
+include("Fortran/libhsl/mi12.jl")
+include("Fortran/libhsl/mi15.jl")
+include("Fortran/libhsl/mi21.jl")
+include("Fortran/libhsl/mi23.jl")
+include("Fortran/libhsl/mi24.jl")
+include("Fortran/libhsl/mi25.jl")
+include("Fortran/libhsl/mi26.jl")
+include("Fortran/libhsl/ns23.jl")
+include("Fortran/libhsl/pa16.jl")
+include("Fortran/libhsl/pa17.jl")
+include("Fortran/libhsl/td22.jl")
+include("Fortran/libhsl/ym01.jl")
+include("Fortran/libhsl/ym11.jl")
+
+include("Fortran/hsl_subset/fa01.jl")
+include("Fortran/hsl_subset/fa04.jl")
+include("Fortran/hsl_subset/fa14.jl")
+include("Fortran/hsl_subset/fd15.jl")
+include("Fortran/hsl_subset/kb07.jl")
+include("Fortran/hsl_subset/kb21.jl")
+include("Fortran/hsl_subset/la04.jl")
+include("Fortran/hsl_subset/la15.jl")
+include("Fortran/hsl_subset/ma27.jl")
+include("Fortran/hsl_subset/ma28.jl")
+include("Fortran/hsl_subset/ma30.jl")
+include("Fortran/hsl_subset/ma33.jl")
+include("Fortran/hsl_subset/ma57.jl")
+include("Fortran/hsl_subset/ma61.jl")
+include("Fortran/hsl_subset/mc13.jl")
+include("Fortran/hsl_subset/mc19.jl")
+include("Fortran/hsl_subset/mc20.jl")
+include("Fortran/hsl_subset/mc21.jl")
+include("Fortran/hsl_subset/mc22.jl")
+include("Fortran/hsl_subset/mc23.jl")
+include("Fortran/hsl_subset/mc24.jl")
+include("Fortran/hsl_subset/mc29.jl")
+include("Fortran/hsl_subset/mc30.jl")
+include("Fortran/hsl_subset/mc34.jl")
+include("Fortran/hsl_subset/mc37.jl")
+include("Fortran/hsl_subset/mc47.jl")
+include("Fortran/hsl_subset/mc49.jl")
+include("Fortran/hsl_subset/mc54.jl")
+include("Fortran/hsl_subset/mc57.jl")
+include("Fortran/hsl_subset/mc59.jl")
+include("Fortran/hsl_subset/mc60.jl")
+include("Fortran/hsl_subset/mc61.jl")
+include("Fortran/hsl_subset/mc64.jl")
+include("Fortran/hsl_subset/mc71.jl")
+include("Fortran/hsl_subset/mc77.jl")
+include("Fortran/hsl_subset/mi21.jl")
+include("Fortran/hsl_subset/mi24.jl")
+include("Fortran/hsl_subset/mi26.jl")
+include("Fortran/hsl_subset/ym01.jl")
+include("Fortran/hsl_subset/ym11.jl")