Generated by GPT-5-mini| Eigen (C++ library) | |
|---|---|
![]() | |
| Name | Eigen |
| Author | Benoît Jacob |
| Developer | Gaël Guennebaud, Benoît Jacob, and contributors |
| Released | 2006 |
| Latest release version | 3.4.0 |
| Programming language | C++ |
| Operating system | Cross-platform |
| Genre | Numerical linear algebra library |
| License | MPL2 |
Eigen (C++ library) is a C++ template library for linear algebra, matrices, vectors, numerical solvers, and related algorithms. It is designed for high performance and portability across platforms used in scientific computing, robotics, computer vision, and finance. The project has a long history of contributions from individual researchers and industrial teams and is widely integrated into open source and proprietary software stacks.
Eigen originated as a response to demands for a header-only, template-based linear algebra toolkit suitable for modern C++ projects and was initiated by contributors active in the European research and open source communities. It targets applications ranging from small embedded systems to high-performance clusters and is used alongside projects led by organizations and research groups in France, Germany, United States, Japan, and other technology centers. Prominent software ecosystems that interoperate with Eigen include libraries and frameworks developed by teams associated with Google, Microsoft, Intel, IBM, and research institutions such as INRIA and CNRS.
Eigen provides a broad feature set for numerical computing: dense and sparse matrix representations, linear solvers, eigenvalue decompositions, singular value decompositions, matrix factorizations, and optimization primitives. It supports expression templates, lazy evaluation, and vectorization techniques compatible with instruction sets from vendors such as Intel, ARM, and AMD. Higher-level modules include geometry, transformations, quaternion algebra, and support for discretization strategies used in projects from groups at ETH Zurich, MIT, and Stanford University. Interoperability is evident in bindings and adapters used in ecosystems led by teams from ROS, OpenCV, PCL, and vendors such as NVIDIA and Broadcom.
The architecture emphasizes a header-only design relying on C++ templates and compile-time polymorphism, enabling zero-overhead abstractions akin to approaches advocated in works from researchers at University of Illinois Urbana–Champaign and Carnegie Mellon University. Core design patterns include expression templates, traits classes, and functor-based customization that mirror techniques discussed in literature produced by authors affiliated with University of Cambridge and ETH Zurich. The modular layout separates dense, sparse, and geometric modules, facilitating integration with build systems and toolchains used by projects at GNU and LLVM-based compilers such as Clang and GCC.
Performance tuning in Eigen combines algorithmic choices and low-level optimizations to leverage SIMD units, cache hierarchies, and multi-core scheduling used in processors from Intel, AMD, and ARM. Benchmarks often compare Eigen with libraries and implementations from entities like BLAS implementations optimized by OpenBLAS, vendor-supplied libraries from Intel MKL, and research prototypes from university groups at UC Berkeley and Princeton University. Profiling and microbenchmarking practices used by contributors reference tools and techniques popularized by teams at Google and Mozilla and incorporate continuous integration strategies drawn from projects maintained by organizations including GitHub and GitLab.
Typical usage patterns include constructing dense matrices and vectors, performing matrix multiplication, decompositions, and solving linear systems within applications developed for robotics, computer vision, and machine learning. Example contexts include codebases originating in labs at Carnegie Mellon University, EPFL, Harvard University, and startups founded by alumni of Stanford University and UC Berkeley. Integration examples show Eigen embedded in software stacks using build tools and platforms provided by CMake, Bazel, and IDEs supported by Microsoft Visual Studio and JetBrains tooling. Educational examples are found in course materials from MIT OpenCourseWare and workshops at conferences such as NeurIPS and ICRA.
The development model is collaborative, with contributions from researchers, industrial engineers, and open source volunteers coordinated through distributed version control and issue trackers maintained on platforms used by projects at GitHub and mirrors linked to services from GitLab. Governance and maintenance practices reflect patterns seen in other enduring projects supported by communities around Python libraries, academic labs, and corporate research groups. Contributors include individual maintainers who have published related algorithms in venues like SIGGRAPH, CVPR, and ICML.
Eigen is distributed under the Mozilla Public License 2.0, facilitating use in both open source and proprietary projects and enabling integration alongside software from corporations such as Apple, Google, Microsoft, and Tesla. Adoption spans academic, industrial, and hobbyist domains, with deployments in operating systems and stacks maintained by organizations including Debian, Ubuntu, Red Hat, and cloud services operated by firms like Amazon Web Services and Microsoft Azure. Its licensing model and permissive integration attributes have encouraged inclusion in scientific packages and commercial products developed by companies such as Siemens and Bosch.
Category:C++ libraries Category:Numerical linear algebra