Difference between revisions of "Pit Falls"

From Eigen
Jump to: navigation, search
(Header Issues (failure to compile))
Line 12: Line 12:
  
 
== Header Issues (failure to compile) ==
 
== Header Issues (failure to compile) ==
With all libraries, one must check the documentation for which header to include. The same is true with Eigen, but a little worse: with Eigen, a '''methods''' in a class may require an additional #include over what the class itself requires! For example, if you want to use the [http://eigen.tuxfamily.org/dox/classEigen_1_1MatrixBase.html#e09fde9d844e0eb8248955b3a2754272 cross]() method on a vector (it computes a cross-product) then you need to
+
With all libraries, one must check the documentation for which header to include. The same is true with Eigen, but a worse: with Eigen, a '''method''' in a class may require an additional #include over what the class itself requires! For example, if you want to use the [http://eigen.tuxfamily.org/dox/classEigen_1_1MatrixBase.html#e09fde9d844e0eb8248955b3a2754272 cross]() method on a vector (it computes a cross-product) then you need to
 
   #include<Eigen/Geometry>
 
   #include<Eigen/Geometry>
 
We try to always document this, but do tell us if we forgot an occurence.
 
We try to always document this, but do tell us if we forgot an occurence.

Revision as of 21:01, 17 September 2009

Pit Falls

Alignment Issues (runtime assertion)

Eigen does explicit vectorization, and while that is appreciated by many users, that also leads to some issues in special situations where data alignment is compromised. Indeed, C++98 doesn't have quite good enough support for explicit data alignment (that's coming in C++1x). In that case your program hits an assertion failure (that is, a "controlled crash") with a message that tells you to consult this page:

 http://eigen.tuxfamily.org/dox/UnalignedArrayAssert.html

Have a look at it and see for yourself if that's something that can cope with. It contains detailed information about how to deal with each known cause for that issue.

Now what if you don't care about vectorization and so don't want to be annoyed with these alignment issues? Then you can easily get rid of them.

Header Issues (failure to compile)

With all libraries, one must check the documentation for which header to include. The same is true with Eigen, but a worse: with Eigen, a method in a class may require an additional #include over what the class itself requires! For example, if you want to use the cross() method on a vector (it computes a cross-product) then you need to

 #include<Eigen/Geometry>

We try to always document this, but do tell us if we forgot an occurence.