Eigen is a high-performance C++ numerical library for linear algebra. It supports a wide range of operations, including matrix and vector operations, linear system solves, eigenvalues and eigenvectors, and decompositions such as QR and SVD.
Eigen also provides error-free numerical derivatives and Jacobians.
Eigen allows for efficient and reliable computation of complex mathematical operations through its optimized linear algebra library.
Features:
Matrix and Vector operations:
Eigen provides efficient operations for vectors and matrices such as multiplication, addition, subtraction, and scalar multiplication. It also supports element-wise operations such as element-wise multiplication and division.
Linear System Solves:
Eigen provides efficient algorithms for solving linear systems of equations. It supports direct methods such as LU and Cholesky decomposition, and iterative methods such as Conjugate Gradient and Bi-Conjugate Gradient.
Eigenvalues and Eigenvectors:
Eigen provides efficient algorithms for finding the eigenvalues and eigenvectors of a matrix. It supports a range of methods, including QR and Jacobi.
Decompositions:
Eigen provides efficient algorithms for decomposing matrices into simpler parts. It supports QR, LU, and SVD decompositions.
Error-free Numerical Derivatives:
Eigen provides efficient algorithms for computing numerical derivatives. It supports both forward and central difference methods.
Jacobians:
Eigen provides efficient algorithms for computing Jacobians. It supports both forward and central difference methods.
Sparse Matrices:
Eigen provides efficient algorithms for handling sparse matrices. It supports operations such as multiplication, addition, and subtraction.
Parallelism:
Eigen supports parallelism through OpenMP, which allows taking advantage of multi-core processors.
Data Structures:
Eigen provides efficient data structures such as vectors, matrices, and sparse matrices. It also provides a range of algorithms for manipulating these data structures.
Performance:
Eigen is optimized for performance, providing efficient algorithms and data structures. It is written in modern C++, making use of features such as templates and expression templates to reduce overhead.