diff --git a/CMakeLists.txt b/CMakeLists.txt index 90b969972..9a7ea46c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ SET(CMAKE_INCLUDE_CURRENT_DIR ON) IF(CMAKE_COMPILER_IS_GNUCXX) IF(CMAKE_SYSTEM_NAME MATCHES Linux) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -fno-exceptions -fno-check-new -fno-common -fstrict-aliasing") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -fno-exceptions -fno-check-new -fno-common -fstrict-aliasing") ENDIF(CMAKE_SYSTEM_NAME MATCHES Linux) ENDIF(CMAKE_COMPILER_IS_GNUCXX) diff --git a/Eigen/Core b/Eigen/Core index 9f1210558..3b5f1fdb1 100644 --- a/Eigen/Core +++ b/Eigen/Core @@ -4,7 +4,6 @@ #ifdef __SSE2__ #define EIGEN_VECTORIZE #define EIGEN_VECTORIZE_SSE -#warning "enabling vectorization" #include #include #endif diff --git a/Eigen/src/Core/Matrix.h b/Eigen/src/Core/Matrix.h index da898f031..7c2c5afba 100644 --- a/Eigen/src/Core/Matrix.h +++ b/Eigen/src/Core/Matrix.h @@ -80,15 +80,23 @@ struct ei_traits > MaxRowsAtCompileTime = _MaxRows, MaxColsAtCompileTime = _MaxCols, Flags = (_Flags & ~VectorizableBit) - | (( (ei_packet_traits::size>1) && (_Rows!=Dynamic) && (_Cols!=Dynamic) - && ((_Flags&RowMajorBit) && ((_Cols%ei_packet_traits::size)==0) - || ((_Rows%ei_packet_traits::size)==0) ) ) ? VectorizableBit : 0), + | ( + ( + ei_packet_traits::size>1 + && _Rows!=Dynamic + && _Cols!=Dynamic + && ( + (_Flags&RowMajorBit && _Cols%ei_packet_traits::size==0) + || (_Rows%ei_packet_traits::size==0) + ) + ) ? VectorizableBit : 0 + ), CoeffReadCost = NumTraits::ReadCost }; }; template class Matrix : public MatrixBase > @@ -328,6 +336,19 @@ EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex, cd) #undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES #undef EIGEN_MAKE_TYPEDEFS +#define EIGEN_MAKE_TYPEDEFS_LARGE(Type, TypeSuffix) \ +typedef Matrix MatrixXL##TypeSuffix; \ +typedef Matrix VectorXL##TypeSuffix; \ +typedef Matrix RowVectorXL##TypeSuffix; + +EIGEN_MAKE_TYPEDEFS_LARGE(int, i) +EIGEN_MAKE_TYPEDEFS_LARGE(float, f) +EIGEN_MAKE_TYPEDEFS_LARGE(double, d) +EIGEN_MAKE_TYPEDEFS_LARGE(std::complex, cf) +EIGEN_MAKE_TYPEDEFS_LARGE(std::complex, cd) + +#undef EIGEN_MAKE_TYPEDEFS_LARGE + #define EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \ using Eigen::Matrix##SizeSuffix##TypeSuffix; \ using Eigen::Vector##SizeSuffix##TypeSuffix; \ diff --git a/Eigen/src/Core/NumTraits.h b/Eigen/src/Core/NumTraits.h index 137f38ee2..b1ac341db 100644 --- a/Eigen/src/Core/NumTraits.h +++ b/Eigen/src/Core/NumTraits.h @@ -56,7 +56,7 @@ template<> struct NumTraits HasFloatingPoint = 0, ReadCost = 1, AddCost = 1, - MulCost = 1, + MulCost = 1 }; }; @@ -69,7 +69,7 @@ template<> struct NumTraits HasFloatingPoint = 1, ReadCost = 1, AddCost = 1, - MulCost = 1, + MulCost = 1 }; }; @@ -82,7 +82,7 @@ template<> struct NumTraits HasFloatingPoint = 1, ReadCost = 1, AddCost = 1, - MulCost = 1, + MulCost = 1 }; }; @@ -95,7 +95,7 @@ template struct NumTraits > HasFloatingPoint = NumTraits::HasFloatingPoint, ReadCost = 2, AddCost = 2 * NumTraits::AddCost, - MulCost = 4 * NumTraits::MulCost + 2 * NumTraits::AddCost, + MulCost = 4 * NumTraits::MulCost + 2 * NumTraits::AddCost }; }; @@ -108,7 +108,7 @@ template<> struct NumTraits HasFloatingPoint = 0, ReadCost = 1, AddCost = 1, - MulCost = 1, + MulCost = 1 }; }; @@ -121,7 +121,7 @@ template<> struct NumTraits HasFloatingPoint = 1, ReadCost = 1, AddCost = 2, - MulCost = 2, + MulCost = 2 }; }; @@ -134,7 +134,7 @@ template<> struct NumTraits HasFloatingPoint = 0, ReadCost = 1, AddCost = 1, - MulCost = 1, + MulCost = 1 }; }; diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h index 5d39f0c2b..4dacb9269 100644 --- a/Eigen/src/Core/Product.h +++ b/Eigen/src/Core/Product.h @@ -134,10 +134,22 @@ struct ei_traits > : (unsigned int)(LhsFlags | RhsFlags) & ~LargeBit ) | EvalBeforeAssigningBit | (ei_product_eval_mode::value == (int)CacheOptimalProduct ? EvalBeforeNestingBit : 0)) - & (~(RowMajorBit | VectorizableBit)) - | (((!(Lhs::Flags & RowMajorBit)) && (Lhs::Flags & VectorizableBit)) ? VectorizableBit - : ((Rhs::Flags & RowMajorBit && (Rhs::Flags & VectorizableBit)) ? (RowMajorBit | VectorizableBit) - : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER)), + & ( + ~(RowMajorBit | VectorizableBit) + | ( + ( + !(Lhs::Flags & RowMajorBit) && (Lhs::Flags & VectorizableBit) + ) + ? VectorizableBit + : ( + ( + (Rhs::Flags & RowMajorBit) && (Rhs::Flags & VectorizableBit) + ) + ? RowMajorBit | VectorizableBit + : 0 + ) + ) + ), CoeffReadCost = Lhs::ColsAtCompileTime == Dynamic ? Dynamic diff --git a/Eigen/src/Core/util/Macros.h b/Eigen/src/Core/util/Macros.h index 84a2a0eef..e7d7d3968 100644 --- a/Eigen/src/Core/util/Macros.h +++ b/Eigen/src/Core/util/Macros.h @@ -43,6 +43,8 @@ #define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER 0 #endif +#define EIGEN_DEFAULT_MATRIX_FLAGS EIGEN_DEFAULT_MATRIX_STORAGE_ORDER + #define USING_PART_OF_NAMESPACE_EIGEN \ EIGEN_USING_MATRIX_TYPEDEFS \ using Eigen::Matrix; \