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
Creator
Language
First public release
Latest stable version
Source code availability
License
Notes
ALGLIB [ 1]
ALGLIB Project
C++, C#, Python, FreePascal
2006
4.00.0 / 05.2023
Free
GPL/commercial
General purpose numerical analysis library with C++, C#, Python, FreePascal interfaces.
Armadillo [ 2] [ 3]
NICTA
C++
2009
12.6.6 / 10.2023
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.84.0 / 12.2023
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.24.2 / 05.2023
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.4.0 / 08.2021
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.4 / 06.2023
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.7.1 / 11.2021
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.12.0 / 11.2023
Free
3-clause BSD
Numerical linear algebra library with long history
librsb
Michele Martone
C, Fortran, M4
2011
1.2.0 / 09.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.
oneMKL
Intel
C, C++, Fortran
2003
2023.1 / 03.2023
Non-free
Intel Simplified Software License
Numerical analysis library optimized for Intel CPUs and GPUs. C++ SYCL based reference API implementation available in source for free.
Math.NET Numerics
C. Rüegg, M. Cuda, et al.
C#
2009
5.0.0 / 04.2022
Free
MIT License
C# numerical analysis library with linear algebra support
Matrix Template Library
Jeremy Siek, Peter Gottschling, Andrew Lumsdaine, et al.
C++
1998
4.0 / 2018
Free
Boost Software License
High-performance C++ linear algebra library based on Generic programming
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 / 12.2019
Non-free
Proprietary
Math and statistical libraries for the .NET Framework
SciPy [ 9] [ 10] [ 11]
Enthought
Python
2001
1.11.1 / 6.2023
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
Yes
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
oneMKL
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.
^ 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.
^ "Bitbucket" .
^ 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 . 216 : 35– 52. Bibcode :2017CoPhC.216...35P . doi :10.1016/j.cpc.2017.02.016 . {{cite journal }}
: 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.
^ "Xtensor-stack/Xtensor" . GitHub . 13 February 2022.
External links