This file contains sections on
This page tries to maintain a complete coverage of mathematical
software freely available on the web. I link (with very few exceptions)
only to public domain or liberally licenced mathematical software.
Please inform me about failing links so that I can repair them.
GRID, VRBBO and VRBBON - three unconstrained black box solvers
LMLS, Limited memory derivative-free least squares solver in Matlab
COMPASS, globally convergent algorithm for solving the Mixed Complementarity Problem (MCP) in Matlab (by Stefan Schmelzer)
OEIG - Solving overdetermined eigenvalue problems
BIRSVD - Bi-Iterative Regularized Singular Value Decomposition
VXQR1, gradient-free unconstrained minimization of a not necessarily smooth function of many continuous arguments
COCONUT, An open source solver platform for global optimization problems
SNOBFIT, MATLAB 6 package for the robust and fast solution of optimization problems with continuous variables varying within bound, possibly subject to additional soft constraints
GLS, Global Line Search in Matlab
MCS, Global Optimization by Multilevel Coordinate Search in Matlab
MINQ - General Definite and Bound Constrained Indefinite Quadratic
Programming in Matlab
based on subspace searches and an active set strategy
Matlab reverse communication method for finding a zero
ARFIT, Multivariate Autoregressive Time Series Analysis
in Matlab
(US Mirror Site)
REML, Restricted Maximum Likelihood Estimation in Fortran 90
You may also be interested in my book,
A. Neumaier,
Introduction to Numerical Analysis,
Cambridge Univ. Press, Cambridge 2001.
Table of Contents
(Local and) Global Optimization
LAPACK (the state of the art for the dense case)
MLAPACK, multiple-precision version of LAPACK
Freely Available Software for Linear Algebra (Survey, April 2021)
librsb, ibrary for high performance sparse matrix computations based on the "Recursive Sparse Blocks" (RSB) format (in C/C++Fortra, callable from Octave and Python)
FlexiBLAS, software for using multiple BLAS versions (by Köhler and Saak)
BLIS, for rapidly instantiating high- performance BLAS-like dense linear algebra operations
SPIKE-OpenMP banded solver, parallel algorithm for solving banded linear systems (in C and Fortran)
42 Video Lectures on Direct Methods for Sparse Linear Systems (by Tim Davis)
SuiteSparseQR, sparse multifrontal QR factorization package
libFLAME, infrastructure for developing dense (including banded) linear algebra libraries for sequential and multithreaded architectures
Regularization Tools, Matlab package for solving dense ill-posed linear problems (by Per Christian Hansen)
UMFPACK, Unsymmetric MultiFrontal method for solving unsymmetric
sparse linear systems. With Matlab interface
UMFPACK User Guide
PaStiX, Parallel Sparse matriX package for very large sparse linear systems based on direct and block ILU(k) iterative methods.
Blaze, high-performance C++ math library
with row and column views that enable computations with and assignments
to specific rows and columns of dense and sparse matrices
TxSSA, matrix sparsification algorithm and library
computes sparse approximation preserving left and right null spaces
MAGMA, dense and sparse linear algebra on heterogeneous CPU + GPU systems
KKTDirect, signed permuted Cholesky factorization of indefinite symmetric matrices
CHOLMOD, ANSI C routines for sparse Cholesky factorization and update/downdate. With Matlab interface
OSKI, Optimized Sparse Kernel Interface, sparse matrix operations in C (multply, triangular solve)
MUMPS, multifrontal massively parallel sparse direct solver in F90/MPI (with interfaces to Fortran, C, Matlab and Scilab)
FLAME, Formal Linear Algebra Method Environment
Matrix Computation Toolbox for MATLAB by Nick Higham
rank revealing factorizations in Matlab
FSPAK sparse matrix routines, including sparse inverse
FSPAK can be used without royalty for noncommercial puposes
MESCHACH dense and sparse numerical linear algebra in C
CSparse, Direct Methods for Sparse Linear System (in C, with Matlab interface)
TAUCS, A Library of Sparse Linear Solvers
SPARSKIT-CCA: A suite of sparse matrix computations as components of Common Component Architecture
SuperLU Sparse Linear System Solver
Sparse Matrix Computations (SMC)
PLAPACK, Parallel Linear Algebra Package (C and Fortran, with Matlab interface)
PSPASES, Parallel Sparse Symmetric Direct Solver for symmetric positive definite systems (Joshi, Gupta and Karypis)
SPOOLES, SParse Object Oriented Linear Equations Solver (including nested dissection, LDL^T, LDL^H, LDU, QR, Krylov)
Regularization Tools for Matlab (by Per Christian Hansen)
KaHiP, Karlsruhe High Quality Graph Partitioning
COLAMD, Column Approximate Minimum Degree Ordering Algorithm for unsymmetric matrices (in C, with Matlab interface for symmetric and unsymmetric matrices)
Approximate Minimum Degree Algorithm
METIS, Unstructured Graph Partitioning Software (e.g., sparse matrix orderings based on nested dissection)
Chaco, Software for Partitioning Graphs
MESHPART, Matlab Mesh Partitioning and Graph Separator Toolbox, with Matlab interfaces to METIS and Chaco
Sparse matrix algorithms (by Tim Davis), including things like approximate minimum degree, sparse multifrontal LU factorization, and permutation to block triangular form
PaToH Partitioning Tools for Hypergraph
Mondriaan for partitioning sparse rectangular matrices (by Vastenhouw and Bisseling)
SPOOLES, SParse Object Oriented Linear Equations Solver
(by Cleve Ashcraft)
including multiple minimum degree, generalized nested dissection and
multisection orderings
SCOTCH, Static Mapping and Graph Partitioning Package
JOSTLE, Unstructured Mesh Partitioning Software
Zoltan, library for parallel data management and load-balancing
PARALUTION, parallel sparse iterative methods for multi-core CPU, GPU (CUDA and OpenCL) and Intel Xeon Phi
Ginkgo sparse iterative methods for GPU-accelerated systems
Regularization Tools, Matlab package for analysis and solution of discrete ill-posed problems, (by Per Christian Hansen)
MOORe Tools, object oriented toolbox in Matlab for ill-posed problems
PETSc, Portable, Extensible Toolkit for Scientific Computation, for parallel iterative sparse matrix computations in C
Trilinos, parallel iterative sparse matrix computations in C++
Aztec: A Parallel Iterative Package for linear systems
MOORe Tools, Modular Object Oriented Regularization Tools, for Matlab (by Per Christian Hansen)
Lecture notes on iterative methods (by Henk van der Vorst)
no software, but info on GC, BiCG and variants
SPAI, Sparse Approximate Inverse Preconditioner (for parallel solving, in C/MPI, with Matlab interface)
ParaSails, Parallel Sparse Approximate Inverse Preconditioner
PREQN preconditioners for the conjugate gradient method for solving a sequence of linear systems with slowly changing coefficient matrices
BPKIT Block Preconditioning Toolkit
Support Theory for Preconditioning (papers only)
Support-Graph Preconditioning (ppt presentation only)
Preconditioning Techniques for Large Linear Systems: A Survey (pdf, by M. Benzi)
Preconditioning KKT systems (pdf, by Haws and Meyer)
RIM, all eigenvalues in a region of the complex plane (in Matlab, by Jiguan Sun)
EVSL, spectrum slicing library for large eigenvalue problems
PRIMME: PReconditioned Iterative MultiMethod Eigensolver
OEIG - Solving overdetermined eigenvalue problems
LMSVD truncated (dominant) singular value decomposition of large matrices.
The FEAST Eigenvalue Solver, for solving the standard or generalized eigenvalue problem, and obtaining all the eigenvalues and eigenvectors within a given search interval.
SLEPcSLEPc, Scalable Library for Eigenvalue Problem Computations, (MPI-based)
PRIMME, Preconditioned Iterative Multimethod Eigensolver in C
HAPACK, Software for Hamiltonian Eigenvalue Problems (in Fortran 77, with a Matlab interface)
EIGIFP for a few extreme eigenvalues of large matrix eigenvalue problems A x = lambda B x
EIGIFP, to compute a few extreme eigenvalues of large linear symmetric definite eigenvalue problems
GUPTRI, Reduction to Generalized Upper Triangular Form
LOBPCG, Locally Optimal Block Preconditioned Conjugate Gradient for Large Symmetric Eigenproblems (in Matlab)
ARPACK, a collection of Fortran77 subroutines for solving large scale (generalized) eigenvalue problems by the implicitly restarted Arnoldi method
A bibliography on roots of polynomials (by John McNamee)
EigTool for pseudo spectra
NLEVP: A Collection of Nonlinear Eigenvalue Problems (in Matlab)
MatView: Scalable Sparse Matrix Viewer
Matrix Market (Harwell-Boeing Sparse Matrix Collection)
University of Florida Sparse Matrix Collection
(collected by Tim Davis)
includes Harwell/Boeing collection, netlip LP problems,
and most other known collections
contains pictures of sparsity patterns of each matrix
Structured Matrix Market, structured matrices in the form of Matlab and other source codes, as well as data files
SuiteSparse:GraphBLAS (by Tim Davis)
a nearly full implementation of the GraphBLAS standard, which defines
a set of sparse matrix operations on an extended algebra of semirings.
Applied to sparse adjacency matrices, these operations are equivalent
to computations on graphs.
H2Lib, efficient algorithms for hierarchical matrices and H2-matrices
BLIS, for rapidly instantiating high-performance BLAS-like dense linear algebra operations
librsb, Sparse BLAS Software Library (in C, by Michele Martone)
FlexiBLAS (by Köhler and Saak) an easy to use method for switching between different BLAS implementations while debugging or benchmarking other codes.
Tensorlab, Matlab toolbox for tensor computations.
Verification software in MATLAB/INTLAB for linear algebra problems (by Jiri Rohn)
Freely Available Linear Algebra Software on the Web
(by Jack Dongarra)
an exhaustive comparative survey in table form, with links
``software for high-performance computers that's available in source
form on the web for solving problems in numerical linear algebra,
specifically dense, sparse direct and iterative systems and sparse
iterative eigenvalue problems.''
LAPACK/ScaLAPACK Linear Algebra Library and LAPACK manual
Level 3 BLAS - basic linear algebra subprograms for sparse matrices
MTL, Matrix Template Library, a library of generic components for high performance numerical linear algebra
GMM++ Generic C++ Matrix Library
Maximum Weighted Matching (Ed Rothberg)
Maximum Weight Matching Problem
Cardinality and Weighted Matching based on algorithms of Gabow and Micali/Vazirani
MORLAB, Model Order Reduction LABoratory in Matlab and Octave
for model order reduction of linear dynamical systems based
on the solution of matrix equations
CAREX, DAREX - Riccati Equation Benchmark Collection (Fortran 77 and Matlab)
The relevant files are
blm1.ps.Z, carex_f.tar.Z, carex_m.tar.Z
for continuous-time Riccati equations, and
blm2.ps.Z, darex_f.tar.Z, darex_m.tar.Z
for discrete-time Riccati equations.
SLICOT, Control and Systems Library
Freely Available Linear Algebra Software
The Hilbert Class Library
``a collection of C++ classes [for] vectors, linear and
nonlinear operators, and functions [...] at a natural level of
abstraction, without reference to internal details of data structures''
SPLATT, Surprisingly ParalleL spArse Tensor Toolkit (n C, with an executable, GNU Octave/Matlab interface, and C/C++ API)
For nonlinear systems of equations, see Nonlinear Systems of Equations,
for optimization codes, see Local Optimization and Global Optimization,
for gradient, Jacobian and Hessian computation, see Automatic Differentiation
for data fitting routines, see Statistics Links
Surface Interpolation and Approximation
toms764, Cubpack++ A C++ Package for Automatic Two-Dimensional Cubature (938K)
Multivariate Integration over Unbounded Domains (in Fortran, for multivariate Gaussian or Student-t integrals, etc.)
mvnpack.f90 and dcuhre.f90, Fortran90 programs for multivariate integration
TOMS/647 Quasirandom Sequence Generator (29K, in Fortran 77) with low discrepancy for multivariate integration in dimensions 1-40
TOMS/738 Niederreiter's Low Discrepancy Sequences (127K, in Fortran 77) for multivariate integration in arbitrary dimensions
Encyclopaedia of Cubature Formulas
Surveys on numerical integration (collected references to papers on cubature and quadrature)
FFTW, Fastest Fourier Transform in the West
FINUFFT, Non-uniform FFT package in C++/OpenMP, with wrappers for
C, Fortran, MATLAB/Octave, Python, and Julia
CUDA version for GPUs
NFFT, Non-uniform FFT package in C
Harminv, harmonic inversion of time series by the filter diagonalization method
Chebfun for numerical computation with functions instead of numbers in Matlab (infinite integral, poles,, approximation, integration, odes)
DifferentialEquations.jl, numericla solution of ODEs and stochastic ODEsin Julia (by Chris Rackauckas)
Intel Ordinary Differential Equations Solver Library
with explicit, implicit, and mixed solvers for non-stiff, stiff,
and ODE problems with variable stiffness.
ZVODE, a Double Precision Complex ODE Solver
GAM, Generalized Adams Methods for stiff initial value problems, based on block-boundary value methods
Hairer - Norsett - Wanner ODE Package (related to their books)
mebdfdae.f (Jeff Cash's Fortran code for the solution of stiff initial value problems and differential algebraic equations in linearly implicit form)
BiM, blended implicit methods for (stiff) initial value problems for ODEs
ROWMAP (Fortran code for Krylov techniques for large stiff ODEs)
Expokit - Software for Matrix Exponentials in Matlab (handles full and sparse matrices)
A Matlab Differentiation Matrix Suite
ROSTAPACK, computation and fast approximation of robust stability measures for large linear dynamical systems, featuring stability radii, the H-infinity norm, and the spectral value set abscissa or radius
MORLAB, Model Order Reduction LABoratory, for model reduction of linear dynamical systems
DGELDA (code for linear DAEs with variable coefficients)
MEBDF Modified Extended Backward Differentiation Formulae (for My'=f(x,y) or M(y)y'=f(x,y) or G(x,y,y')=0, dense or sparse)
ACDC deferred correction code in Fortran (by Jeff Cash)
for the solution of singularly perturbed two-point boundary value
problems
SBPV for singular boundary value problems
FEMLAB, an interactive program for the numerical solution of ordinary and partial differential equations based on the Finite Element Method in adaptive form with automatic error control
Eigenvalues of Sturm-Liouvile Problems (Fortran)
Testset of Stiff ODEs (by E. Hairer)
DDE-BIFTOOL, a Matlab package for the bifurcation analysis of delay differential equations
DASSL, Differential Algebraic System Solver
SUNDIALS, ODE, DAE and nonlinear integrator/solver software with sensitivity analysis
DAETS, Differential-Algebraic Equations by Taylor Series (by Ned Nedialkov; only the demo version is free)
DASPK Parallel Solution of Large-Scale Differential-Algebraic Systems
CMDASPK Parallel Differential-Algebraic Systems Solver
DAEPAK (by W.C. Rheinboldt) for
mebdfdae.f (initial value problems for differential algebraic equations in linearly implicit form)
standard test set for Initial Value Problems
Matlab program files for Stochastic Differential Equations
Stochastic Differential Equation Software (commercial)
Fast Stochastic Differential Equation Solver (commercial)
Freeware Stochastic Differential Equations
StochSS,Stochastic Simulation Service for modeling and simulation of discrete stochastic biochemical systems (by Linda Petzold et al.)
MMPDElab, moving mesh P1 finite element solution of PDEs in Matlab
dolfin-adjoint , discrete adjoint and tangent linear models for large-scale simulation code in Python (winner of the 2015 Wilkinson prize for numerical software)
FEniCS for solving partial differential equations in Python
FEATool, Matlab/Octave toolbox for finite element based physics simulation
iFEM 2D and 3D adaptive finite element methods in MATLAB, made readable by using Matlab's sparse matrices
deal.II finite element package (winner of the 2007 Wilkinson prize for numerical software)
AFEPack, C++ adaptive finite element library
FAME, Fast Algorithms for Maxwell's Equations
solving three-dimensional source-free Maxwell's equations with all
fourteen Bravais periodical lattice structures
PHAML, Parallel Hierarchical Adaptive MultiLevel Fortran 90 module for solving second order linear elliptic PDEs
OpenFEM, finite element toolbox for Matlab
AFEM@matlab MATLAB package of adaptive finite element methods
corresponding paper
CLAWPACK, Fortran routines to solve hyperbolic systems of partial differential equations
deal.II, object-oriented finite element library
CalculiX, finite element program for three-dimensional linear and nonlinear structural mechanics problems
MODULEF, modular finite element library
MUDPACK, multigrid software package
Diffpack (numerical solution of PDEs)
SPC-PM Po 3D Chemnitz parallel f.e. package for 3D problems
VECFEM finite element solver for non-linear systems of boundary and initial boundary value problems on arbitrary 1D, 2D and 3D domains
DOUG Domain decomposition On Unstructured Grids
DESY Multigrid Algorithms Library
CLAWPACK software for solving hyperbolic conservation laws
KASKADE, Adaptive Multilevel Code
Z88, Finite Elemente Programm (2493K)
PLTMG for solving elliptic partial differential equations in general regions of the plane.
ABE- Helmholtz(Acoustic) Boundary Elements, a Fortran package for the boundary element method for the Helmholtz equation
FEATFLOW FEM-solver for the stationary and nonstationary incompressible Navier-Stokes equations
IFISS, Incompressible Flow & Iterative Solver Software (in Matlab)
RBmatlab, MATLAB package for Reduced Basis Methods
PETSc, Portable Extensible Toolkit for Scientific Computation, ''facilitates the integration of independently developed application modules'' for parallel computations (in particular related to PDEs)
ScalFMM, task-based scalable kernel independent fast multipole method
FMM, Fast Multipole Methods, Matlab toolbox (commercial)
Puma-EM, Multilevel Fast Multipole Method
LSMLIB, Level Set Method Library, for the serial and parallel simulation of implicit surface and curve dynamics in two and three dimensions
El Topo, Robust Topological Operations for Dynamic Explicit Surfaces
tracking surfaces with changing topology
Triangle, 2D Mesh Generator and Delaunay Triangulator (winner of the 2003 Wilkinson prize for numerical software)
PaMPA, handling unstructured meshes in parallel, on distributed memory architectures
GrAL -- Grid Algorithms Library, templates for mesh handling
ParMGridGen, serial and parallel library for obtaining a sequence of successive coarse grids
Mesh Generation & Grid Generation on the Web The list of public domain and commercial mesh generators
QMG Mesh Generation Software in Matlab (Steve Vavasis)
QHULL (convex hulls, Delaunay triangulations, Voronoi diagrams)
Sparse Grid Interpolation Toolbox (in Matlab)
NIST Adaptive Mesh Refinement Benchmarks
Benchmarks (12 Problems from NIST Report NISTIR 7668)
A Collection of 2D Elliptic Problems for Testing Adaptive Grid Refinement Algorithms
Benchmark problems for elliptic eigenvalue problems
Benchmark problems for Maxwell's equation
pyMOR, Python-based model order reduction algorithms for PDEs
TMATROM, Reduced OrderModel Application (ROMAPP) software for simulating wave propagation
Trilinos, object-oriented software framework for the solution of large-scale, complex multi-physics engineering and scientific problems
Software: Differential Equations (from scicomp)
A Collection of Test Problems in PDE-Constrained Optimization
Matrix Function Toolbox (by Nick Higham)
MATLAB toolbox for computing f(A),
where f is a function defined on the spectrum of the matrix A
SPHEREPACK, spherical harmonics, Poisson equations on the sphere, and more
Abramowitz and Stegun. Handbook of Mathematical Functions
REDLOG REDuce LOGic system
LTP, Lie Tools Package (Lie algebra computations in Maple)
LiE, computer algebra package for Lie group computations
VF - An efficient graph isomorphism algorithm
NAUTY -- Graph Isomorphism in C
nauty
Epsilon Software Tool for Polynomial Elimination and Decomposition
The Stony Brook Algorithm Repository for combinatorial algorithms
NTL: A Library for doing Number Theory in C++
Contains in particular a module LLL for the Lenstra-Lenstra-Lovasz (LLL)
algorithm for finding a reduced basis in a lattice
PORT 3 Subroutine Library
``a collection of Fortran 77 routines that address many
traditional areas of mathematical software, including approximation,
ordinary and partial differential equations, linear algebra and
eigensystems, optimization, quadrature, root finding, special
functions, and Fourier transforms, but excluding statistical
calculations. PORT stands for Portable, Outstanding, Reliable,
and Tested.''
HSL (formerly the Harwell Subroutine Library) ``a collection of ANSI Fortran codes for large scale scientific computation written by members of the Numerical Analysis Group and other experts.'' (free for academic use)
ZIB electronic library for Mathematical Software (eLib)
WNLIB, free, unrestricted ANSI-C subroutine library
Fortran Market, links to Fortran resources
Numerical Recipes in Fortran and C (the online books are free, the software not)
NCAR's Mathematical and Statistical Libraries
NAG Numerical Algorithms Group (commercial)
IMSL Fortran Numerical Library (commercial)
Matlab online manuals (in PDF)
Scilab (a very versatile public domain variant of Matlab)
Octave (another public domain variant of Matlab)
MathSource (contributed Mathematica notebooks)
Virtual Software Library (searchable)
A useful list of links related to Numerical methods (by Tomasz Plewa)
CERNLIB, CERN Program Library (free only for High Energy Physics Users)
NEA Data Bank Program Collection (by the Nuclear Energy Agency)
Numerical Recipes books in C and Fortran On-Line
Software for Graphics and Data Analysis
Guide to Available Mathematical Software (GAMS)
Mathematical Information Service software index (European mirror site)
Mathematics Software (Penn State University)
The Geometry Center Software Page
Math on the Web: Software for mathematics
List of numerical analysis software - Wikipedia
Mathematics WWW Virtual Library
HSL Harwell Subroutine Library threadsafe ISO Fortran codes for large scale scientific computation
Mathematics Archives: Other Software Sites
ACM List of Web resources for research in mathematical software
The IEEE standard for floating point arithmetic
MWrap: A MEX interface generator (for calling C/C++ from Matlab)
ZoltanZ, library for parallel data management and load-balancing
ScalFMM, scalable kernel independent fast multipole method
Special Functions from Netlib in Fortran77
including random number generators rand*.f
SPRNG, Scalable Parallel Random Number Generator Library
The Magma Computational Algebra System
Error analysis of system mathematical functions
ParaGraph, Parallel Performance Visualization Tool
VBCTOOL Visualization of Branch and Cut algorithms
Fortran77 support for IEEE binary floating point arithmetic
Blitz++ Object-Oriented Scientific Computing
``The goal of the Blitz++ project is to develop techniques which will
enable C++ to rival -- perhaps even exceed -- the speed of Fortran for
numerical computing, while preserving an object-oriented interface.''
The LaTeX Project, LaTeX Home Page
SCAN-3 - System for the Analysis of Geodetic Networks
Dmake - Utility to maintain program groups, or interdependent files
O-Matrix for Windows, ``an interactive analysis and visualization tool that combines the programming flexibility and performance of a compiled language with the ease of use and functionality of an integrated environment''
A Simplified Introduction to LaTeX (by H. Greenberg)
Arnold Neumaier (Arnold.Neumaier@univie.ac.at)