mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
* classify and sort the doxygen "related pages"
by tweaking the filename and adding 2 categories:
Troubleshooting and Advanced
* use the EXCLUDE_SYMBOLS to clean the class list
(insteaded of a homemade bash script)
* remove the broken "exemple list"
* re-structure the unsupported directory as mentionned in the ML and
integrate the doc as follow:
- snippets of the unsupported directory are directly imported from the
main snippets/CMakefile.txt (no need to duplicate code)
- add a top level "Unsupported modules" group
- unsupported modules have to defined their own sub group and nest it
using \ingroup Unsupported_modules
- then a pair of //@{ //@} will put everything in the submodule
- this is just a proposal !
This commit is contained in:
@@ -1,77 +0,0 @@
|
||||
namespace Eigen {
|
||||
|
||||
/** \page UnalignedArrayAssert Explanation of the assertion on unaligned arrays
|
||||
|
||||
Hello! You are seeing this webpage because your program terminated on an assertion failure like this one:
|
||||
<pre>
|
||||
my_program: path/to/eigen2/Eigen/src/Core/MatrixStorage.h:44:
|
||||
Eigen::ei_matrix_array<T, Size, MatrixOptions, Align>::ei_matrix_array()
|
||||
[with T = double, int Size = 2, int MatrixOptions = 2, bool Align = true]:
|
||||
Assertion `(reinterpret_cast<size_t>(array) & 0xf) == 0 && "this assertion
|
||||
is explained here: http://eigen.tuxfamily.org/dox/UnalignedArrayAssert.html
|
||||
**** READ THIS WEB PAGE !!! ****"' failed.
|
||||
</pre>
|
||||
|
||||
There are 3 known causes for this issue. Please read on to understand them and learn how to fix them.
|
||||
|
||||
\b Table \b of \b contents
|
||||
- \ref c1
|
||||
- \ref c2
|
||||
- \ref c3
|
||||
- \ref explanation
|
||||
|
||||
\section c1 Cause 1: Structures having Eigen objects as members
|
||||
|
||||
If you have code like this,
|
||||
|
||||
\code
|
||||
class Foo
|
||||
{
|
||||
//...
|
||||
Eigen::Vector2d v;
|
||||
//...
|
||||
};
|
||||
//...
|
||||
Foo *foo = new Foo;
|
||||
\endcode
|
||||
|
||||
then you need to read this separate page: \ref StructHavingEigenMembers "Structures Having Eigen Members".
|
||||
|
||||
Note that here, Eigen::Vector2d is only used as an example, more generally the issue arises for all \ref FixedSizeVectorizable "fixed-size vectorizable Eigen types".
|
||||
|
||||
\section c2 Cause 2: STL Containers
|
||||
|
||||
If you use STL Containers such as std::vector, std::map, ..., with Eigen objects, like this,
|
||||
|
||||
\code
|
||||
std::vector<Eigen::Matrix2f> my_vector;
|
||||
std::map<int, Eigen::Matrix2f> my_map;
|
||||
\endcode
|
||||
|
||||
then you need to read this separate page: \ref StlContainers "Using STL Containers with Eigen".
|
||||
|
||||
Note that here, Eigen::Matrix2f is only used as an example, more generally the issue arises for all \ref FixedSizeVectorizable "fixed-size vectorizable Eigen types".
|
||||
|
||||
\section c3 Cause 3: Passing Eigen objects by value
|
||||
|
||||
If some function in your code is getting an Eigen object passed by value, like this,
|
||||
|
||||
\code
|
||||
void func(Eigen::Vector4d v);
|
||||
\endcode
|
||||
|
||||
then you need to read this separate page: \ref PassingByValue "Passing Eigen objects by value to functions".
|
||||
|
||||
Note that here, Eigen::Vector4d is only used as an example, more generally the issue arises for all \ref FixedSizeVectorizable "fixed-size vectorizable Eigen types".
|
||||
|
||||
\section explanation General explanation of this assertion
|
||||
|
||||
\ref FixedSizeVectorizable "fixed-size vectorizable Eigen objects" must absolutely be created at 16-byte-aligned locations, otherwise SIMD instructions adressing them will crash.
|
||||
|
||||
Eigen normally takes care of these alignment issues for you, by setting an alignment attribute on them and by overloading their "operator new".
|
||||
|
||||
However there are a few corner cases where these alignment settings get overridden: they are the possible causes for this assertion.
|
||||
|
||||
*/
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user