Generated by GPT-5-mini| Eigen (library) | |
|---|---|
| Name | Eigen |
| Developer | Benoît Jacob |
| Latest release | 3.4.0 |
| Programming language | C++ |
| Operating system | Cross-platform |
| Genre | Linear algebra library |
| License | MPL2 |
Eigen (library) Eigen is a C++ template library for linear algebra providing matrices, vectors, numerical solvers, and related algorithms. It is widely used in scientific computing, robotics, computer vision, and machine learning projects and integrates with many projects and ecosystems such as ROS (software), TensorFlow, OpenCV, PyTorch and Matlab. Eigen emphasizes high performance, portability, and a permissive license that facilitates use in academic, industrial, and open-source software such as LibreOffice, Blender (software), and Octave.
Eigen implements dense and sparse linear algebra routines, supporting operations on fixed-size and dynamic matrices and vectors, and offering decomposition methods like LU, QR, and SVD used in projects such as Eigenfaces research, Kalman filter implementations, and SLAM frameworks. The library is header-only and template-based, allowing inline expansion and optimization by compilers like GCC, Clang (compiler), and Microsoft Visual C++, and it cooperates with low-level libraries such as BLAS and LAPACK for interoperability in scientific stacks including SciPy, NumPy, and Julia (programming language). Eigen's design decisions reflect influences from numerical analysis research at institutions like INRIA, CNRS, and École Polytechnique and have been adopted in engineering applications developed by organizations such as NASA, European Space Agency, and Siemens.
Eigen provides a range of modules including Core for expressions and memory management, Dense for matrix manipulation, Sparse for compressed storage and iterative solvers, and Geometry for transformations used in robotics and computer graphics pipelines like OGRE (engine), Unity (game engine), and Unreal Engine. It contains decomposition algorithms (Cholesky, LDLT, Eigenvalue solvers) and iterative methods (Conjugate Gradient, GMRES) that parallel research from Golub and Van Loan, Trefethen, and techniques applied in Finite element method solvers developed at MIT, Stanford University, and ETH Zurich. Eigen's expression templates enable lazy evaluation and loop fusion comparable to strategies in Boost (C++ libraries), PetSc, and Armadillo (C++ library), while its plugin architecture permits backends such as OpenMP, CUDA, and vendor libraries like Intel Math Kernel Library for hardware acceleration in systems from NVIDIA, AMD, and Intel Corporation.
Performance comparisons often place Eigen competitively against libraries such as DirectXMath, MKL, ATLAS, and ACML for medium-sized linear algebra tasks, with benchmarks run on processors from Intel Core, AMD Ryzen, and ARM architectures and in vectorized contexts using SSE, AVX, and NEON. Real-world applications in computer vision benchmarks like ImageNet pipelines or robotics benchmarks such as KITTI dataset show that Eigen's cache-friendly blocking and compile-time optimizations can approach hand-tuned implementations used in OpenBLAS and vendor-optimized routines, while differences appear for extremely large problems where distributed frameworks like ScaLAPACK or PETSc are favored. Profiling tools from Valgrind, gprof, and perf (Linux) are commonly used to evaluate Eigen-accelerated code in computational science projects at institutions including Lawrence Livermore National Laboratory, CERN, and Oak Ridge National Laboratory.
Although native to C++, Eigen interoperates with higher-level environments through bindings and adapters for Python (programming language), MATLAB, R (programming language), and Julia (programming language), and integrations exist in ecosystems like ROS 2 and Gazebo (simulator). Wrappers and glue libraries link Eigen data structures to NumPy arrays, Cython, and SWIG interfaces enabling use in projects such as scikit-learn, Pandas, and TensorFlow custom ops, while plugin support allows GPU offload via CUDA and OpenCL in workflows deployed on Google Cloud Platform, Amazon Web Services, and Microsoft Azure for scalable computation.
Eigen originated in the mid-2000s with contributions from Benoît Jacob and a community of developers affiliated with organizations including OpenCV, Mozilla Foundation, and academic labs at Université Paris-Sud; release milestones introduced significant features such as the Sparse module, improved expression templates, and SIMD support culminating in the 3.x series used widely today. Versioning and changelogs have been tracked in repositories hosted on platforms like GitHub and coordinated through issue trackers and continuous integration systems such as Travis CI, CircleCI, and GitLab CI/CD, with community reviewers from projects like KDE, GNOME, and LibreOffice contributing patches and documentation.
Eigen is embedded in a wide range of software including OpenCV for vision algorithms, ROS for robotic kinematics and state estimation, pcl (Point Cloud Library) for 3D processing, and scientific packages used in computational physics at Los Alamos National Laboratory and Imperial College London. It supports applications in robotics (motion planning, SLAM), computer vision (feature matching, bundle adjustment), machine learning (linear models, PCA), and engineering simulations used by firms like Bosch, ABB, and Thales in product development and research collaborations with universities such as University of Cambridge and Carnegie Mellon University.
Eigen is distributed under the Mozilla Public License 2.0, adopted by projects and organizations requiring a permissive copyleft-compatible license such as Mozilla Foundation initiatives and corporate contributors including Google and Intel Corporation; this licensing has enabled inclusion in distributions like Debian, Ubuntu, and Fedora. The project benefits from an active community on platforms like Stack Overflow, GitHub, and mailing lists maintained by contributors from research groups at EPFL and industrial partners, with documentation, tutorials, and community support fostering adoption in open-source projects such as ROS, OpenCV, and academic courses at Harvard University and University of Oxford.
Category:C++ libraries