List of numerical libraries
This is a list of notable 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 diverse range of requirements such as: desired features (for e.g.: large dimensional linear algebra, parallel computation, partial differential equations), commercial/opensource nature, readability of API, portability or platform/compiler dependence (for e.g.: Linux, Windows, Visual C++, GCC), performance in speed, ease-of-use, continued support from developers, standard compliance, specialized optimization in code for specific application scenarios or even the size of the code-base to be installed.
As we find comprehensive surveys rarely available, there is almost always (at least initially) a difficult choice among a number of possible libraries. Often it tends to be at the discretion of the user based on his own taste and comforts, only due to the lack of proper information.
Multi-language
- ALGLIB is an open source numerical analysis library which may be used from C++, C#, FreePascal, Delphi, VBA.
- IMSL Numerical Libraries are libraries of numerical analysis functionality implemented in standard programming languages like C, Java, C# .NET, Fortran, and Python.
- The NAG Library is a collection of mathematical and statistical routines for multiple programming languages (C, C++, Fortran, Visual Basic, Java and C#) and packages (MATLAB, Excel, R, LabVIEW).
- GNU Octave is an open source high level programming language and library, including a command line interface, analogous to commercial alternatives such as Maple, MatLab, Mathematica, etc. APIs, functions and libraries can be called from many platforms, including high level engineering programs, where functions are, in many cases, seamlessly interpreted and integrated in similar fashion to MatLab. It also can be used with batch orientation.
- MtxVec is an object oriented vectorized commercial math library at the core of Dew Lab Studio, featuring a comprehensive set of mathematical, signal processing and statistical functions executing at impressive speeds. With FireMonkey the common source can be compiled for Windows, OSx, iOS and Android.
C
- BLOPEX (Block Locally Optimal Preconditioned Eigenvalue Xolvers) is an open-source library for the scalable (parallel) solution of eigenvalue problems.
- FFTW (Fastest Fourier Transform in the West) is a software library for computing Fourier and related transforms.
- GNU Scientific Library, a popular, free numerical analysis library implemented in C.
- GNU Multi-Precision Library is a library for doing arbitrary-precision arithmetic.
- hypre (High Performance Preconditioners) is an open-source library of routines for scalable (parallel) solution of linear systems and preconditioning.
- LabWindows/CVI is an ANSI C IDE that includes built-in libraries for analysis of raw measurement data, signal generation, windowing, filter functions, signal processing, linear algebra, array and complex operations, curve fitting and statistics.
- Lis is a scalable parallel library for solving systems of linear equations and eigenvalue problems using iterative methods.
- Intel MKL, Intel Math Kernel Library (in C), a library of optimized math routines for science, engineering, and financial applications, written in C/C++ and Fortran. Core math functions include BLAS, LAPACK, ScaLAPACK, sparse solvers, fast Fourier transforms, and vector math.
- Portable, Extensible Toolkit for Scientific Computation (PETSc), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations.
- SLEPc Scalable Library for Eigenvalue Problem Computations is a PETSc-based open-source library for the scalable (parallel) solution of eigenvalue problems.
- SuiteSparse - A suite of sparse matrix software with specialized C implementations for sparse matrices - used in GoogleEarth, Googlemaps, Matlab itself and is now distributed with Ubuntu. The package also includes some Matlab modules.
- SuperLU — a direct sparse solver that uses LU decomposition and comes in distributed and shared memory parallel versions in addition to a sequential version.
- Trilinos, an effort to develop scalable (parallel) solver algorithms and libraries within an object-oriented software framework for the solution of large-scale, complex multi-physics engineering and scientific applications. A unique design feature of Trilinos is its focus on packages.
C++
- Advanced Simulation Library is free and open source hardware accelerated multiphysics simulation software with an OpenCL-based internal computational engine.
- Armadillo is a C++ linear algebra library (matrix and vector maths), aiming towards a good balance between speed and ease of use. It employs template classes, and has optional links to BLAS and LAPACK. The syntax (API) is similar to MATLAB.
- Blaze is an open-source, high-performance C++ math library for dense and sparse arithmetic.
- Blitz++ is a high-performance vector mathematics library written in C++.
- Boost.uBLAS C++ libraries for numerical computation
- Ceemple is a collection of C++ scientific libraries packaged with IDE and JIT
- deal.II is a library supporting all the finite element solution of partial differential equations.
- Dlib is a modern C++ library with easy to use linear algebra and optimization tools which benefit from optimized BLAS and LAPACK libraries.
- Eigen is a vector mathematics library with performance comparable with Intel's Math Kernel Library
- CUSP is a library for sparse linear algebra and graph computations taking advantage of parallel processing based on Thrust
- Elemental is an open source, openly developed, software library for distributed-memory dense and sparse-direct linear algebra and optimization
- FLENS is an extension C++ for matrix/vector types that are ideally suited for numerical linear algebra
- GLM- OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specifications.
- GMTL- Generic Math Template Library - is a math library designed to be high-performance, extensible, and generic for graphics programmers.
- GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the GNU General Public License. The library provides a wide range of mathematical routines such as random number generators, etc. There are over 1000 functions in total with an extensive test suite.
- Hermes Project: C++/Python library for rapid prototyping of space- and space-time adaptive hp-FEM solvers.
- IML++ is a C++ library for solving linear systems of equations, capable of dealing with dense, sparse, and distributed matrices.
- IT++ is a C++ library for linear algebra (matrices and vectors), signal processing and communications. Functionality similar to MATLAB and Octave.
- LAMA is a C++ template library for writing numerical solvers targeting various hardwares (e.g. GPUs through CUDA or OpenCL) on distributed memory systems, hiding the hardware specific programming from the program developer
- LAPACK++, a C++ wrapper library for LAPACK and BLAS
- LinBox is a C++ template library for doing exact computational linear algebra.
- Intel MKL, Intel Math Kernel Library (in C++), a library of optimized math routines for science, engineering, and financial applications, written in C/C++ and Fortran. Core math functions include BLAS, LAPACK, ScaLAPACK, sparse solvers, fast Fourier transforms, and vector math.
- MLPACK is an open-source library for machine learning, exploiting C++ language features to provide maximum performance and flexibility while providing a simple and consistent API
- MTL4 is a generic C++ template library providing sparse and dense BLAS functionality. MTL4 establishes an intuitive interface (similar to MATLAB) and broad applicability thanks to Generic programming.
- The NAG C++ Library is a collection of mathematical and statistical routines for C++.
- NT2 (linear algebra) - is a C++ library providing various template matrix classes that can be used with a Matlab like syntax whose performances are close to those obtained with hand written C code
- NTL is a C++ library for number theory.
- PETSc - Portable, Extensible Toolkit for Scientific Computation
- Signal Processing Using C++ is a C++ library target to DSP and Comms Engineering and hardware design.
- Susa - An open source signal processing framework in C++.
- Trilinos is an effort to develop algorithms and enabling technologies for the solution of large-scale, complex multi-physics engineering and scientific problems. It is a collection of packages.
D
- Mir is BSL-licensed LLVM-accelerated Generic Numerical Library for Science and Machine Learning. It includes Generic Linear Algebra Subprograms (BLAS-like package).
Delphi
- ALGLIB - an open source numerical analysis library.
- GsComplex Library - Small but powerfull library for working with complex numbers. All routines are written in inline assembler so they work in 1.5-3.5 times faster that their most optimized Pascal analogues. Now the library supports extended (80 bit) arithmetics.
.NET Framework languages C#, F#, VB.NET and PowerShell
- AForge.NET is a computer vision and artificial intelligence library. It implements a number of genetic, fuzzy logic and machine learning algorithms with several architectures of artificial neural networks with corresponding training algorithms.
- Mathos Core Library is a collection of tools for any kinds of mathematical calculations. It allows you to work with shapes, finance, unit conversions, and more.
- Finaquant Protos is a non-commercial software library for table-valued functions in .NET Framework. This library can be used to make analytical operations on data tables.
- FinMath is a library for scientific and financial computation on the .NET Framework. Its functionality includes vector and matrix algebra, statistics, data analysis, advanced functions, signal processing, numerical optimization and many more. It uses Intel's Math Kernel Library and Intel Integrated Performance Primitives to do most of the low-level computations while providing simple and object oriented interface.
- Accord.NET is a collection of libraries for scientific computing, including numerical linear algebra, optimization, statistics, artificial neural networks, machine learning, signal processing and computer vision.
- ILNumerics.Net Commercial high performance, typesafe numerical array classes and functions for general math, FFT and linear algebra, aims .NET/mono, 32&64 bit, script-like syntax in C#, 2D & 3D plot controls, efficient memory management
- Measurement Studio is a commercial integrated suite UI controls and class libraries for use in developing test and measurement applications. The analysis class libraries provide various digital signal processing, signal filtering, signal generation, peak detection, and other general mathematical functionality.
- NeuronDotNet is a GPL-licensed artificial neural network library entirely written in C#. Because it only depends on the core .NET assemblies, it is easily portable across platforms.
- NMath by CenterSpace Software: Commercial numerical component libraries for the .NET platform, including signal processing (FFT) classes, a linear algebra (LAPACK & BLAS) framework, and a statistics package.
- NLinear is a generic linear algebra toolkit in C# compatible with Silverlight.
- Math.NET Numerics aims to provide methods and algorithms for numerical computations in science, engineering and every day use. Covered topics include special functions, linear algebra, probability models, random numbers, interpolation, integral transforms and more. MIT/X11 license.
- Meta.Numerics is a library for advanced scientific computation in the .NET Framework.
- Common Intermediate Dynamic Scientific Library (CIDSL): open source automated scientific data calculation library constituting automated functions that calculate the characteristics of a physical body with the data available .
- The Extreme Optimization Numerical Libraries for .NET are a commercial collection of mathematical and statistical classes for Microsoft .NET.
Fortran
- BLAS (Basic Linear Algebra Subprograms) is a de facto application programming interface standard for publishing libraries to perform basic linear algebra operations such as vector and matrix multiplication.
- CERNLIB is a collection of FORTRAN 77 libraries and modules.
- 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.
- IMSL Numerical Libraries are cross-platform libraries containing a comprehensive set of mathematical and statistical functions that can be embedded in a users application.
- Harwell Subroutine Library is a collection of Fortran 77 and 95 codes that address core problems in numerical analysis.
- LAPACK, the Linear Algebra PACKage, is a software library for numerical computing originally written in FORTRAN 77 and now written in Fortran 90.
- 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.
- Lis is a scalable parallel library for solving systems of linear equations and eigenvalue problems using iterative methods.
- MINPACK is a library of FORTRAN subroutines for the solving of systems of nonlinear equations, or the least squares minimization of the residual of a set of linear or nonlinear equations.
- The NAG Fortran Library is a collection of mathematical and statistical routines for Fortran.
- NOVAS is a software library for astrometry-related numerical computations. Both Fortran and C versions are available.
- Netlib is a repository of scientific computing software which contains a large number of separate programs and libraries including BLAS, EISPACK, LAPACK and others.
- PAW is a free data analysis package developed at CERN.
- Portable, Extensible Toolkit for Scientific Computation (PETSc), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations.
- QUADPACK is a FORTRAN 77 library for numerical integration of one-dimensional functions
- SLATEC is a FORTRAN 77 library of over 1400 general purpose mathematical and statistical routines.
- SOFA is a collection of subroutines that implement official IAU algorithms for astronomical computations. Both Fortran and C versions are available.
- SPARSKIT is a tool package for working with sparse matrices.
- SHTOOLS is an archive of fortran 95 based software that can be used to perform (among others) spherical harmonic transforms and reconstructions, rotations of spherical harmonic coefficients, and multitaper spectral analyses on the sphere.
- ARPACK is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.
Java
- Apache Commons, is an open-source for creating reusable Java components. It has numerical packages for linear algebra and non-linear optimization.
- ND4J is an open-source library that supports n-dimensional (ND) arrays, similar to NumPy. It runs on distributed GPUs or CPUs cross-platform. It supports the deep learning library Deeplearning4j.
- Colt provides a set of Open Source Libraries for High Performance Scientific and Technical Computing.
- Efficient Java Matrix Library (EJML) is an open-source linear algebra library for manipulating dense matrices.
- JAMA, a numerical linear algebra toolkit for the Java programming language. No active development has taken place since 2005, but it still one of the more popular linear algebra packages in Java.
- Jblas: Linear Algebra for Java, a linear algebra library which is an easy to use wrapper around BLAS and LAPACK.
- Parallel Colt is an open source library for scientific computing. A parallel extension of Colt.
- DataMelt, an open-source Java libraries for numerical calculations, data I/O and visualization of scientific results. Used together with Jython.
- Matrix Toolkit Java is a linear algebra library based on BLAS and LAPACK.
- OjAlgo is an open source Java library for mathematics, linear algebra and optimisation.
- exp4j is a small Java library for evaluation of mathematical expressions.
- Universal Java Matrix Package UJM is a Java library which provides implementations for sparse and dense matrices, as well as linear algebra calculations such as matrix decomposition, inverse, multiply, mean, correlation, standard deviation, etc.
- la4j is a tiny Java library and it provides linear algebra primitives and algorithms.
- Java Matrix Library A thoughtfully designed Java library for dealing with Matrices ( Matrix Theory ). Simple, Intuitive and Flexible. The library revolves around a Matrix interface. Operations are thoughtfully distributed. Not guilty of exposing all-in-one Matrix class.
- JDistLib Java Statistical Distribution Library is a Java package that provides routines for various statistical distributions. A manual translation of distributions provided by R statistical package.
Scala
- ND4S is a scientific computing library for Scala that includes support for n-dimensional arrays on the JVM.
Perl
- Perl Data Language gives standard Perl the ability to compactly store and speedily manipulate the large N-dimensional data arrays, which are the bread and butter of scientific computing.
Python
- DataMelt scientific libraries based on Jython, Java implementation of the Python language.
- matplotlib, a MATLAB-like plotting library.
- NumPy, a library that adds support for the manipulation of large, multi-dimensional arrays and matrices; it also includes a large collection of high-level mathematical functions. NumPy serves as the backbone for a number of other numerical libraries, notably SciPy.
- SageMath is a large mathematical software application which integrates the work of nearly 100 free software projects and supports linear algebra, combinatorics, numerical mathematics, calculus, and more.
- Plotly, a web-based scientific plotting library.
- SciPy, a large library of scientific tools.
- ScientificPython, a library with a different set of scientific tools
Groovy
- DataMelt, an open-source Java libraries for numerical calculations, data I/O and visualization of scientific results. Used together with Groovy.
JavaScript
- Compute.io is a computation library for JavaScript.
- Math.js is an extensive math library for JavaScript and Node.js.
- SciJS, scientific and numerical processing tools in JavaScript inspired by SciPy and NumPy.
- Numeric JavaScript is a JavaScript library for doing numerical analysis in the browser.
- Sylvester is a vector, matrix and geometry library for JavaScript, that runs in the browser and on the server side.
Others
- XNUMBERS — Multi Precision Floating Point Computing and Numerical Methods for Microsoft Excel.
See also
- List of numerical analysis software
- Comparison of numerical analysis software
- Comparison of computer algebra systems
- List of graphing software
- List of statistical packages
- List of optimization software
References
External links
- The Math Forum - Math Libraries, an extensive list of mathematical libraries with short descriptions