↑ arvau

Wikipedia / List of numerical libraries

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.

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:

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 languages 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

See also

References

ja:数値解析ソフトウェア