Eigen is a C++ software library designed for vector and matrix mathematical operations commonly referred to as linear algebra. It is a lightweight template library.
Furthermore, Eigen operates with optimal speed using GCC, even with its fixed-size classes. These classes are impeccably optimized for small sizes, up to 4, but they can theoretically specialize to any size. More importantly, they never cause dynamic memory applications, and even the simplest operations on them are as fast as possible for size up to 4.
Eigen's dynamic-size classes bring flexibility and adaptability, which make them suitable for larger sizes. The library also boasts a host of key features, including no dependencies, very good portability, and excellent performance, particularly with GCC.
In addition, Eigen uses an optimal approach with its fixed-size classes, as they merely constitute plain C arrays with methods to manipulate them, making them faster and more efficient. The assembly code produced by GCC has also been carefully checked and optimized to guarantee that loop unrolling and function inlining work as expected with "g++ -O2" and "g++ -O3". Where necessary, the library provides hand-unrolled versions for loops that GCC fails to unroll.
Eigen's classes provide easy-to-use functions for solving linear systems of equations, linear regression analysis, and LU decompositions. Its integration with OpenGL is particularly noteworthy as it provides essential functions and features for projective geometry, stores matrices in column-dominant order, uses an OpenGL-like typedef naming scheme, and makes its usage more robust and safe.
Eigen is a robust library, which ensures that it only uses algorithms that are guaranteed to work in all cases. It is covered by extensive unit-tests, making it an ideal choice for developers who value security and reliability. It is also thread-safe, and its usability is not affected even with simple coding.
In addition, Eigen is floating-point-correct, making optimum use of IEEE754 floating-point arithmetic. It fully supports std::complex for matrices and vectors over complex numbers, and it is a pure template library consisting only of header files, which adds only a build-time dependency to your project.
Eigen's latest release features fixed-size classes that have been optimized for small sizes of up to four dimensions for 3D geometry and OpenGL. Dynamic classes, on the other hand, are more flexible and suitable for larger data. In summary, the Eigen project is an immensely useful and essential tool for anyone interested in fast and efficient vector and matrix mathematics.
Version 1.0.5: N/A