diff --git a/Eigen/Core b/Eigen/Core index ac00f9354..9fc73ce70 100644 --- a/Eigen/Core +++ b/Eigen/Core @@ -1,7 +1,45 @@ #ifndef EIGEN_CORE_H #define EIGEN_CORE_H -#include "CoreDeclarations" +#ifdef _MSC_VER +#pragma warning( disable : 4181 4244 ) +#endif + +#ifdef __GNUC__ +#define EIGEN_GNUC_AT_LEAST(x,y) ((__GNUC__>=x && __GNUC_MINOR__>=y) || __GNUC__>x) +#else +#define EIGEN_GNUC_AT_LEAST(x,y) 0 +#endif + +#ifndef EIGEN_DONT_VECTORIZE + #if (defined __SSE2__) && ( (!defined __GNUC__) || EIGEN_GNUC_AT_LEAST(4,2) ) + #define EIGEN_VECTORIZE + #define EIGEN_VECTORIZE_SSE + #include + #include + #ifdef __SSE3__ + #include + #endif + #ifdef __SSSE3__ + #include + #endif + #elif (defined __ALTIVEC__) + #define EIGEN_VECTORIZE + #define EIGEN_VECTORIZE_ALTIVEC + #include + // We _need_ to #undef all these ugly tokens defined in + // => use __vector instead of vector + #undef bool + #undef vector + #undef pixel + #endif +#endif + +#include +#include +#include +#include +#include #include #include #include @@ -24,6 +62,12 @@ namespace Eigen { * which gives access to matrix and vector types as well as coefficient accessor operators. */ +#include "src/Core/util/Macros.h" +#include "src/Core/util/Constants.h" +#include "src/Core/util/ForwardDeclarations.h" +#include "src/Core/util/Meta.h" +#include "src/Core/util/XprHelper.h" +#include "src/Core/util/StaticAssert.h" #include "src/Core/util/Memory.h" #include "src/Core/NumTraits.h" diff --git a/Eigen/CoreDeclarations b/Eigen/CoreDeclarations deleted file mode 100644 index 098cef4ea..000000000 --- a/Eigen/CoreDeclarations +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef EIGEN_CORE_DECLARATIONS_H -#define EIGEN_CORE_DECLARATIONS_H - -#ifdef _MSC_VER -#pragma warning( disable : 4181 4244 ) -#endif - -#ifdef __GNUC__ -#define EIGEN_GNUC_AT_LEAST(x,y) ((__GNUC__>=x && __GNUC_MINOR__>=y) || __GNUC__>x) -#else -#define EIGEN_GNUC_AT_LEAST(x,y) 0 -#endif - -#ifndef EIGEN_DONT_VECTORIZE - #if (defined __SSE2__) && ( (!defined __GNUC__) || EIGEN_GNUC_AT_LEAST(4,2) ) - #define EIGEN_VECTORIZE - #define EIGEN_VECTORIZE_SSE - #include - #include - #ifdef __SSE3__ - #include - #endif - #ifdef __SSSE3__ - #include - #endif - #elif (defined __ALTIVEC__) - #define EIGEN_VECTORIZE - #define EIGEN_VECTORIZE_ALTIVEC - #include - // We _need_ to #undef all these ugly tokens defined in - // => use __vector instead of vector - #undef bool - #undef vector - #undef pixel - #endif -#endif - -#include -#include -#include -#include -#include - -namespace Eigen { - -#include "src/Core/util/Macros.h" -#include "src/Core/util/Constants.h" -#include "src/Core/util/ForwardDeclarations.h" -#include "src/Core/util/Meta.h" -#include "src/Core/util/XprHelper.h" -#include "src/Core/util/StaticAssert.h" - -} // namespace Eigen - -#endif // EIGEN_CORE_DECLARATIONS_H diff --git a/Eigen/src/Core/Functors.h b/Eigen/src/Core/Functors.h index f0bc1fd4f..4295aa4da 100644 --- a/Eigen/src/Core/Functors.h +++ b/Eigen/src/Core/Functors.h @@ -247,13 +247,13 @@ struct ei_functor_traits > * * \sa class CwiseUnaryOp, MatrixBase::operator*, MatrixBase::operator/ */ -/* NOTE why doing the ei_pset1() *is* an optimization ? +/* NOTE why doing the ei_pset1() in packetOp *is* an optimization ? * indeed it seems better to declare m_other as a PacketScalar and do the ei_pset1() once * in the constructor. However, in practice: * - GCC does not like m_other as a PacketScalar and generate a load every time it needs it * - one the other hand GCC is able to moves the ei_pset1() away the loop :) * - simpler code ;) - * (ICC performs well in both cases) + * (ICC and gcc 4.4 seems to perform well in both cases, the issue is visible with y = a*x + b*y) */ template struct ei_scalar_multiple_op { diff --git a/Eigen/src/Geometry/Rotation.h b/Eigen/src/Geometry/Rotation.h index a7127d634..9ce6e71ca 100644 --- a/Eigen/src/Geometry/Rotation.h +++ b/Eigen/src/Geometry/Rotation.h @@ -175,6 +175,13 @@ public: { return m_angle * (1-t) + t * other; } }; +/** \ingroup GeometryModule + * single precision 2D rotation type */ +typedef Rotation2D Rotation2Df; +/** \ingroup GeometryModule + * double precision 2D rotation type */ +typedef Rotation2D Rotation2Dd; + /** Set \c *this from a 2x2 rotation matrix \a mat. * In other words, this function extract the rotation angle * from the rotation matrix. diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 5045598ba..bcee2591e 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -768,14 +768,16 @@ HTML_FILE_EXTENSION = .html # each generated HTML page. If it is left blank doxygen will generate a # standard header. -HTML_HEADER = ${CMAKE_BINARY_DIR}/doc/eigendoxy_header.html +# ${CMAKE_BINARY_DIR}/doc/eigendoxy_header.html +HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. # the footer has not been customized yet, so let's use the default one -#HTML_FOOTER = ${CMAKE_BINARY_DIR}/doc/eigendoxy_footer.html +# ${CMAKE_BINARY_DIR}/doc/eigendoxy_footer.html +HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to @@ -784,7 +786,8 @@ HTML_HEADER = ${CMAKE_BINARY_DIR}/doc/eigendoxy_header.html # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! -HTML_STYLESHEET = ${CMAKE_SOURCE_DIR}/doc/eigendoxy.css +# ${CMAKE_SOURCE_DIR}/doc/eigendoxy.css +HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to