summaryrefslogtreecommitdiff
path: root/math/eigen3/DESCR
blob: b6dbd3900c7b6de4d02133c83a9c085ae6632b9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Eigen 3 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!