# Comparison of linear algebra libraries

Jump to navigation
Jump to search

This article does not cite any sources. (June 2010) (Learn how and when to remove this template message) |

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[edit]

### General information[edit]

Creator | Language | First public release | Latest stable version | Source code availability | License | Notes | |
---|---|---|---|---|---|---|---|

ALGLIB | 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 |

DataMelt | S.Chekanov et al. | Java | 2005 | 1.7 / 03.2017 | Free | GPL | A general purpose. Includes JBLAS and JLAPACK |

GNU Scientific Library | 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 | 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 | 4.0 / November 2009 | Non-free | Proprietary | Math and statistical libraries for the .NET Framework |

SciPy | Enthought | Python | 2001 | 1.0.0 / 10.2017 | Free | BSD | Based on Python |

Eigen | Benoît Jacob | C++ | 2008 | 3.3.4 / 06.2017 | Free | MPL2 | Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. |

Armadillo | 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. |

Blaze | Klaus Iglberger | C++ | 2012 | 3.2 / 08.2017 | Free | BSD | Blaze is an open-source, high-performance C++ math library for dense and sparse arithmetic. Benchmarks shown here. |

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. |

Elemental | Jack Poulson | C, C++ | 2010 | 0.87.7 / February 2017 | Free | BSD | open-source, openly-developed, software for distributed-memory dense and sparse-direct linear algebra and optimization which supports a wide range of functionality not available elsewhere. |

### Matrix types and operations[edit]

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)*EVD*- eigenproblems*SVD*- singular value decomposition*GEVD*- generalized EVD*GSVD*- generalized SVD

Real | Complex | SPD | HPD | SY | HE | BND | TF | OF | EVD | SVD | GEVD | 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 |

Elemental | Yes | Yes | Yes | Yes |