Comparison of linear algebra libraries

Last updated

The following tables provide a comparison of linear algebra software libraries , either specialized or general purpose libraries with significant linear algebra coverage.

Contents

Dense linear algebra

General information

CreatorLanguageFirst public releaseLatest stable versionSource code availabilityLicenseNotes
ALGLIB [1] ALGLIB ProjectC++, C#, Python, FreePascal20064.00.0 / 05.2023FreeGPL/commercialGeneral purpose numerical analysis library with C++, C#, Python, FreePascal interfaces.
Armadillo [2] [3] NICTA C++200912.6.6 / 10.2023Free 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.C20013.10.3 / 07.2016FreeBSDAutomatically tuned implementation of BLAS. Also includes LU and Cholesky decompositions.
Blaze [4] K. Iglberger et al.C++20123.8 / 08.2020Free BSD Blaze is an open-source, high-performance C++ math library for dense and sparse arithmetic.
Blitz++ Todd VeldhuizenC++ ?1.0.2 / 10.2019Free GPL Blitz++ 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.
Dlib Davis 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
Eigen Benoît JacobC++20083.4.0 / 08.2021Free 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. OrtigosaC++20160.6.4 / 06.2023Free MIT License Fastor is a high performance tensor (fixed multi-dimensional array) library for modern C++.
GNU Scientific Library [6] GNU ProjectC, C++19962.7.1 / 11.2021Free GPL General purpose numerical analysis library. Includes some support for linear algebra.
IMSL Numerical Libraries Rogue Wave Software C, Java, C#, Fortran, Python1970many componentsNon-freeProprietaryGeneral purpose numerical analysis library.
LAPACK [7] [8] Fortran19923.12.0 / 11.2023Free 3-clause BSD Numerical linear algebra library with long history
librsb Michele MartoneC, Fortran, M420111.2.0 / 09.2016Free 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 IntelC, 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 Numerics C. Rüegg, M. Cuda, et al.C#20095.0.0 / 04.2022Free MIT License C# numerical analysis library with linear algebra support
Matrix Template Library Jeremy Siek, Peter Gottschling, Andrew Lumsdaine, et al.C++19984.0 / 2018Free Boost Software LicenseHigh-performance C++ linear algebra library based on Generic programming
NAG Numerical Library The Numerical Algorithms Group C, Fortran1971many componentsNon-freeProprietaryGeneral purpose numerical analysis library.
NMath CenterSpace Software C#20037.1 / 12.2019Non-freeProprietaryMath and statistical libraries for the .NET Framework
SciPy [9] [10] [11] Enthought Python20011.11.1 / 6.2023Free BSD Based on Python
Xtensor [12] S. Corlay, W. Vollprecht, J. Mabille et al.C++20160.21.10 / 11.2020Free 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):

Operations:

RealComplexSPDHPDSYHEBNDTFOFEVPSVDGEVPGSVD
ALGLIB YesYesYesYesNoNoNoYesYesYesYesYesNo
ATLAS YesYesYesYesNoNoNoYesNoNoNoNoNo
Dlib YesYesYesYesYesYesNoYesYesYesYesNoNo
GNU Scientific Library YesYesYesYesNoNoNoYesYesYesYesYesYes
ILNumerics.Net YesYesYesYesNoNoNoYesYesYesYesNoNo
IMSL Numerical Libraries YesYesYesYesNoNoYesYesNoYesYesYesNo
LAPACK YesYesYesYesYesYesYesYesYesYesYesYesYes
oneMKL YesYesYesYesYesYesYesYesYesYesYesYesYes
NAG Numerical Library YesYesYesYesYesYesYesYesYesYesYesYesYes
NMath YesYesYesYesYesYesYesYesYesYesYesNoNo
SciPy (Python packages)YesYesYesYesNoNoNoYesYesYesYesNoNo
Eigen YesYesYesYesYesYesYesYesYesYesYesYesNo
Armadillo YesYesYesYesYesYesNoYesYesYesYesYesNo

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".
  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. hdl: 10317/17584 .{{cite journal}}: CS1 maint: multiple names: authors list (link)
  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.