2010-12-27 23:07:07 +08:00
|
|
|
namespace Eigen {
|
|
|
|
|
|
|
|
/** \page TopicPreprocessorDirectives Preprocessor directives
|
|
|
|
|
2011-03-03 23:19:11 +08:00
|
|
|
You can control some aspects of Eigen by defining the preprocessor tokens using \c \#define. These macros
|
2010-12-28 00:34:58 +08:00
|
|
|
should be defined before any Eigen headers are included. Often they are best set in the project options.
|
|
|
|
|
|
|
|
This page lists the preprocesor tokens recognised by Eigen.
|
|
|
|
|
|
|
|
<b>Table of contents</b>
|
|
|
|
- \ref TopicPreprocessorDirectivesMajor
|
|
|
|
- \ref TopicPreprocessorDirectivesAssertions
|
|
|
|
- \ref TopicPreprocessorDirectivesPerformance
|
|
|
|
- \ref TopicPreprocessorDirectivesPlugins
|
|
|
|
|
|
|
|
|
|
|
|
\section TopicPreprocessorDirectivesMajor Macros with major effects
|
|
|
|
|
|
|
|
- \b EIGEN2_SUPPORT - if defined, enables the Eigen2 compatibility mode. This is meant to ease the transition
|
|
|
|
of Eigen2 to Eigen3 (see \ref Eigen2ToEigen3). Not defined by default.
|
2011-02-14 06:50:57 +08:00
|
|
|
- \b EIGEN2_SUPPORT_STAGEnn_xxx (for various values of nn and xxx) - staged migration path from Eigen2 to
|
|
|
|
Eigen3; see \ref Eigen2SupportModes.
|
2010-12-28 00:34:58 +08:00
|
|
|
- \b EIGEN_DEFAULT_TO_ROW_MAJOR - when defined, the default storage order for matrices becomes row-major
|
|
|
|
instead of column-major. Not defined by default.
|
2011-03-11 19:15:44 +08:00
|
|
|
- \b EIGEN_DEFAULT_DENSE_INDEX_TYPE - the type for column and row indices in matrices, vectors and array
|
|
|
|
(DenseBase::Index). Set to \c std::ptrdiff_t by default.
|
2010-12-28 00:34:58 +08:00
|
|
|
- \b EIGEN_DEFAULT_IO_FORMAT - the IOFormat to use when printing a matrix if no #IOFormat is specified.
|
|
|
|
Defaults to the #IOFormat constructed by the default constructor IOFormat().
|
|
|
|
- \b EIGEN_INITIALIZE_MATRICES_BY_ZERO - if defined, all entries of newly constructed matrices and arrays are
|
|
|
|
initializes to zero, as are new entries in matrices and arrays after resizing. Not defined by default.
|
|
|
|
|
|
|
|
|
|
|
|
\section TopicPreprocessorDirectivesAssertions Assertions
|
|
|
|
|
|
|
|
The Eigen library contains many assertions to guard against programming errors, both at compile time and at
|
|
|
|
run time. However, these assertions do cost time and can thus be turned off.
|
|
|
|
|
|
|
|
- \b EIGEN_NO_DEBUG - disables Eigen's assertions if defined. Not defined by default, unless the
|
|
|
|
\c NDEBUG macro is defined (this is a standard C++ macro which disables all asserts).
|
|
|
|
- \b EIGEN_NO_STATIC_ASSERT - if defined, compile-time static assertions are replaced by runtime assertions;
|
|
|
|
this saves compilation time. Not defined by default.
|
|
|
|
- \b EIGEN_INTERNAL_DEBUGGING - if defined, enables assertions in Eigen's internal routines. This is useful
|
|
|
|
for debugging Eigen itself. Not defined by default.
|
|
|
|
|
|
|
|
|
|
|
|
\section TopicPreprocessorDirectivesPerformance Alignment, vectorization and performance tweaking
|
|
|
|
|
2011-03-11 19:15:44 +08:00
|
|
|
- \b EIGEN_DONT_ALIGN - disables alignment completely. Eigen will not try to align its objects and does not
|
|
|
|
expect that any objects passed to it are aligned. This will turn off vectorization. Not defined by default.
|
2010-12-28 00:34:58 +08:00
|
|
|
- \b EIGEN_DONT_ALIGN_STATICALLY - disables alignment of arrays on the stack. Not defined by default, unless
|
|
|
|
\c EIGEN_DONT_ALIGN is defined.
|
|
|
|
- \b EIGEN_DONT_VECTORIZE - disables explicit vectorization when defined. Not defined by default, unless
|
|
|
|
alignment is disabled by Eigen's platform test or the user defining \c EIGEN_DONT_ALIGN.
|
|
|
|
- \b EIGEN_FAST_MATH - enables some optimizations which might affect the accuracy of the result. The only
|
|
|
|
optimization this currently includes is single precision sin() and cos() in the present of SSE
|
|
|
|
vectorization. Defined by default.
|
|
|
|
- \b EIGEN_UNROLLING_LIMIT - defines the size of a loop to enable meta unrolling. Set it to zero to disable
|
|
|
|
unrolling. The size of a loop here is expressed in Eigen's own notion of "number of FLOPS", it does not
|
|
|
|
correspond to the number of iterations or the number of instructions. The default is value 100.
|
|
|
|
|
|
|
|
|
|
|
|
\section TopicPreprocessorDirectivesPlugins Plugins
|
|
|
|
|
|
|
|
It is possible to add new methods to many fundamental classes in Eigen by writing a plugin. As explained in
|
|
|
|
the section \ref ExtendingMatrixBase, the plugin is specified by defining a \c EIGEN_xxx_PLUGIN macro. The
|
|
|
|
following macros are supported; none of them are defined by default.
|
|
|
|
|
|
|
|
- \b EIGEN_ARRAY_PLUGIN - filename of plugin for extending the Array class.
|
2011-02-14 06:50:57 +08:00
|
|
|
- \b EIGEN_ARRAYBASE_PLUGIN - filename of plugin for extending the ArrayBase class.
|
2010-12-28 00:34:58 +08:00
|
|
|
- \b EIGEN_CWISE_PLUGIN - filename of plugin for extending the Cwise class.
|
|
|
|
- \b EIGEN_DENSEBASE_PLUGIN - filename of plugin for extending the DenseBase class.
|
2011-02-14 06:50:57 +08:00
|
|
|
- \b EIGEN_DYNAMICSPARSEMATRIX_PLUGIN - filename of plugin for extending the DynamicSparseMatrix class.
|
2010-12-28 00:34:58 +08:00
|
|
|
- \b EIGEN_MATRIX_PLUGIN - filename of plugin for extending the Matrix class.
|
2011-02-14 06:50:57 +08:00
|
|
|
- \b EIGEN_MATRIXBASE_PLUGIN - filename of plugin for extending the MatrixBase class.
|
2010-12-30 03:12:39 +08:00
|
|
|
- \b EIGEN_PLAINOBJECTBASE_PLUGIN - filename of plugin for extending the PlainObjectBase class.
|
2010-12-28 00:34:58 +08:00
|
|
|
- \b EIGEN_QUATERNIONBASE_PLUGIN - filename of plugin for extending the QuaternionBase class.
|
2011-02-14 06:50:57 +08:00
|
|
|
- \b EIGEN_SPARSEMATRIX_PLUGIN - filename of plugin for extending the SparseMatrix class.
|
|
|
|
- \b EIGEN_SPARSEMATRIXBASE_PLUGIN - filename of plugin for extending the SparseMatrixBase class.
|
|
|
|
- \b EIGEN_SPARSEVECTOR_PLUGIN - filename of plugin for extending the SparseVector class.
|
2010-12-28 00:34:58 +08:00
|
|
|
- \b EIGEN_TRANSFORM_PLUGIN - filename of plugin for extending the Transform class.
|
|
|
|
- \b EIGEN_FUNCTORS_PLUGIN - filename of plugin for adding new functors and specializations of functor_traits.
|
2010-12-27 23:07:07 +08:00
|
|
|
|
2011-02-14 06:50:57 +08:00
|
|
|
|
2010-12-27 23:07:07 +08:00
|
|
|
*/
|
|
|
|
|
2011-02-14 06:50:57 +08:00
|
|
|
}
|