Comparison of linear algebra libraries explained

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

CreatorLanguageFirst public releaseLatest stable versionSource code availabilityLicenseNotes
ALGLIB[1] ALGLIB ProjectC++, C#, Python, FreePascal20064.00.0 / 05.2023GPL/commercialGeneral purpose numerical analysis library with C++, C#, Python, FreePascal interfaces.
Armadillo[2] [3] NICTAC++200912.6.6 / 10.2023Apache License 2.0C++ template library for linear algebra; includes various decompositions and factorisations; syntax (API) is similar to MATLAB.
ATLASR. Clint Whaley et al.C20013.10.3 / 07.2016BSDAutomatically tuned implementation of BLAS. Also includes LU and Cholesky decompositions.
Blaze[4] K. Iglberger et al.C++20123.8 / 08.2020BSDBlaze is an open-source, high-performance C++ math library for dense and sparse arithmetic.
Blitz++Todd VeldhuizenC++?1.0.2 / 10.2019GPLBlitz++ is a C++ template class library that provides high-performance multidimensional array containers for scientific computing.
Boost uBLASJ. Walter, M. Koch C++20001.84.0 / 12.2023Boost Software LicenseuBLAS is a C++ template class library that provides BLAS level 1, 2, 3 functionality for dense, packed and sparse matrices.
DlibDavis E. KingC++200619.24.2 / 05.2023BoostC++ template library; binds to optimized BLAS such as the Intel MKL; Includes matrix decompositions, non-linear solvers, and machine learning tooling
EigenBenoît JacobC++20083.4.0 / 08.2021MPL2Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
Fastor[5] R. Poya, A. J. Gil and R. OrtigosaC++20160.6.4 / 06.2023MIT LicenseFastor is a high performance tensor (fixed multi-dimensional array) library for modern C++.
GNU Scientific Library[6] GNU ProjectC, C++19962.7.1 / 11.2021 GPLGeneral purpose numerical analysis library. Includes some support for linear algebra.
IMSL Numerical LibrariesRogue Wave SoftwareC, Java, C#, Fortran, Python1970many componentsProprietaryGeneral purpose numerical analysis library.
LAPACK[7] [8] Fortran19923.12.0 / 11.2023 3-clause BSDNumerical linear algebra library with long history
librsbMichele MartoneC, Fortran, M420111.2.0 / 09.2016GPLHigh-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.
oneMKLIntelC, C++, Fortran20032023.1 / 03.2023Intel Simplified Software LicenseNumerical analysis library optimized for Intel CPUs and GPUs. C++ SYCL based reference API implementation available in source for free.
Math.NET NumericsC. Rüegg, M. Cuda, et al.C#20095.0.0 / 04.2022MIT LicenseC# numerical analysis library with linear algebra support
Matrix Template LibraryJeremy Siek, Peter Gottschling, Andrew Lumsdaine, et al.C++19984.0 / 2018Boost Software LicenseHigh-performance C++ linear algebra library based on Generic programming
NAG Numerical LibraryThe Numerical Algorithms GroupC, Fortran1971many componentsProprietaryGeneral purpose numerical analysis library.
NMathCenterSpace SoftwareC#20037.1 / 12.2019ProprietaryMath and statistical libraries for the .NET Framework
SciPy[9] [10] [11] EnthoughtPython20011.11.1 / 6.2023BSDBased on Python
Xtensor[12] S. Corlay, W. Vollprecht, J. Mabille et al.C++20160.21.10 / 11.20203-clause BSDXtensor 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):

Operations:

Notes and References

  1. Bochkanov, S., & Bystritsky, V. (2011). ALGLIB-a cross-platform numerical analysis and data processing library. ALGLIB Project.
  2. Sanderson, C., & Curtin, R. (2016). Armadillo: a template-based C++ library for linear algebra. Journal of Open Source Software, 1(2), 26.
  3. Sanderson, C. (2010). Armadillo: An open source C++ linear algebra library for fast prototyping and computationally intensive experiments (p. 84). Technical report, NICTA.
  4. Web site: Bitbucket.
  5. 10.1016/j.cpc.2017.02.016 . A high performance data parallel tensor contraction framework: Application to coupled electro-mechanics . Poya, Roman and Gil, Antonio J. and Ortigosa, Rogelio . 2017 . Computer Physics Communications . 216 . 35–52 . 2017CoPhC.216...35P .
  6. Gough, B. (2009). GNU scientific library reference manual. Network Theory Ltd.
  7. Anderson, E., Bai, Z., Bischof, C., Blackford, S., Dongarra, J., Du Croz, J., ... & Sorensen, D. (1999). LAPACK Users' guide. SIAM.
  8. 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.
  9. Jones, E., Oliphant, T., & Peterson, P. (2001). SciPy: Open source scientific tools for Python.
  10. Bressert, E. (2012). SciPy and NumPy: an overview for developers. " O'Reilly Media, Inc.".
  11. Blanco-Silva, F. J. (2013). Learning SciPy for numerical and scientific computing. Packt Publishing Ltd.
  12. Web site: Xtensor-stack/Xtensor. GitHub. 13 February 2022.