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[1] ALGLIB Project C++, C#, FreePascal, VBA 2006 3.12.0 / 08.2017 Free GPL/commercial General purpose numerical analysis library with C++ and C# interfaces.
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.
Dlib Davis E. King C++ 2006 19.7 / 09/2017 Free Boost C++ template library; binds to optimized BLAS such as the Intel MKL; Includes matrix decompositions, non-linear solvers, and machine learning tooling
GNU Scientific Library[2] GNU Project C, C++ 1996 2.5 / 06.2018 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[3][4] Fortran 1992 3.7.0 / 12.2016 Free 3-clause BSD Numerical linear algebra library with long history
MKL Intel C++, Fortran 2003 2017 update 2 / 09.2016 Non-free Intel Simplified Software License Numerical analysis library optimized for Intel CPUs
Math.NET Numerics C. Rüegg, M. Cuda, et al. C# 2009 3.20 / 07.2017 Free MIT License C# numerical analysis library with linear algebra support
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 / December 2019 Non-free Proprietary Math and statistical libraries for the .NET Framework
SciPy[5][6][7] Enthought Python 2001 1.0.0 / 10.2017 Free BSD Based on Python
Eigen Benoît Jacob C++ 2008 3.3.7 / 12.2018 Free MPL2 Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
Armadillo[8][9] NICTA C++ 2009 9.200 / 10.2018 Free Apache License 2.0 C++ template library for linear algebra; includes various decompositions and factorisations; syntax (API) is similar to MATLAB.
librsb Michele Martone C, Fortran, M4 2011 1.2 / September 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.

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
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 No
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
MKL 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

References

  1. ^ Bochkanov, S., & Bystritsky, V. (2011). ALGLIB-a cross-platform numerical analysis and data processing library. ALGLIB Project. Novgorod, Russia.
  2. ^ Gough, B. (2009). GNU scientific library reference manual. Network Theory Ltd..
  3. ^ Anderson, E., Bai, Z., Bischof, C., Blackford, S., Dongarra, J., Du Croz, J., ... & Sorensen, D. (1999). LAPACK Users' guide. SIAM.
  4. ^ 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.
  5. ^ Jones, E., Oliphant, T., & Peterson, P. (2001). SciPy: Open source scientific tools for Python.
  6. ^ Bressert, E. (2012). SciPy and NumPy: an overview for developers. " O'Reilly Media, Inc.".
  7. ^ Blanco-Silva, F. J. (2013). Learning SciPy for numerical and scientific computing. Packt Publishing Ltd.
  8. ^ Sanderson, C., & Curtin, R. (2016). Armadillo: a template-based C++ library for linear algebra. Journal of Open Source Software, 1(2), 26.
  9. ^ Sanderson, C. (2010). Armadillo: An open source C++ linear algebra library for fast prototyping and computationally intensive experiments (p. 84). Technical report, NICTA.

External links