Comparison of linear algebra libraries
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
General information
Creator | Language | First public release | Latest stable version | Source code availability | License | Notes | |
---|---|---|---|---|---|---|---|
ALGLIB[1] | 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. |
Armadillo[2][3] | 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. |
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. |
Blaze[4] | K. Iglberger et al. | C++ | 2012 | 3.8 / 08.2020 | Free | BSD | Blaze is an open-source, high-performance C++ math library for dense and sparse arithmetic. |
Blitz++ | Todd Veldhuizen | C++ | ? | 1.0.2 / 10.2019 | Free | GPL | Blitz++ is a C++ template class library that provides high-performance multidimensional array containers for scientific computing. |
Boost uBLAS | J. Walter, M. Koch | C++ | 2000 | 1.70.0 / 04.2019 | Free | Boost Software License | uBLAS is a C++ template class library that provides BLAS level 1, 2, 3 functionality for dense, packed and sparse matrices. |
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 |
Eigen | Benoît Jacob | C++ | 2008 | 3.3.7 / 12.2018 | Free | MPL2 | Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. |
Fastor[5] | R. Poya, A. J. Gil and R. Ortigosa | C++ | 2016 | 0.6.3 / 06.2020 | Free | MIT License | Fastor is a high performance tensor (fixed multi-dimensional array) library for modern C++. |
GNU Scientific Library[6] | 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[7][8] | Fortran | 1992 | 3.9.0 / 11.2019 | Free | 3-clause BSD | Numerical linear algebra library with long history | |
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. |
MKL | Intel | C++, Fortran | 2003 | 2020.0 update 1 / 01.2020 | 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 | 7.1 / December 2019 | Non-free | Proprietary | Math and statistical libraries for the .NET Framework |
SciPy[9][10][11] | Enthought | Python | 2001 | 1.0.0 / 10.2017 | Free | BSD | Based on Python |
Xtensor[12] | S. Corlay, W. Vollprecht, J. Mabille et al. | C++ | 2016 | 0.21.10 / 11.2020 | Free | 3-clause BSD | Xtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions, broadcasting and lazy computing. |
Matrix types and operations
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)
- EVP – eigenvalue problems
- SVD – singular value decomposition
- GEVP – generalized EVP
- GSVD – generalized SVD
Real | Complex | SPD | HPD | SY | HE | BND | TF | OF | EVP | SVD | GEVP | 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 |
References
- Bochkanov, S., & Bystritsky, V. (2011). ALGLIB-a cross-platform numerical analysis and data processing library. ALGLIB Project. Novgorod, Russia.
- Sanderson, C., & Curtin, R. (2016). Armadillo: a template-based C++ library for linear algebra. Journal of Open Source Software, 1(2), 26.
- Sanderson, C. (2010). Armadillo: An open source C++ linear algebra library for fast prototyping and computationally intensive experiments (p. 84). Technical report, NICTA.
- https://bitbucket.org/blaze-lib/blaze/src/master/
- Poya, Roman and Gil, Antonio J. and Ortigosa, Rogelio (2017). "A high performance data parallel tensor contraction framework: Application to coupled electro-mechanics". Computer Physics Communications. doi:10.1016/j.cpc.2017.02.016.CS1 maint: multiple names: authors list (link)
- Gough, B. (2009). GNU scientific library reference manual. Network Theory Ltd..
- Anderson, E., Bai, Z., Bischof, C., Blackford, S., Dongarra, J., Du Croz, J., ... & Sorensen, D. (1999). LAPACK Users' guide. SIAM.
- Anderson, E., Bai, Z., Dongarra, J., Greenbaum, A., McKenney, A., Du Croz, J., ... & Sorensen, D. (1990, November). LAPACK: A portable linear algebra library for high-performance computers. In Proceedings of the 1990 ACM/IEEE conference on Supercomputing (pp. 2–11). IEEE Computer Society Press.
- Jones, E., Oliphant, T., & Peterson, P. (2001). SciPy: Open source scientific tools for Python.
- Bressert, E. (2012). SciPy and NumPy: an overview for developers. " O'Reilly Media, Inc.".
- Blanco-Silva, F. J. (2013). Learning SciPy for numerical and scientific computing. Packt Publishing Ltd.
- https://github.com/xtensor-stack/xtensor
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.