Eigen

Eigen project is a lightweight C++ template library for vector and matrix math, a.k.a. linear algebra.
Download

Eigen Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • Benoit Jacob
  • Publisher web site:

Eigen Tags


Eigen Description

Eigen project is a lightweight C++ template library for vector and matrix math, a.k.a. linear algebra. Eigen project is a lightweight C++ template library for vector and matrix math, a.k.a. linear algebra.Unlike most other linear algebra libraries, Eigen focuses on the simple mathematical needs of applications: games and other OpenGL apps, spreadsheets and other office apps, etc. Eigen is dedicated to providing optimal speed with GCC.· Its fixed-size classes are specially optimized for small sizes up to 4, although it is theoretically possible to specialize them to any size. They never cause dynamic memory applications and the simple operations on them are as fast as is possible at least for sizes up to 4 (see below). · Its dynamic-size classes are more flexible and suitable for larger sizes.Here are some key features of "Eigen":· No dependency. Only relies on the C++ Standard Library, and only does so for a few things. · As a consequence: very good portability. · Very good performance (tested with GCC, should apply to other compilers as well): · The fixed-size classes are optimal in the sense that they're just plain C arrays with methods manipulating them. They never cause dynamic memory allocations. Checked with valgrind. · The assembly code generated by GCC has been carefully checked to make sure that loop unrolling and function inlining work as expected with "g++ -O2" and "g++ -O3". · For the loops that GCC fails to unroll (mostly nested loops), we provide hand-unrolled versions for sizes up to 4. · There is no "virtual" keyword in Eigen. · Eigen never trades performance for syntactic sugar. When some method introduces a significant language overhead (e.g. returns an object by value), we provide an alternative method doing the same thing faster but without the syntactic sugar. · Provides easy-to-use classes for solving systems of linear equations. · Provides easy-to-use functions for linear regression analysis. · Can perform LU decompositions and use them to invert matrices, compute rank, kernel, etc. · Integrates nicely with OpenGL: · Provides functions and classes for projective geometry. · Stores matrices in column-dominant order, hence matrices can be directly passed between OpenGL and Eigen. · Uses an OpenGL-like typedef naming scheme, for instance Vector3f for vectors of floats of size 3. · Robust: · Only uses algorithms that are guaranteed to work in all cases. For example, the LU decomposition is done with complete pivoting, which means that it works for all square matrices, even singular ones. · Covered by extensive unit-tests. · Thread-safe, though that's only as a consequence of staying simple and not trying to do advanced stuff like buffer sharing. · Floating-point-correct. Eigen has a clear, simple and sound policy with respect to the inherent problems of IEEE754 floating-point arithmetic. · Fully supports std::complex for matrices and vectors over the complex numbers. · Is a pure template library and consists only of header files. Thus, using Eigen will only add a build-time dependency to your project. · Uses standard asserts, controlled as usual by NDEBUG. To achieve optimal performance, turn them off by defining NDEBUG, e.g.What's New in This Release:· This release supports fixed-size classes that are optimized for small sizes of up to four dimensions for 3D geometry and OpenGL.· Dynamic classes are more flexible and suitable for larger data.


Eigen Related Software