This is a list of numerical libraries, which are libraries used in software development for performing numerical calculations. It is not a complete listing but is instead a list of numerical libraries with articles on Wikipedia, with few exceptions. The choice of a typical library depends on a range of requirements such as: desired features (e.g. large dimensional linear algebra, parallel computation, partial differential equations), licensing, readability of API, portability or platform/compiler dependence (e.g. Linux, Windows, Visual C++, GCC), performance, ease-of-use, continued support from developers, standard compliance/precision/reproducibility, specialized optimization in code for specific application scenario, or even the size of the code-base to be installed. This list is sorted by from what languages a library is designed to be usable, not by what the libraries are written in (an implementation detail). Some numerical tasks are performed by standard library functions. These are not listed here, though some "see also" links to relevant pages may be included.
Multi-language
On most computer systems, the C application binary interface (ABI) functions as a "lingua franca" ABI callable from a variety of languages via a foreign function interface. This makes the "C" section also multi-language. To resolve this ambiguity, this section specifically lists libraries with more than one designed interfaces, e.g. a C API/ABI and a Fortran API/ABI.
BLAS, LAPACK, etc. BLAS (Basic Linear Algebra Subprograms) is a application programming interface standard for libraries that perform basic linear algebra operations such as vector and matrix multiplication. LAPACK, the Linear Algebra PACKage, is a software library for numerical computing originally written in FORTRAN 77 and now written in Fortran 90. Both of these used to be Fortran-only software libraries that later gained C interfaces. Both of these libraries were originally hosted on the Netlib repository with very permissive licenses, resulting in them being widely forked and turning into de facto API standards. BLAS has since officially evolved into an interface specification.
Related libraries that have remained Fortran-only include:
EISPACK is a software library for numerical computation of eigenvalues and eigenvectors of matrices, written in FORTRAN. It contains subroutines for calculating the eigenvalues of nine classes of matrices: complex general, complex Hermitian, real general, real symmetric, real symmetric banded, real symmetric tridiagonal, special real tridiagonal, generalized real, and generalized real symmetric matices. LINPACK is a software library for performing numerical linear algebra on digital computers. It was written in Fortran by Jack Dongarra, Jim Bunch, Cleve Moler, and Pete Stewart, and was intended for use on supercomputers in the 1970s and early 1980s. It has been largely superseded by LAPACK, which will run more efficiently on modern architectures. These two have superseded, but as their inclusion in Intel MKL show, they were also widely-forked de facto standards in their hayday.
Numerically-oriented programming languages A few programming languages are designed for numerical work. These include GNU Octave, Maple, MATLAB, Mathematica, Julia, etc. Programs written in these langauges may be invoked from a variety of programing languages.
C
C++
.NET Framework languages: C#, F#, VB.NET and PowerShell
Fortran
Java
OCaml OCaml programming language has support for array programming in the standard library, also with a specific module named bigarrays for multi-dimensional, numerical arrays, with both C and Fortran layout options. A comprehensive support of numerical computations is provided by the library Owl Scientific Computing which provides methods for statistics, linear algebra (using OpenBLAS), differential equations, algorithmic differentiation, Fourier fast transform, or deep neural networks. Other numerical libraries in OCaml are Lacaml that interfaces BLAS and LAPACK Fortran/C libraries, L-BFGS-ocaml (OCaml bindings for L-BFGS). For visualization there are libraries for plotting using PLplot, gnuplot or matplotlib.
Perl Perl Data Language gives standard Perl the ability to compactly store and speedily manipulate the large N-dimensional data arrays. It can perform complex and matrix maths, and has interfaces for the GNU Scientific Library, LINPACK, PROJ, and plotting with PGPLOT. There are libraries on CPAN adding support for the linear algebra library LAPACK, the Fourier transform library FFTW, and plotting with gnuplot, and PLplot.
Python
Others XNUMBERS – multi-precision floating-Point computing and numerical methods for Microsoft Excel. INTLAB – interval arithmetic library for MATLAB.
See also List of computer algebra systems List of information graphics software List of numerical analysis programming languages List of numerical-analysis software List of open-source mathematical libraries List of open-source code libraries List of optimization software List of statistical software
References
External links The Math Forum - Math Libraries, an extensive list of mathematical libraries with short descriptions
