# 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 | 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 | 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 | 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 | 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 | 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 | | 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 | Enthought | Python | 2001 | 1.11.1 / 6.2023 | Free | BSD | Based on Python |
| Xtensor | 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 |