Comparison of linear algebra libraries
Jump to navigation
Jump to search
This article does not cite any sources. (June 2010) (Learn how and when to remove this template message) |
The following tables provide a comparison of linear algebra software libraries, either specialized or general purpose libraries with significant linear algebra coverage.
Dense linear algebra[edit]
General information[edit]
Creator | Language | First public release | Latest stable version | Source code availability | License | Notes | |
---|---|---|---|---|---|---|---|
ALGLIB | ALGLIB Project | C++, C#, FreePascal, VBA | 2006 | 3.12.0 / 08.2017 | Free | GPL/commercial | General purpose numerical analysis library with C++ and C# interfaces. |
ATLAS | R. Clint Whaley et al. | C | 2001 | 3.10.3 / 07.2016 | Free | BSD | Automatically tuned implementation of BLAS. Also includes LU and Cholesky decompositions. |
Dlib | Davis E. King | C++ | 2006 | 19.7 / 09/2017 | Free | Boost | C++ template library; binds to optimized BLAS such as the Intel MKL; Includes matrix decompositions, non-linear solvers, and machine learning tooling |
DataMelt | S.Chekanov et al. | Java | 2005 | 1.7 / 03.2017 | Free | GPL | A general purpose. Includes JBLAS and JLAPACK |
GNU Scientific Library | GNU Project | C, C++ | 1996 | 2.5 / 06.2018 | Free | GPL | General purpose numerical analysis library. Includes some support for linear algebra. |
IMSL Numerical Libraries | Rogue Wave Software | C, Java, C#, Fortran, Python | 1970 | many components | Non-free | Proprietary | General purpose numerical analysis library. |
LAPACK | Fortran | 1992 | 3.7.0 / 12.2016 | Free | 3-clause BSD | Numerical linear algebra library with long history | |
MKL | Intel | C++, Fortran | 2003 | 2017 update 2 / 09.2016 | Non-free | Intel Simplified Software License | Numerical analysis library optimized for Intel CPUs |
Math.NET_Numerics | C. Rüegg, M. Cuda, et al. | C# | 2009 | 3.20 / 07.2017 | Free | MIT_License | C# numerical analysis library with linear algebra support |
NAG Numerical Library | The Numerical Algorithms Group | C, Fortran | 1971 | many components | Non-free | Proprietary | General purpose numerical analysis library. |
NMath | CenterSpace Software | C# | 2003 | 4.0 / November 2009 | Non-free | Proprietary | Math and statistical libraries for the .NET Framework |
SciPy | Enthought | Python | 2001 | 1.0.0 / 10.2017 | Free | BSD | Based on Python |
Eigen | Benoît Jacob | C++ | 2008 | 3.3.4 / 06.2017 | Free | MPL2 | Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. |
Armadillo | NICTA | C++ | 2009 | 9.200 / 10.2018 | Free | Apache License 2.0 | C++ template library for linear algebra; includes various decompositions and factorisations; syntax (API) is similar to MATLAB. |
Blaze | Klaus Iglberger | C++ | 2012 | 3.2 / 08.2017 | Free | BSD | Blaze is an open-source, high-performance C++ math library for dense and sparse arithmetic. Benchmarks shown here. |
librsb | Michele Martone | C, Fortran, M4 | 2011 | 1.2 / September 2016 | Free | GPL | High-performance multi-threaded primitives for large sparse matrices. Support operations for iterative solvers: multiplication, triangular solve, scaling, matrix I/O, matrix rendering. Many variants: e.g.: symmetric, hermitian, complex, quadruple precision. |
Elemental | Jack Poulson | C, C++ | 2010 | 0.87.7 / February 2017 | Free | BSD | open-source, openly-developed, software for distributed-memory dense and sparse-direct linear algebra and optimization which supports a wide range of functionality not available elsewhere. |
Matrix types and operations[edit]
Matrix types (special types like bidiagonal/tridiagonal are not listed):
- Real - general (nonsymmetric) real
- Complex - general (nonsymmetric) complex
- SPD - symmetric positive definite (real)
- HPD - Hermitian positive definite (complex)
- SY - symmetric (real)
- HE - Hermitian (complex)
- BND - band
Operations:
- TF - triangular factorizations (LU, Cholesky)
- OF - orthogonal factorizations (QR, QL, generalized factorizations)
- EVD - eigenproblems
- SVD - singular value decomposition
- GEVD - generalized EVD
- GSVD - generalized SVD
Real | Complex | SPD | HPD | SY | HE | BND | TF | OF | EVD | SVD | GEVD | GSVD | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ALGLIB | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes | Yes | Yes | No |
ATLAS | Yes | Yes | Yes | Yes | No | No | No | Yes | No | No | No | No | No |
Dlib | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No | No |
GNU Scientific Library | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes | Yes | Yes | No |
ILNumerics.Net | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes | Yes | No | No |
IMSL Numerical Libraries | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | Yes | Yes | Yes | No |
LAPACK | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
MKL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
NAG Numerical Library | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
NMath | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
SciPy (Python packages) | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes | Yes | No | No |
Eigen | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
Armadillo | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | No |
Elemental | Yes | Yes | Yes | Yes |