Eigen (C++ library)
{{Short description|Open-source linear algebra library}}
{{third-party|date=January 2016}}
{{Infobox software
| name = Eigen
| logo = Eigen Silly Professor 135x135.png
| developer = {{plainlist|
- Benoît Jacob
- Gaël Guennebaud
}}
| latest release version = {{wikidata|property|reference|edit|P348}}
| latest release date = {{start date and age|df=yes|paren=yes|{{wikidata|qualifier|P348|P577}}}}
| latest preview version =
| latest preview date =
| programming language = C++
| operating system = Cross-platform
| genre = Library
| license = MPL 2.0
}}
Eigen is a high-level C++ library of template headers for linear algebra, matrix and vector operations, geometrical transformations, numerical solvers and related algorithms.
Eigen is open-source software licensed under the Mozilla Public License 2.0 since version 3.1.1. Earlier versions were licensed under the GNU Lesser General Public License.{{cite web
| title = Eigen License
| url = http://eigen.tuxfamily.org/index.php?title=Main_Page#License
| publisher = tuxfamily.org
| access-date = 19 Jan 2021
}} Version 1.0 was released in Dec 2006.{{cite web|url=https://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2006/12/threads.html|title=[eigen] Release 1.0}}
Eigen is implemented using the expression templates metaprogramming technique, meaning it builds expression trees at compile time and generates custom code to evaluate these. Using expression templates and a cost model of floating point operations, the library performs its own loop unrolling and vectorization.{{cite conference |title=Eigen: A C++ linear algebra library |first=Gaël |last=Guennebaud |year=2013 |conference=Eurographics/CGLibs |url=http://downloads.tuxfamily.org/eigen/eigen_CGLibs_Giugno_Pisa_2013.pdf}} Eigen itself can provide BLAS and a subset of LAPACK interfaces.{{cite web |title=Todo - Eigen |url=http://eigen.tuxfamily.org/index.php?title=Todo |website=eigen.tuxfamily.org |quote=The eigen_blas library is complete. The eigen_lapack currently implements cholesky and lu decomposition. Contact us if you want to help.}}