Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Comparison of linear algebra libraries
List article

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
ALGLIB1ALGLIB ProjectC++, C#, Python, FreePascal20064.00.0 / 05.2023FreeGPL/commercialGeneral purpose numerical analysis library with C++, C#, Python, FreePascal interfaces.
Armadillo23NICTAC++200912.6.6 / 10.2023FreeApache 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.2016FreeBSDAutomatically tuned implementation of BLAS. Also includes LU and Cholesky decompositions.
Blaze4K. Iglberger et al.C++20123.8 / 08.2020FreeBSDBlaze is an open-source, high-performance C++ math library for dense and sparse arithmetic.
Blitz++Todd VeldhuizenC++?1.0.2 / 10.2019FreeGPLBlitz++ is a C++ template class library that provides high-performance multidimensional array containers for scientific computing.
Boost uBLASJ. Walter, M. KochC++20001.84.0 / 12.2023FreeBoost 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.2023FreeBoostC++ 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.2021FreeMPL2Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
Fastor5R. Poya, A. J. Gil and R. OrtigosaC++20160.6.4 / 06.2023FreeMIT LicenseFastor is a high performance tensor (fixed multi-dimensional array) library for modern C++.
GNU Scientific Library6GNU ProjectC, C++19962.7.1 / 11.2021FreeGPLGeneral purpose numerical analysis library. Includes some support for linear algebra.
IMSL Numerical LibrariesRogue Wave SoftwareC, Java, C#, Fortran, Python1970many componentsNon-freeProprietaryGeneral purpose numerical analysis library.
LAPACK78Fortran19923.12.0 / 11.2023Free3-clause BSDNumerical linear algebra library with long history
librsbMichele MartoneC, Fortran, M420111.2.0 / 09.2016FreeGPLHigh-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.2023Non-freeIntel 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.2022FreeMIT LicenseC# numerical analysis library with linear algebra support
Matrix Template LibraryJeremy Siek, Peter Gottschling, Andrew Lumsdaine, et al.C++19984.0 / 2018FreeBoost Software LicenseHigh-performance C++ linear algebra library based on Generic programming
NAG Numerical LibraryThe Numerical Algorithms GroupC, Fortran1971many componentsNon-freeProprietaryGeneral purpose numerical analysis library.
NMathCenterSpace SoftwareC#20037.1 / 12.2019Non-freeProprietaryMath and statistical libraries for the .NET Framework
SciPy91011EnthoughtPython20011.11.1 / 6.2023FreeBSDBased on Python
Xtensor12S. Corlay, W. Vollprecht, J. Mabille et al.C++20160.21.10 / 11.2020Free3-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):

  • 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
  • SVDsingular value decomposition
  • GEVP – generalized EVP
  • GSVDgeneralized SVD
RealComplexSPDHPDSYHEBNDTFOFEVPSVDGEVPGSVD
ALGLIBYesYesYesYesNoNoNoYesYesYesYesYesNo
ATLASYesYesYesYesNoNoNoYesNoNoNoNoNo
DlibYesYesYesYesYesYesNoYesYesYesYesNoNo
GNU Scientific LibraryYesYesYesYesNoNoNoYesYesYesYesYesYes
ILNumerics.NetYesYesYesYesNoNoNoYesYesYesYesNoNo
IMSL Numerical LibrariesYesYesYesYesNoNoYesYesNoYesYesYesNo
LAPACKYesYesYesYesYesYesYesYesYesYesYesYesYes
oneMKLYesYesYesYesYesYesYesYesYesYesYesYesYes
NAG Numerical LibraryYesYesYesYesYesYesYesYesYesYesYesYesYes
NMathYesYesYesYesYesYesYesYesYesYesYesNoNo
SciPy (Python packages)YesYesYesYesNoNoNoYesYesYesYesNoNo
EigenYesYesYesYesYesYesYesYesYesYesYesYesNo
ArmadilloYesYesYesYesYesYesNoYesYesYesYesYesNo

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. "Bitbucket". https://bitbucket.org/blaze-lib/blaze/src/master/

  5. 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) https://cronfa.swan.ac.uk/Record/cronfa32097

  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. "Xtensor-stack/Xtensor". GitHub. 13 February 2022. https://github.com/xtensor-stack/xtensor