mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-09-15 19:03:12 +08:00
* add typedefs for matrices/vectors with LargeBit
* add -pedantic to CXXFLAGS * cleanup intricated expressions with && and || which gave warnings because of "missing" parentheses * fix compile error in NumTraits, apparently discovered by -pedantic
This commit is contained in:
parent
ca448d2537
commit
613c49b475
@ -7,7 +7,7 @@ SET(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|||||||
|
|
||||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
IF(CMAKE_SYSTEM_NAME MATCHES Linux)
|
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_SYSTEM_NAME MATCHES Linux)
|
||||||
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
|
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
#define EIGEN_VECTORIZE
|
#define EIGEN_VECTORIZE
|
||||||
#define EIGEN_VECTORIZE_SSE
|
#define EIGEN_VECTORIZE_SSE
|
||||||
#warning "enabling vectorization"
|
|
||||||
#include <emmintrin.h>
|
#include <emmintrin.h>
|
||||||
#include <xmmintrin.h>
|
#include <xmmintrin.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -80,15 +80,23 @@ struct ei_traits<Matrix<_Scalar, _Rows, _Cols, _Flags, _MaxRows, _MaxCols> >
|
|||||||
MaxRowsAtCompileTime = _MaxRows,
|
MaxRowsAtCompileTime = _MaxRows,
|
||||||
MaxColsAtCompileTime = _MaxCols,
|
MaxColsAtCompileTime = _MaxCols,
|
||||||
Flags = (_Flags & ~VectorizableBit)
|
Flags = (_Flags & ~VectorizableBit)
|
||||||
| (( (ei_packet_traits<Scalar>::size>1) && (_Rows!=Dynamic) && (_Cols!=Dynamic)
|
| (
|
||||||
&& ((_Flags&RowMajorBit) && ((_Cols%ei_packet_traits<Scalar>::size)==0)
|
(
|
||||||
|| ((_Rows%ei_packet_traits<Scalar>::size)==0) ) ) ? VectorizableBit : 0),
|
ei_packet_traits<Scalar>::size>1
|
||||||
|
&& _Rows!=Dynamic
|
||||||
|
&& _Cols!=Dynamic
|
||||||
|
&& (
|
||||||
|
(_Flags&RowMajorBit && _Cols%ei_packet_traits<Scalar>::size==0)
|
||||||
|
|| (_Rows%ei_packet_traits<Scalar>::size==0)
|
||||||
|
)
|
||||||
|
) ? VectorizableBit : 0
|
||||||
|
),
|
||||||
CoeffReadCost = NumTraits<Scalar>::ReadCost
|
CoeffReadCost = NumTraits<Scalar>::ReadCost
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename _Scalar, int _Rows, int _Cols,
|
template<typename _Scalar, int _Rows, int _Cols,
|
||||||
unsigned int _Flags = EIGEN_DEFAULT_MATRIX_STORAGE_ORDER,
|
unsigned int _Flags = EIGEN_DEFAULT_MATRIX_FLAGS,
|
||||||
int _MaxRows = _Rows, int _MaxCols = _Cols>
|
int _MaxRows = _Rows, int _MaxCols = _Cols>
|
||||||
class Matrix : public MatrixBase<Matrix<_Scalar, _Rows, _Cols,
|
class Matrix : public MatrixBase<Matrix<_Scalar, _Rows, _Cols,
|
||||||
_Flags, _MaxRows, _MaxCols> >
|
_Flags, _MaxRows, _MaxCols> >
|
||||||
@ -328,6 +336,19 @@ EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<double>, cd)
|
|||||||
#undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
|
#undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
|
||||||
#undef EIGEN_MAKE_TYPEDEFS
|
#undef EIGEN_MAKE_TYPEDEFS
|
||||||
|
|
||||||
|
#define EIGEN_MAKE_TYPEDEFS_LARGE(Type, TypeSuffix) \
|
||||||
|
typedef Matrix<Type, Dynamic, Dynamic, EIGEN_DEFAULT_MATRIX_FLAGS | LargeBit> MatrixXL##TypeSuffix; \
|
||||||
|
typedef Matrix<Type, Dynamic, 1, EIGEN_DEFAULT_MATRIX_FLAGS | LargeBit> VectorXL##TypeSuffix; \
|
||||||
|
typedef Matrix<Type, 1, Dynamic, EIGEN_DEFAULT_MATRIX_FLAGS | LargeBit> 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<float>, cf)
|
||||||
|
EIGEN_MAKE_TYPEDEFS_LARGE(std::complex<double>, cd)
|
||||||
|
|
||||||
|
#undef EIGEN_MAKE_TYPEDEFS_LARGE
|
||||||
|
|
||||||
#define EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \
|
#define EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \
|
||||||
using Eigen::Matrix##SizeSuffix##TypeSuffix; \
|
using Eigen::Matrix##SizeSuffix##TypeSuffix; \
|
||||||
using Eigen::Vector##SizeSuffix##TypeSuffix; \
|
using Eigen::Vector##SizeSuffix##TypeSuffix; \
|
||||||
|
@ -56,7 +56,7 @@ template<> struct NumTraits<int>
|
|||||||
HasFloatingPoint = 0,
|
HasFloatingPoint = 0,
|
||||||
ReadCost = 1,
|
ReadCost = 1,
|
||||||
AddCost = 1,
|
AddCost = 1,
|
||||||
MulCost = 1,
|
MulCost = 1
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ template<> struct NumTraits<float>
|
|||||||
HasFloatingPoint = 1,
|
HasFloatingPoint = 1,
|
||||||
ReadCost = 1,
|
ReadCost = 1,
|
||||||
AddCost = 1,
|
AddCost = 1,
|
||||||
MulCost = 1,
|
MulCost = 1
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ template<> struct NumTraits<double>
|
|||||||
HasFloatingPoint = 1,
|
HasFloatingPoint = 1,
|
||||||
ReadCost = 1,
|
ReadCost = 1,
|
||||||
AddCost = 1,
|
AddCost = 1,
|
||||||
MulCost = 1,
|
MulCost = 1
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ template<typename _Real> struct NumTraits<std::complex<_Real> >
|
|||||||
HasFloatingPoint = NumTraits<Real>::HasFloatingPoint,
|
HasFloatingPoint = NumTraits<Real>::HasFloatingPoint,
|
||||||
ReadCost = 2,
|
ReadCost = 2,
|
||||||
AddCost = 2 * NumTraits<Real>::AddCost,
|
AddCost = 2 * NumTraits<Real>::AddCost,
|
||||||
MulCost = 4 * NumTraits<Real>::MulCost + 2 * NumTraits<Real>::AddCost,
|
MulCost = 4 * NumTraits<Real>::MulCost + 2 * NumTraits<Real>::AddCost
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ template<> struct NumTraits<long long int>
|
|||||||
HasFloatingPoint = 0,
|
HasFloatingPoint = 0,
|
||||||
ReadCost = 1,
|
ReadCost = 1,
|
||||||
AddCost = 1,
|
AddCost = 1,
|
||||||
MulCost = 1,
|
MulCost = 1
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ template<> struct NumTraits<long double>
|
|||||||
HasFloatingPoint = 1,
|
HasFloatingPoint = 1,
|
||||||
ReadCost = 1,
|
ReadCost = 1,
|
||||||
AddCost = 2,
|
AddCost = 2,
|
||||||
MulCost = 2,
|
MulCost = 2
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ template<> struct NumTraits<bool>
|
|||||||
HasFloatingPoint = 0,
|
HasFloatingPoint = 0,
|
||||||
ReadCost = 1,
|
ReadCost = 1,
|
||||||
AddCost = 1,
|
AddCost = 1,
|
||||||
MulCost = 1,
|
MulCost = 1
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -134,10 +134,22 @@ struct ei_traits<Product<Lhs, Rhs, EvalMode> >
|
|||||||
: (unsigned int)(LhsFlags | RhsFlags) & ~LargeBit )
|
: (unsigned int)(LhsFlags | RhsFlags) & ~LargeBit )
|
||||||
| EvalBeforeAssigningBit
|
| EvalBeforeAssigningBit
|
||||||
| (ei_product_eval_mode<Lhs, Rhs>::value == (int)CacheOptimalProduct ? EvalBeforeNestingBit : 0))
|
| (ei_product_eval_mode<Lhs, Rhs>::value == (int)CacheOptimalProduct ? EvalBeforeNestingBit : 0))
|
||||||
& (~(RowMajorBit | VectorizableBit))
|
& (
|
||||||
| (((!(Lhs::Flags & RowMajorBit)) && (Lhs::Flags & VectorizableBit)) ? VectorizableBit
|
~(RowMajorBit | VectorizableBit)
|
||||||
: ((Rhs::Flags & RowMajorBit && (Rhs::Flags & VectorizableBit)) ? (RowMajorBit | VectorizableBit)
|
| (
|
||||||
: EIGEN_DEFAULT_MATRIX_STORAGE_ORDER)),
|
(
|
||||||
|
!(Lhs::Flags & RowMajorBit) && (Lhs::Flags & VectorizableBit)
|
||||||
|
)
|
||||||
|
? VectorizableBit
|
||||||
|
: (
|
||||||
|
(
|
||||||
|
(Rhs::Flags & RowMajorBit) && (Rhs::Flags & VectorizableBit)
|
||||||
|
)
|
||||||
|
? RowMajorBit | VectorizableBit
|
||||||
|
: 0
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
CoeffReadCost
|
CoeffReadCost
|
||||||
= Lhs::ColsAtCompileTime == Dynamic
|
= Lhs::ColsAtCompileTime == Dynamic
|
||||||
? Dynamic
|
? Dynamic
|
||||||
|
@ -43,6 +43,8 @@
|
|||||||
#define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER 0
|
#define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define EIGEN_DEFAULT_MATRIX_FLAGS EIGEN_DEFAULT_MATRIX_STORAGE_ORDER
|
||||||
|
|
||||||
#define USING_PART_OF_NAMESPACE_EIGEN \
|
#define USING_PART_OF_NAMESPACE_EIGEN \
|
||||||
EIGEN_USING_MATRIX_TYPEDEFS \
|
EIGEN_USING_MATRIX_TYPEDEFS \
|
||||||
using Eigen::Matrix; \
|
using Eigen::Matrix; \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user