Generated by GPT-5-mini| Eigen (software library) | |
|---|---|
| Name | Eigen |
| Author | Gaël Guennebaud |
| Developer | Open source community |
| Released | 2006 |
| Programming language | C++ |
| Operating system | Cross-platform |
| Genre | Library |
| License | MPL2.0 / LGPL3.0 |
Eigen (software library) is a C++ template library for linear algebra, matrices, vectors, numerical solvers, and related algorithms. Designed for high performance and portability, it is widely used in scientific computing, computer vision, robotics, and machine learning projects. Eigen emphasizes expressive syntax, compile-time optimizations, and integration with other C++ frameworks and toolchains.
Eigen provides a header-only C++ implementation of dense and sparse linear algebra routines and decompositions. It targets users of GNU Compiler Collection, Clang (compiler frontend), and Microsoft Visual C++, and interoperates with libraries such as BLAS-compatible implementations, LAPACK, Intel Math Kernel Library, and CUDA-accelerated stacks. The project is associated with contributors from academic institutions and companies including INRIA, CNRS, and firms in the Silicon Valley and Tokyo research communities.
Eigen began as a research and development effort led by Gaël Guennebaud in the mid-2000s during collaborations with European research centers. Early versions were shaped by practices from projects at École Polytechnique, INRIA Saclay, and other French laboratories. Over time the codebase accumulated contributions from engineers and researchers affiliated with organizations such as Google, NVIDIA, Toyota Research Institute, and academic groups at ETH Zurich and Imperial College London. Development has progressed through incremental releases emphasizing C++98, then C++11/14/17 features, while maintaining broad compiler compatibility.
Eigen's design centers on template metaprogramming, expression templates, and lazy evaluation to minimize temporaries and enable compiler optimization. Core components implement dense matrices, sparse matrices, array operations, and fixed-size vector types used in robotics stacks like those from Willow Garage and Open Robotics. It exposes decompositions such as LU decomposition, Cholesky decomposition, QR decomposition, and eigenvalue solvers influenced by algorithms from Numerical Recipes and EISPACK heritage. Support for geometry, transformations, and quaternion algebra makes it suitable for projects originating from institutions such as Stanford University and Massachusetts Institute of Technology.
Performance engineering in Eigen leverages vectorization for SSE, AVX, and platform-specific intrinsics drawn from work at Intel Corporation and ARM Holdings. Benchmarks often compare Eigen against libraries like Armadillo (C++ library), Boost uBLAS, PETSc, and vendor-tuned implementations in Intel MKL and AMD Optimizing C/C++ Compiler. Results vary by problem size, memory layout, and compiler flags; microbenchmarks conducted in academic labs at University of Cambridge and University of Illinois Urbana–Champaign illustrate trade-offs in cache behavior and SIMD utilization. Users conducting profiling reference tools developed by Valgrind and Google PerfTools.
The header-only API is idiomatic C++ and integrates with build systems such as CMake and Autotools. Bindings and wrappers exist for languages and ecosystems maintained by organizations like Python Software Foundation and projects such as pybind11, enabling use within NumPy-centric stacks and SciPy-oriented workflows. Additional interfaces connect Eigen to frameworks from ROS (Robot Operating System), TensorFlow, and numerical platforms developed at Facebook (Meta Platforms, Inc.) and Microsoft Research.
Eigen is embedded in software from academic groups, corporations, and open-source projects including ROS, OpenCV, PCL (Point Cloud Library), Gazebo (simulator), and machine learning systems at DeepMind-affiliated repositories. Robotics companies such as Boston Dynamics and automotive research labs at Toyota and BMW use Eigen for kinematics and state estimation. In academia, it appears in publications from Caltech, Harvard University, and University of Oxford for simulations, optimization, and control research.
Eigen is distributed under liberal open-source terms, enabling use in commercial and academic settings; stewardship involves maintainers and contributors across foundations and companies such as Mozilla Foundation-related projects and independent developers. The community collaborates via platforms inspired by GitHub, mailing lists, and issue trackers used also by projects like LLVM and Boost (C++ libraries). Educational materials and tutorials are produced by university courses at University of Toronto and online resources connected to conferences like SIGGRAPH and NeurIPS.
Category:C++ libraries Category:Numerical linear algebra