HSL.jl
HSL.jl copied to clipboard
Interfacing the HSL
Below is the full list of HSL packages from https://www.hsl.rl.ac.uk/catalogue.
This issue is used to track the progress on HSL interfaces and to assign a priority to each. Next to each package, please indicate:
- a link to the pull request where the interface is implemented;
- a priority level: π₯ = high, π₯ = medium, π₯ = low.
As a guideline:
- functionality that is already available in pure Julia should have low priority;
- functionality that is already available via an interface to another low-level library should have low or medium priority.
Tick the box when an interface is complete and the pull request has been merged.
We will proceed in stages.
-
Stage 1:
- [ ] Packages with a C interface :trophy:
-
Stage 2:
- [ ] MA Section
- [ ] MC Section
-
Next stages: TBD
EIGENVALUES AND EIGENVECTORS
EA: Eigenvalues and eigenvectors of real symmetric matrices
- [ ] EA16 Compute selected eigenpairs using rational Lanczos method
- [ ] HSL_EA19 Sparse symmetric or Hermitian: leftmost eigenpairs
- [ ] HSL_EA20 s-root of a sparse self-adjoint positive-definite pencil
- [ ] EA22 Sparse symmetric: simultaneous iteration
- [ ] EA25 Sparse symmetric: Lanczos for the spectrum
EB: Eigenvalues and eigenvectors of general matrices
EP: Parallel eigenvalues and eigenvectors of real symmetric matrices
- [ ] EP25 Sparse symmetric: Lanczos for the spectrum
MATHEMATICAL FUNCTIONS
FA: Random numbers
FD: Simple Functions
- [ ] FD15 Real-valued machine constants
SORTING
KB: Sorting numbers
- [ ] KB05 Sort numbers into ascending order using Quicksort
- [ ] KB06 Sort numbers into descending order using Quicksort
- [x] KB07 Sort numbers into ascending order with indexing using Quicksort
- [ ] KB08 Sort numbers into descending order with indexing using Quicksort
- [ ] HSL_KB22 Sorting reals using the Heapsort method
LINEAR PROGRAMMING
LA: Linear prgramming, i.e. minimization of a linear function subject to linear constraints
- [ ] LA04 Sparse linear programming: steepest-edge simplex method
- [ ] LA15 Sparse mathematical programming bases: factorize and update
LINEAR ALGEBRA
MA: Solution of linear systems
- [ ] MA38 Sparse unsymmetric system: unsymmetric multifrontal method
- [ ] MA41 Sparse unsymmetric system: unsymmetric multifrontal method
- [ ] MA42 Sparse unsymmetric system: out-of-core frontal method
- [ ] HSL_MA42_ELEMENT Unsymmetric finite-element system: out-of-core frontal method (real and complex)
- [ ] HSL_MA42 Sparse unsymmetric system: out-of-core frontal method
- [ ] MA43 Sparse unsymmetric system: row-by-row frontal method
- [ ] MA44 Over-determined linear system: least-squares solution
- [ ] MA46 Sparse unsymmetric finite-element system: multifrontal
- [ ] MA48 Sparse unsymmetric system: driver for conventional direct method
- [ ] HSL_MA48 Sparse unsymmetric system: driver for conventional direct method :trophy: π₯
- [ ] MA49 Sparse over-determined system: least squares by QR
- [ ] MA50 Sparse unsymmetric system: conventional direct method
- [ ] MA51 Auxiliary for MA48 and MA50: identify ignored rows or columns in the rectangular or rank-deficient case, compute determinant
- [ ] MA52 Sparse unsymmetric finite-element system: out-of-core multiple front method
- [ ] HSL_MA54 Definite symmetric full matrix: partial or complete factorization and solution
- [ ] HSL_MA55 Band symmetric positive-definite system
- [ ] MA57 Sparse symmetric system: multifrontal method
- [ ] HSL_MA57 Sparse symmetric system: multifrontal method :trophy: π₯
- [ ] MA60 Iterative refinement and error estimation
- [ ] MA61 Sparse symmetric positive-definite system: incomplete factorization
- [ ] MA62 Sparse symmetric finite-element system: out-of-core frontal method
- [ ] HSL_MA64 Indefinite symmetric full matrix: partial or complete factorization and solution
- [ ] MA65 Unsymmetric banded system of linear equations
- [ ] MA67 Sparse symmetric system, zeros on diagonal: blocked conventional
- [ ] MA69 Unsymmetric system whose leading subsystem is easy to solve
- [ ] HSL_MA69 Unsymmetric system whose leading subsystem is easy to solve
- [ ] MA72 Sparse symmetric finite-element system: out-of-core multiple front method
- [ ] HSL_MA74 Unsymmetric full matrix: partial or complete factorization and solution
- [ ] MA75 Sparse over-determined system: weighted least squares
- [ ] HSL_MA77 Sparse symmetric system: multifrontal out of core :trophy: π₯
- [ ] HSL_MA78 Sparse unsymmetric finite-element system: multifrontal out of core
- [ ] HSL_MA79 Sparse symmetric system: mixed precision
- [ ] HSL_MA85 Sparse diagonally-weighted linear least squares solver
- [ ] HSL_MA86 Sparse solver for real and complex indefinite matrices using OpenMP :trophy: π₯
- [ ] HSL_MA87 Sparse Cholesky solver for real/complex matrices using OpenMP :trophy: π₯
- [ ] HSL_MA97 Bit-compatible parallel sparse symmetric/Hermitian solver using OpenMP :trophy: π₯
MC: Computations with real matrices and vectors
- [ ] MC13 Permute a sparse matrix to block triangular form
- [x] MC21 Permute a sparse matrix to put entries on the diagonal
- [ ] MC22 Permute a sparse matrix given row and column permutations
- [ ] MC25 Permute a sparse matrix to block triangular form
- [ ] MC26 Sparse rectangular matrix: compute normal matrix
- [ ] MC29 Sparse unsymmetric matrix: calculate scaling factors
- [ ] MC30 Sparse symmetric matrix: calculate scaling factors
- [ ] MC33 Sparse unsymmetric matrix: permute to bordered block triangular form
- [ ] MC34 Sparse symmetric structure: expand from lower triangle
- [ ] HSL_MC34 Sparse symmetric structure: expand from lower triangle
- [ ] MC37 Sparse symmetric matrix: represent as a sum of element matrices
- [ ] MC38 Sparse rectangular matrix held by columns: transpose
- [ ] MC44 Unassembled finite-element matrix: generate the element or supervariable connectivity graph
- [ ] MC46 Sparse rectangular matrix held by rows: transpose
- [ ] MC47 Sparse symmetric pattern: approximate minimum-degree ordering allowing dense rows
- [ ] MC53 Generate an ordering for finite-element matrices within a subdomain
- [ ] MC54 Write a sparse matrix in Rutherford-Boeing format
- [ ] MC55 Write a supplementary file in Rutherford-Boeing format
- [ ] MC56 Read a file or a supplementary file held in Rutherford-Boeing format
- [ ] HSL_MC56 Read a file containing a sparse matrix held in format
- [ ] MC57 Assemble a set of finite-element matrices
- [ ] MC58 Estimate rank and find independent rows/columns of a sparse unsymmetric or rectangular matrix
- [ ] MC59 Sort a sparse matrix to an ordering by columns
- [ ] MC60 Sparse symmetric pattern: reduce the profile and wavefront
- [ ] MC61 Straightforward interface to MC60
- [ ] MC62 Generate a row ordering for a row-by-row frontal solver
- [ ] MC63 Generate an element assembly ordering for a frontal solver
- [ ] MC64 Permute and scale a sparse unsymmetric matrix to put large entries on the diagonal
- [ ] HSL_MC64 Permute and scale a sparse unsymmetric or rectangular matrix to put large entries on the diagonal :trophy: π₯
- [ ] HSL_MC65 Construct and manipulate matrices in compressed sparse row format
- [ ] HSL_MC66 Permute an unsymmetric sparse matrix to singly bordered blocked diagonal form
- [ ] MC67 Refine a profile-reducing permutation of a symmetric matrix
- [ ] HSL_MC68 Symmetric sparse matrix: compute elimination orderings :trophy: π₯
- [ ] HSL_MC69 Matrix format converter :trophy: π₯
- [ ] MC71 Unsymmetric matrix: estimate 1-norm
- [ ] MC72 Full unsymmetric matrix: calculate scaling factors
- [ ] HSL_MC73 Sparse symmetric matrix: compute Fiedler vector and permute to reduce the profile and wavefront
- [ ] MC75 Sparse unsymmetric matrix: estimate condition number
- [x] MC77 Sparse unsymmetric matrix: calculate scaling factors
- [ ] HSL_MC78 Analysis phase in Cholesky algorithm :trophy: π₯
- [ ] HSL_MC79 Sparse matrix: maximum matching and Dulmage-Mendelsohn decomposition :trophy: π₯
- [ ] HSL_MC80 Sparse symmetric matrix: matching-based ordering and scaling
- [ ] HSL_MC81 Randomized methods for low-rank matrix approximation
ME: Solution of complex linear systems and other calculations for complex matrices
- [ ] ME22 Permute a sparse matrix given row and column permutations
- [ ] ME38 Sparse unsymmetric system: unsymmetric multifrontal method
- [ ] ME42 Sparse unsymmetric system: out-of-core frontal method
- [ ] ME43 Sparse unsymmetric system: row-by-row frontal method
- [ ] ME48 Sparse unsymmetric system: driver for conventional direct method
- [ ] ME50 Sparse unsymmetric system: conventional direct method
- [ ] ME57 Sparse Hermitian or complex symmetric: multifrontal method
- [ ] HSL_ME57 Sparse solver for complex symmetric or Hermitian linear systems
- [ ] ME62 Sparse Hermitian or complex symmetric finite-element system: out-of-core frontal method
See also HSL_MA86 (Parallel sparse symmetric indefinite/Hermitian) HSL_MA87 (Parallel sparse Cholesky) HSL_MA97 (Bit-compatible parallel sparse symmetric/Hermitian)
MF: Computations with complex matrices and vectors
- [ ] MF29 Sparse unsymmetric matrix: calculate scaling factors
- [ ] MF30 Sparse symmetric matrix: calculate scaling factors
- [ ] MF64 Permute and scale a sparse complex unsymmetric matrix to put large entries on the diagonal
- [ ] MF71 Unsymmetric matrix: estimate 1-norm
MI: Iterative methods for sparse matrices
- [ ] HSL_MI02 Symmetric possibly-indefinite system: SYMMBK method
- [ ] MI11 Unsymmetric system: incomplete LU factorization
- [ ] MI12 Unsymmetric system: approximate-inverse preconditioner
- [ ] HSL_MI13 Preconditioners for saddle-point systems
- [ ] MI15 Unsymmetric system: flexible GMRES
- [ ] HSL_MI20 Unsymmetric system: algebraic multigrid preconditioner :trophy: π₯
- [ ] MI21 Symmetric positive-definite system: conjugate gradient method
- [ ] MI23 Unsymmetric system: CGS (conjugate gradient squared) method
- [ ] MI24 Unsymmetric system: GMRES (generalized minimal residual) method
- [ ] MI25 Unsymmetric system: BiCG (BiConjugate Gradient) method
- [ ] MI26 Unsymmetric system: BiCGStab (BiConjugate Gradient Stabilized) method
- [ ] HSL_MI27 Projected preconditioned conjugate gradient method for saddle-point systems
- [ ] HSL_MI28 Symmetric system: incomplete Cholesky factorization
- [ ] HSL_MI29 MPGMRES: an extension of GMRES which allows multiple preconditioners
- [ ] HSL_MI30 Symmetric indefinite saddle-point system: signed incomplete Cholesky factorization
- [ ] HSL_MI31 Symmetric positive-definite system: conjugate gradient method, stopping according to the A-norm of the error
- [ ] HSL_MI32 Symmetric possibly-indefinite system: MINRES method
- [ ] #134
MP: MPI dependant packages
- [ ] HSL_MP01 MPI constants
- [ ] HSL_MP42 Unsymmetric finite-element system: multiple-front method, element entry
- [ ] HSL_MP43 Sparse unsymmetric system: multiple-front method, equation entry
- [ ] HSL_MP48 Sparse unsymmetric system: parallel direct method
- [ ] HSL_MP54 Parallel Cholesky solver
- [ ] HSL_MP62 Symmetric finite-element system: multiple-front method
- [ ] HSL_MP82 Tall-skinny QR factorization
NONLINEAR EQUATIONS
NS: Solution of systems of nonlinear equations in several unknowns
- [ ] NS23 Sparse nonlinear over-determined equations: Marquardt method
INPUT/OUTPUT
OF: File management
- [ ] HSL_OF01 Fortran virtual memory
POLYNOMIAL AND RATIONAL FUNCTIONS
PA: Zeros of polynomials
- [ ] PA16 Complex coefficients: all roots by the method of Madsen and Reid
- [ ] PA17 Real coefficients: all roots by the method of Madsen and Reid
TEST PROGRAM GENERATORS
YM: Generate test programs for chapter M of the library
- [ ] YM11 Generate a random sparse matrix
FORTRAN SYSTEM FACILITES
ZB: Array allocation
- [ ] HSL_ZB01 Reallocate an array
ZD: Derived types
- [ ] HSL_ZD11 Derived type for sparse matrix storage schemes
I added a trophy :trophy: for packages with a C interface.
Thanks. I added a priority next to them.