Mathematical Software

This file contains sections on

I link (with very few exceptions) only to public domain mathematical software.
Please inform me about failing links so that I can repair them.

Our Own Software

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

Specific Software


This is handled on a separate page:

(Local and) Global Optimization

Statistical Data Analysis

This is handled on a separate page:

Statistics Links

Direct Linear Solvers

LAPACK (the state of the art for the dense case)

FlexiBLAS, software for using multiple BLAS versions

HPL, High Performance Linpack

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)

Graph Partitioning and Ordering

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

PARTY Partitioning Library

SCOTCH, Static Mapping and Graph Partitioning Package

JOSTLE, Unstructured Mesh Partitioning Software

Zoltan, library for parallel data management and load-balancing

Iterative Linear Solvers

PARALUTION, parallel sparse iterative methods for multi-core CPU, GPU (CUDA and OpenCL) and Intel Xeon Phi

MLBiCGStab Code for MATLAB

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)

Eigenvalues, Singular Values, and Polynomial Roots

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)

Preconditioned Eigensolvers

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)

Matrix Viewers, Test Matrices, Matrices Over Semirings, etc.

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.

Other Matrix Packages

H2Lib, efficient algorithms for hierarchical matrices and H2-matrices

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.

MATLAB Tensor Toolbox

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


Linux BLAS


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

CAREX, DAREX - Riccati Equation Benchmark Collection (Fortran 77 and Matlab)
The relevant files are, carex_f.tar.Z, carex_m.tar.Z for continuous-time Riccati equations, and, darex_f.tar.Z, darex_m.tar.Z for discrete-time Riccati equations.

SLICOT, Control and Systems Library

Freely Available Linear Algebra Software

Jama, A Java Matrix Package

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)

Multivariate Nonlinear Systems and Optimization

Numerical Integration and Harmonic Analysis

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

NFFT, Non-uniform FFT package in C

Harminv, harmonic inversion of time series by the filter diagonalization method

Computations with functions

Chebfun for numerical computation with functions instead of numbers in Matlab (infinite integral, poles,, approximation, integration, odes)

Ordinary Differential Equations

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

Taylor ODE solver

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

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)

ode/dae test problems

Testset of Stiff ODEs (by E. Hairer)

Test Set for IVP Solvers

DDE-BIFTOOL, a Matlab package for the bifurcation analysis of delay differential equations

Differential-Algebraic 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

COLDAE solving boundary-value problems for semi-explicit differential-algebraic equations C with index at most 2.

mebdfdae.f (initial value problems for differential algebraic equations in linearly implicit form)

standard test set for Initial Value Problems

Stochastic Differential Equations

Matlab program files for Stochastic Differential Equations

Stochastic Differential Equation Software (commercial)

Fast Stochastic Differential Equation Solver (commercial)

Freeware Stochastic Differential Equations

The MAPLE Stochastic Package

StochSS,Stochastic Simulation Service for modeling and simulation of discrete stochastic biochemical systems (by Linda Petzold et al.)

Partial Differential Equations

dolfin-adjoint , discrete adjoint and tangent linear models for large-scale simulation code in Python (winner of the 2015 Wilkinson prize for numerical software)

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)

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

Mesh Generation and Geometry

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-1.0, 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)

other PDE

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

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

Special Functions

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

The Wolfram Functions Site

Computer Algebra

QEPCAD, Quantifier Elimination by Partial Cylindrical Algebraic Decomposition (mathematically rigorous)

REDLOG REDuce LOGic system


LTP, Lie Tools Package (Lie algebra computations in Maple)

LiE, computer algebra package for Lie group computations

VFLIB graph matching library

VF - An efficient graph isomorphism algorithm

NAUTY -- Graph Isomorphism in C

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

General Sources of Mathematical Software

GAMS: Guide to Available Mathematical Software (search for software in IMSL, NAG, and NETLIB)

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)

European NETLIB site



ZIB electronic library for Mathematical Software (eLib)

WNLIB, free, unrestricted ANSI-C subroutine library

Fortran Library, online Fortran resources, including compiler vendors and resellers, benchmarks, programming tools, books and articles on Fortran and numerical methods, and commerical and public domain Fortran software

Fortran Market, links to Fortran resources

Numerical Recipes in Fortran and C (the online books are free, the software not)

Linux Software Encyclopedia

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)

CMLIB, NIST core math library

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)

DESY C++ Virtual Library

Numerical Recipes books in C and Fortran On-Line

Software Lists

High Performance Math Software collected by the National HPCC Software Exchange (NHSE)

Software for Graphics and Data Analysis

Guide to Available Mathematical Software (GAMS)

Mathematical Information Service software index (European mirror site)

Math Software Archives

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

Numerical Analysis Sources

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

Floating Point Arithmetic

Multiprecision Software Directory

The IEEE standard for floating point arithmetic


Numerical Mathematics in the WorldWideWeb
interactive numerical computing and optimization, supporting teaching these

MWrap: A MEX interface generator (for calling C/C++ from Matlab)

Matlab Tensor Toolbox

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

Visualization Software

The Magma Computational Algebra System

Error analysis of system mathematical functions

Mathematical Modeling

NetSolve/GridSolve for distributed computing

ParaGraph, Parallel Performance Visualization Tool

VBCTOOL Visualization of Branch and Cut algorithms

Fortran77 support for IEEE binary floating point arithmetic

God as a Computer Programmer

Linpack Benchmark in Java

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

StopWatch Fortran 90 module for measuring execution time of program segments

Anti-Virus Tools

Compression Tools

Dmake - Utility to maintain program groups, or interdependent files

PERL Manual

International Ispell

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)

FMathL - Formal mathematical language
Statistics Links
Surface Modeling
Global Optimization
Interval Methods
Protein Folding
Mathematics Links
my home page (

Arnold Neumaier (