Eigen 2 is a C++ template library for linear algebra: vectors, matrices, and related algorithms. It is: * Versatile. Eigen handles, without code duplication, and in a completely integrated way: o both fixed-size and dynamic-size matrices and vectors. o both dense and sparse (the latter is still experimental) matrices and vectors. o both plain matrices/vectors and abstract expressions. o both column-major (the default) and row-major matrix storage. o both basic matrix/vector manipulation and many more advanced, specialized modules providing algorithms for linear algebra, geometry, quaternions, or advanced array manipulation. * Fast. o Expression templates allow to intelligently remove temporaries and enable lazy evaluation, when that is appropriate -- Eigen takes care of this automatically and handles aliasing too in most cases. o Explicit vectorization is performed for the SSE (2 and later) and AltiVec instruction sets, with graceful fallback to non-vectorized code. Expression templates allow to perform these optimizations globally for whole expressions. o With fixed-size objects, dynamic memory allocation is avoided, and the loops are unrolled when that makes sense. o For large matrices, special attention is paid to cache-friendliness. ...and more!