Annotation of pkgsrc/math/eigen3/DESCR, Revision 1.3
1.1 markd 1: Eigen 3 is a C++ template library for linear algebra: vectors, matrices, and
2: related algorithms. It is:
3: * Versatile. Eigen handles, without code duplication, and in a completely
4: integrated way:
5: o both fixed-size and dynamic-size matrices and vectors.
6: o both dense and sparse (the latter is still experimental) matrices and
8: o both plain matrices/vectors and abstract expressions.
9: o both column-major (the default) and row-major matrix storage.
10: o both basic matrix/vector manipulation and many more advanced, specialized
11: modules providing algorithms for linear algebra, geometry, quaternions,
12: or advanced array manipulation.
13: * Fast.
14: o Expression templates allow to intelligently remove temporaries and enable
15: lazy evaluation, when that is appropriate -- Eigen takes care of this
16: automatically and handles aliasing too in most cases.
17: o Explicit vectorization is performed for the SSE (2 and later) and AltiVec
18: instruction sets, with graceful fallback to non-vectorized code.
19: Expression templates allow to perform these optimizations globally for
20: whole expressions.
21: o With fixed-size objects, dynamic memory allocation is avoided, and the
22: loops are unrolled when that makes sense.
23: o For large matrices, special attention is paid to cache-friendliness.
1.3 ! asau 24: * Elegant. The API is extremely clean and expressive, thanks to expression
! 25: templates. Implementing an algorithm on top of Eigen feels like just copying
! 26: pseudocode. You can use complex expressions and still rely on Eigen to
! 27: produce optimized code: there is no need for you to manually decompose
! 28: expressions into small steps.
! 29: * Compiler-friendy. Eigen has very reasonable compilation times at least with
! 30: GCC, compared to other C++ libraries based on expression templates and heavy
! 31: metaprogramming. Eigen is also standard C++ and supports various compilers.