The following tables provide a comparison of linear algebra software libraries, either specialized or general purpose libraries with significant linear algebra coverage.
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 | GPL/commercial | General purpose numerical analysis library with C++, C#, Python, FreePascal interfaces. | ||
Armadillo[2] [3] | NICTA | C++ | 2009 | 12.6.6 / 10.2023 | 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 | BSD | Automatically tuned implementation of BLAS. Also includes LU and Cholesky decompositions. | ||
Blaze[4] | K. Iglberger et al. | C++ | 2012 | 3.8 / 08.2020 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | Proprietary | General purpose numerical analysis library. | ||
LAPACK[7] [8] | Fortran | 1992 | 3.12.0 / 11.2023 | 3-clause BSD | Numerical linear algebra library with long history | |||
librsb | Michele Martone | C, Fortran, M4 | 2011 | 1.2.0 / 09.2016 | 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 | 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 | 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 | 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 | Proprietary | General purpose numerical analysis library. | ||
NMath | CenterSpace Software | C# | 2003 | 7.1 / 12.2019 | Proprietary | Math and statistical libraries for the .NET Framework | ||
SciPy[9] [10] [11] | Enthought | Python | 2001 | 1.11.1 / 6.2023 | BSD | Based on Python | ||
Xtensor[12] | S. Corlay, W. Vollprecht, J. Mabille et al. | C++ | 2016 | 0.21.10 / 11.2020 | 3-clause BSD | Xtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions, broadcasting and lazy computing. |
Matrix types (special types like bidiagonal/tridiagonal are not listed):
Operations: