diff --git a/Eigen/src/Array/PartialRedux.h b/Eigen/src/Array/PartialRedux.h index 265f206aa..3c511d5b9 100644 --- a/Eigen/src/Array/PartialRedux.h +++ b/Eigen/src/Array/PartialRedux.h @@ -58,9 +58,7 @@ struct ei_traits > ColsAtCompileTime = Direction==Horizontal ? 1 : MatrixType::ColsAtCompileTime, MaxRowsAtCompileTime = Direction==Vertical ? 1 : MatrixType::MaxRowsAtCompileTime, MaxColsAtCompileTime = Direction==Horizontal ? 1 : MatrixType::MaxColsAtCompileTime, - Flags = ((int(RowsAtCompileTime) == Dynamic || int(ColsAtCompileTime) == Dynamic) - ? (unsigned int)_MatrixTypeNested::Flags - : (unsigned int)_MatrixTypeNested::Flags & ~LargeBit) & HereditaryBits, + Flags = (unsigned int)_MatrixTypeNested::Flags & HereditaryBits, TraversalSize = Direction==Vertical ? RowsAtCompileTime : ColsAtCompileTime }; typedef typename MemberOp::template Cost CostOpType; diff --git a/Eigen/src/Core/Block.h b/Eigen/src/Core/Block.h index 917175bfd..11583d042 100644 --- a/Eigen/src/Core/Block.h +++ b/Eigen/src/Core/Block.h @@ -72,18 +72,13 @@ struct ei_traits= ei_packet_traits::size)) ? PacketAccessBit : 0, FlagsLinearAccessBit = (RowsAtCompileTime == 1 || ColsAtCompileTime == 1) ? LinearAccessBit : 0, - Flags = (MatrixType::Flags & (HereditaryBits | MaskPacketAccessBit | DirectAccessBit) & MaskLargeBit) - | FlagsLinearAccessBit, + Flags = (MatrixType::Flags & (HereditaryBits | MaskPacketAccessBit | DirectAccessBit)) | FlagsLinearAccessBit, CoeffReadCost = MatrixType::CoeffReadCost, PacketAccess = _PacketAccess }; diff --git a/Eigen/src/Core/DiagonalCoeffs.h b/Eigen/src/Core/DiagonalCoeffs.h index 2560d73bc..9e2641039 100644 --- a/Eigen/src/Core/DiagonalCoeffs.h +++ b/Eigen/src/Core/DiagonalCoeffs.h @@ -54,10 +54,7 @@ struct ei_traits > : EIGEN_ENUM_MIN(MatrixType::MaxRowsAtCompileTime, MatrixType::MaxColsAtCompileTime), MaxColsAtCompileTime = 1, - Flags = (RowsAtCompileTime == Dynamic && ColsAtCompileTime == Dynamic - ? (unsigned int)_MatrixTypeNested::Flags - : (unsigned int)_MatrixTypeNested::Flags &~ LargeBit) - & (HereditaryBits | LinearAccessBit), + Flags = (unsigned int)_MatrixTypeNested::Flags & (HereditaryBits | LinearAccessBit), CoeffReadCost = _MatrixTypeNested::CoeffReadCost }; }; diff --git a/Eigen/src/Core/DiagonalProduct.h b/Eigen/src/Core/DiagonalProduct.h index 1a2338487..4ee3c46c3 100644 --- a/Eigen/src/Core/DiagonalProduct.h +++ b/Eigen/src/Core/DiagonalProduct.h @@ -51,8 +51,7 @@ struct ei_traits > CanVectorizeLhs = (!LhsIsDiagonal) && (!(LhsFlags & RowMajorBit)) && (LhsFlags & PacketAccessBit) && (RowsAtCompileTime % ei_packet_traits::size == 0), - RemovedBits = ~(((RhsFlags & RowMajorBit) && (!CanVectorizeLhs) ? 0 : RowMajorBit) - | ((RowsAtCompileTime == Dynamic || ColsAtCompileTime == Dynamic) ? 0 : LargeBit)), + RemovedBits = ~((RhsFlags & RowMajorBit) && (!CanVectorizeLhs) ? 0 : RowMajorBit), Flags = ((unsigned int)(LhsFlags | RhsFlags) & HereditaryBits & RemovedBits) | (CanVectorizeLhs || CanVectorizeRhs ? PacketAccessBit : 0), diff --git a/Eigen/src/Core/Map.h b/Eigen/src/Core/Map.h index 73f920bb9..7dfaac273 100644 --- a/Eigen/src/Core/Map.h +++ b/Eigen/src/Core/Map.h @@ -108,8 +108,8 @@ template class Map * \sa Matrix(const Scalar *, int), Matrix(const Scalar *, int, int), * Matrix::map(const Scalar *) */ -template -inline Matrix<_Scalar, _Rows, _Cols, _MaxRows, _MaxCols, _Flags> +template +inline Matrix<_Scalar, _Rows, _Cols, _StorageOrder, _MaxRows, _MaxCols> ::Matrix(const Scalar *data) { *this = Map(data); diff --git a/Eigen/src/Core/Matrix.h b/Eigen/src/Core/Matrix.h index d992e279a..e5d06d21c 100644 --- a/Eigen/src/Core/Matrix.h +++ b/Eigen/src/Core/Matrix.h @@ -35,6 +35,7 @@ * specify that the number of rows is dynamic, i.e. is not fixed at compile-time. * \param _Cols the number of columns at compile-time. Use the special value \a Dynamic to * specify that the number of columns is dynamic, i.e. is not fixed at compile-time. + * \param _StorageOrder can be either RowMajor or ColMajor. The default is ColMajor. * \param _MaxRows the maximum number of rows at compile-time. By default this is equal to \a _Rows. * The most common exception is when you don't know the exact number of rows, but know that * it is smaller than some given value. Then you can set \a _MaxRows to that value, and set @@ -43,7 +44,6 @@ * The most common exception is when you don't know the exact number of cols, but know that * it is smaller than some given value. Then you can set \a _MaxCols to that value, and set * _Cols to \a Dynamic. - * \param _Flags allows to control certain features such as storage order. See the \ref flags "list of flags". * * This single class template covers all kinds of matrix and vectors that Eigen can handle. * All matrix and vector types are just typedefs to specializations of this class template. @@ -80,8 +80,8 @@ * * Note that most of the API is in the base class MatrixBase. */ -template -struct ei_traits > +template +struct ei_traits > { typedef _Scalar Scalar; enum { @@ -89,18 +89,14 @@ struct ei_traits > ColsAtCompileTime = _Cols, MaxRowsAtCompileTime = _MaxRows, MaxColsAtCompileTime = _MaxCols, - Flags = ei_corrected_matrix_flags< - _Scalar, - _Rows, _Cols, _MaxRows, _MaxCols, - _Flags - >::ret, + Flags = ei_compute_matrix_flags<_Scalar, _Rows, _Cols, _StorageOrder, _MaxRows, _MaxCols>::ret, CoeffReadCost = NumTraits::ReadCost, SupportedAccessPatterns = RandomAccessPattern }; }; -template -class Matrix : public MatrixBase > +template +class Matrix : public MatrixBase > { public: EIGEN_GENERIC_PUBLIC_INTERFACE(Matrix) @@ -413,17 +409,6 @@ 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) \ @@ -436,7 +421,6 @@ EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 2) \ EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 3) \ EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 4) \ EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, X) \ -EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, XL) #define EIGEN_USING_MATRIX_TYPEDEFS \ EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(i) \ diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h index 8c15a3852..e31a89dcc 100644 --- a/Eigen/src/Core/Product.h +++ b/Eigen/src/Core/Product.h @@ -148,8 +148,7 @@ struct ei_traits > EvalToRowMajor = RhsRowMajor && (ProductMode==(int)CacheFriendlyProduct ? LhsRowMajor : (!CanVectorizeLhs)), - RemovedBits = ~((EvalToRowMajor ? 0 : RowMajorBit) - | ((RowsAtCompileTime == Dynamic || ColsAtCompileTime == Dynamic) ? 0 : LargeBit)), + RemovedBits = ~(EvalToRowMajor ? 0 : RowMajorBit), Flags = ((unsigned int)(LhsFlags | RhsFlags) & HereditaryBits & RemovedBits) | EvalBeforeAssigningBit @@ -709,26 +708,15 @@ inline Derived& MatrixBase::lazyAssign(const Product class ei_product_eval_to_column_major +template struct ei_product_eval_to_column_major { - typedef typename ei_traits::Scalar _Scalar; - enum { - _Rows = ei_traits::RowsAtCompileTime, - _Cols = ei_traits::ColsAtCompileTime, - _MaxRows = ei_traits::MaxRowsAtCompileTime, - _MaxCols = ei_traits::MaxColsAtCompileTime, - _Flags = ei_traits::Flags - }; - - public: - typedef Matrix<_Scalar, - _Rows, _Cols, _MaxRows, _MaxCols, - ei_corrected_matrix_flags< - _Scalar, - _Rows, _Cols, _MaxRows, _MaxCols, - _Flags - >::ret & ~RowMajorBit - > type; + typedef Matrix::Scalar, + ei_traits::RowsAtCompileTime, + ei_traits::ColsAtCompileTime, + ColMajor, + ei_traits::MaxRowsAtCompileTime, + ei_traits::MaxColsAtCompileTime + > type; }; template struct ei_product_copy_rhs diff --git a/Eigen/src/Core/util/Constants.h b/Eigen/src/Core/util/Constants.h index 2885a41fc..3be6aba92 100644 --- a/Eigen/src/Core/util/Constants.h +++ b/Eigen/src/Core/util/Constants.h @@ -154,18 +154,10 @@ const unsigned int LowerTriangularBit = 0x800; * means the expression includes sparse matrices and the sparse path has to be taken. */ const unsigned int SparseBit = 0x1000; -/** \ingroup flags - * - * currently unused. Means the matrix probably has a very big size. - * Could eventually be used as a hint to determine which algorithms - * to use. */ -const unsigned int LargeBit = 0x2000; - // list of flags that are inherited by default const unsigned int HereditaryBits = RowMajorBit | EvalBeforeNestingBit | EvalBeforeAssigningBit - | LargeBit | SparseBit; // Possible values for the Mode parameter of part() and of extract() diff --git a/Eigen/src/Core/util/ForwardDeclarations.h b/Eigen/src/Core/util/ForwardDeclarations.h index 459b2bd82..0ad72b6f6 100644 --- a/Eigen/src/Core/util/ForwardDeclarations.h +++ b/Eigen/src/Core/util/ForwardDeclarations.h @@ -27,17 +27,9 @@ template struct ei_traits; template struct NumTraits; -template class ei_corrected_matrix_flags; -template::ret -> -class Matrix; +template class Matrix; template class Flagged; template class NestByValue; diff --git a/Eigen/src/Core/util/Macros.h b/Eigen/src/Core/util/Macros.h index a4530f353..29ac98b1f 100644 --- a/Eigen/src/Core/util/Macros.h +++ b/Eigen/src/Core/util/Macros.h @@ -37,8 +37,6 @@ #define EIGEN_UNROLLING_LIMIT 100 #endif -#define EIGEN_DEFAULT_MATRIX_FLAGS 0 - /** Define a hint size when dealing with large matrices and L2 cache friendlyness * More precisely, its square value represents the amount of bytes which can be assumed to stay in L2 cache. */ @@ -49,7 +47,18 @@ #define USING_PART_OF_NAMESPACE_EIGEN \ EIGEN_USING_MATRIX_TYPEDEFS \ using Eigen::Matrix; \ -using Eigen::MatrixBase; +using Eigen::MatrixBase; \ +using Eigen::ei_random; \ +using Eigen::ei_real; \ +using Eigen::ei_imag; \ +using Eigen::ei_conj; \ +using Eigen::ei_abs; \ +using Eigen::ei_abs2; \ +using Eigen::ei_sqrt; \ +using Eigen::ei_exp; \ +using Eigen::ei_log; \ +using Eigen::ei_sin; \ +using Eigen::ei_cos; #ifdef NDEBUG # ifndef EIGEN_NO_DEBUG diff --git a/Eigen/src/Core/util/Meta.h b/Eigen/src/Core/util/Meta.h index 7e4e0fb82..a937819fb 100644 --- a/Eigen/src/Core/util/Meta.h +++ b/Eigen/src/Core/util/Meta.h @@ -154,29 +154,25 @@ template struct ei_unpacket_traits }; -template -class ei_corrected_matrix_flags +template +class ei_compute_matrix_flags { - enum { row_major_bit = (Rows != 1 && Cols != 1) // if this is not a vector, - // then the storage order really matters, - // so let us strictly honor the user's choice. - ? SuggestedFlags&RowMajorBit - : Cols > 1 ? RowMajorBit : 0, - inner_max_size = row_major_bit ? MaxCols : MaxRows, - is_big = inner_max_size == Dynamic, - linear_size = Cols * Rows, - packet_access_bit - = ei_packet_traits::size > 1 - && (is_big || linear_size%ei_packet_traits::size==0) - ? PacketAccessBit : 0, - aligned_bit = packet_access_bit - && (is_big || linear_size%ei_packet_traits::size==0) ? AlignedBit : 0 + enum { + row_major_bit = (Rows != 1 && Cols != 1) // if this is not a vector, + // then the storage order really matters, + // so let us strictly honor the user's choice. + ? StorageOrder + : Cols > 1 ? RowMajorBit : 0, + inner_max_size = row_major_bit ? MaxCols : MaxRows, + is_big = inner_max_size == Dynamic, + is_packet_size_multiple = (Cols * Rows)%ei_packet_traits::size==0, + packet_access_bit = ei_packet_traits::size > 1 + && (is_big || is_packet_size_multiple) ? PacketAccessBit : 0, + aligned_bit = packet_access_bit && (is_big || is_packet_size_multiple) ? AlignedBit : 0 }; public: - enum { ret = (SuggestedFlags & ~(EvalBeforeNestingBit | EvalBeforeAssigningBit | PacketAccessBit | RowMajorBit)) - | LinearAccessBit | DirectAccessBit | packet_access_bit | row_major_bit | aligned_bit - }; + enum { ret = LinearAccessBit | DirectAccessBit | packet_access_bit | row_major_bit | aligned_bit }; }; template struct ei_size_at_compile_time @@ -186,25 +182,15 @@ template struct ei_size_at_compile_time template::Flags&SparseBit> class ei_eval; -template class ei_eval +template struct ei_eval { - typedef typename ei_traits::Scalar _Scalar; - enum {_Rows = ei_traits::RowsAtCompileTime, - _Cols = ei_traits::ColsAtCompileTime, - _MaxRows = ei_traits::MaxRowsAtCompileTime, - _MaxCols = ei_traits::MaxColsAtCompileTime, - _Flags = ei_traits::Flags - }; - - public: - typedef Matrix<_Scalar, - _Rows, _Cols, _MaxRows, _MaxCols, - ei_corrected_matrix_flags< - _Scalar, - _Rows, _Cols, _MaxRows, _MaxCols, - _Flags - >::ret - > type; + typedef Matrix::Scalar, + ei_traits::RowsAtCompileTime, + ei_traits::ColsAtCompileTime, + ei_traits::Flags&RowMajorBit ? RowMajor : ColMajor, + ei_traits::MaxRowsAtCompileTime, + ei_traits::MaxColsAtCompileTime + > type; }; template struct ei_unref { typedef T type; }; @@ -226,7 +212,7 @@ template::type> str { enum { CostEval = (n+1) * int(NumTraits::Scalar>::ReadCost), - CostNoEval = (n-1) * int(ei_traits::CoeffReadCost) + CostNoEval = (n-1) * int(ei_traits::CoeffReadCost) }; typedef typename ei_meta_if< ei_must_nest_by_value::ret, @@ -250,9 +236,9 @@ template struct ei_are_flags_consistent * TODO: could be a good idea to define a big ReturnType struct ?? */ template struct BlockReturnType { - typedef Block::RowsAtCompileTime == 1 ? 1 : RowsOrSize), - (ei_traits::ColsAtCompileTime == 1 ? 1 : RowsOrSize)> SubVectorType; - typedef Block Type; + typedef Block::RowsAtCompileTime == 1 ? 1 : RowsOrSize), + (ei_traits::ColsAtCompileTime == 1 ? 1 : RowsOrSize)> SubVectorType; + typedef Block Type; }; #endif // EIGEN_META_H diff --git a/Eigen/src/Geometry/AngleAxis.h b/Eigen/src/Geometry/AngleAxis.h index cd18bfdec..105af68f5 100644 --- a/Eigen/src/Geometry/AngleAxis.h +++ b/Eigen/src/Geometry/AngleAxis.h @@ -190,8 +190,8 @@ AngleAxis::toRotationMatrix(void) const * * \sa Matrix(const Quaternion&) */ -template -Matrix<_Scalar, _Rows, _Cols, _MaxRows, _MaxCols, _Flags>::Matrix(const AngleAxis& aa) +template +Matrix<_Scalar, _Rows, _Cols, _Storage, _MaxRows, _MaxCols>::Matrix(const AngleAxis& aa) { EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Matrix,3,3); *this = aa.toRotationMatrix(); @@ -201,9 +201,9 @@ Matrix<_Scalar, _Rows, _Cols, _MaxRows, _MaxCols, _Flags>::Matrix(const AngleAxi * * Set a 3x3 rotation matrix from the angle-axis \a aa */ -template -Matrix<_Scalar, _Rows, _Cols, _MaxRows, _MaxCols, _Flags>& -Matrix<_Scalar, _Rows, _Cols, _MaxRows, _MaxCols, _Flags>::operator=(const AngleAxis& aa) +template +Matrix<_Scalar, _Rows, _Cols, _Storage, _MaxRows, _MaxCols>& +Matrix<_Scalar, _Rows, _Cols, _Storage, _MaxRows, _MaxCols>::operator=(const AngleAxis& aa) { EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Matrix,3,3); return *this = aa.toRotationMatrix(); diff --git a/Eigen/src/Geometry/Quaternion.h b/Eigen/src/Geometry/Quaternion.h index ba753fa43..56cb87493 100644 --- a/Eigen/src/Geometry/Quaternion.h +++ b/Eigen/src/Geometry/Quaternion.h @@ -430,8 +430,8 @@ struct ei_quaternion_assign_impl * * \sa Matrix(const AngleAxis&) */ -template -Matrix<_Scalar, _Rows, _Cols, _MaxRows, _MaxCols, _Flags>::Matrix(const Quaternion& q) +template +Matrix<_Scalar, _Rows, _Cols, _Storage, _MaxRows, _MaxCols>::Matrix(const Quaternion& q) { EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Matrix,3,3); *this = q.toRotationMatrix(); @@ -441,9 +441,9 @@ Matrix<_Scalar, _Rows, _Cols, _MaxRows, _MaxCols, _Flags>::Matrix(const Quaterni * * Set a 3x3 rotation matrix from the quaternion \a q */ -template -Matrix<_Scalar, _Rows, _Cols, _MaxRows, _MaxCols, _Flags>& -Matrix<_Scalar, _Rows, _Cols, _MaxRows, _MaxCols, _Flags>::operator=(const Quaternion& q) +template +Matrix<_Scalar, _Rows, _Cols, _Storage, _MaxRows, _MaxCols>& +Matrix<_Scalar, _Rows, _Cols, _Storage, _MaxRows, _MaxCols>::operator=(const Quaternion& q) { EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Matrix,3,3); return *this = q.toRotationMatrix(); diff --git a/Eigen/src/LU/LU.h b/Eigen/src/LU/LU.h index af385df29..6e844e196 100644 --- a/Eigen/src/LU/LU.h +++ b/Eigen/src/LU/LU.h @@ -72,7 +72,8 @@ template class LU }; typedef Matrix KernelReturnType; + MatrixType::Flags&RowMajorBit, + MatrixType::MaxColsAtCompileTime, MaxSmallDimAtCompileTime> KernelReturnType; /** Constructor. * @@ -151,6 +152,7 @@ template class LU */ void computeKernel(Matrix::MaxSmallDimAtCompileTime > *result) const; @@ -372,6 +374,7 @@ typename ei_traits::Scalar LU::determinant() const template void LU::computeKernel(Matrix::MaxSmallDimAtCompileTime > *result) const @@ -396,7 +399,8 @@ void LU::computeKernel(Matrix + Matrix y(-m_lu.corner(TopRight, m_rank, dimker)); m_lu.corner(TopLeft, m_rank, m_rank) @@ -414,8 +418,9 @@ const typename LU::KernelReturnType LU::kernel() const { Matrix::MaxSmallDimAtCompileTime> result(m_lu.cols(), dimensionOfKernel()); + MatrixType::Flags&RowMajorBit, + MatrixType::MaxColsAtCompileTime, + LU::MaxSmallDimAtCompileTime> result(m_lu.cols(), dimensionOfKernel()); computeKernel(&result); return result; } @@ -446,6 +451,7 @@ bool LU::solve( // Step 2 Matrix l(rows, rows); l.setZero(); @@ -464,6 +470,7 @@ bool LU::solve( return false; } Matrix d(c.corner(TopLeft, m_rank, c.cols())); m_lu.corner(TopLeft, m_rank, m_rank) diff --git a/Eigen/src/Sparse/SparseProduct.h b/Eigen/src/Sparse/SparseProduct.h index 6dff64f30..a4d9a4590 100644 --- a/Eigen/src/Sparse/SparseProduct.h +++ b/Eigen/src/Sparse/SparseProduct.h @@ -77,8 +77,7 @@ struct ei_traits > EvalToRowMajor = (RhsFlags & LhsFlags & RowMajorBit), - RemovedBits = ~((EvalToRowMajor ? 0 : RowMajorBit) - | ((RowsAtCompileTime == Dynamic || ColsAtCompileTime == Dynamic) ? 0 : LargeBit)), + RemovedBits = ~(EvalToRowMajor ? 0 : RowMajorBit), Flags = (int(LhsFlags | RhsFlags) & HereditaryBits & RemovedBits) | EvalBeforeAssigningBit diff --git a/test/commainitializer.cpp b/test/commainitializer.cpp index 257ecc21f..a93a57d8f 100644 --- a/test/commainitializer.cpp +++ b/test/commainitializer.cpp @@ -33,7 +33,7 @@ void test_commainitializer() VERIFY_RAISES_ASSERT( (m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ); double data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; - Matrix3d ref = Map >(data); + Matrix3d ref = Map >(data); m3 = Matrix3d::Random(); m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9; diff --git a/test/product.h b/test/product.h index 374994576..f1a16cf1f 100644 --- a/test/product.h +++ b/test/product.h @@ -46,8 +46,7 @@ template void product(const MatrixType& m) typedef Matrix RowSquareMatrixType; typedef Matrix ColSquareMatrixType; typedef Matrix OtherMajorMatrixType; + MatrixType::Flags&RowMajorBit> OtherMajorMatrixType; int rows = m.rows(); int cols = m.cols(); diff --git a/test/product_large.cpp b/test/product_large.cpp index 904cf5a0b..b85fd0954 100644 --- a/test/product_large.cpp +++ b/test/product_large.cpp @@ -31,10 +31,6 @@ void test_product_large() CALL_SUBTEST( product(MatrixXd(ei_random(1,320), ei_random(1,320))) ); CALL_SUBTEST( product(MatrixXi(ei_random(1,320), ei_random(1,320))) ); CALL_SUBTEST( product(MatrixXcf(ei_random(1,50), ei_random(1,50))) ); - #ifndef EIGEN_DEFAULT_TO_ROW_MAJOR - CALL_SUBTEST( product(Matrix(ei_random(1,320), ei_random(1,320))) ); - #else - CALL_SUBTEST( product(Matrix(ei_random(1,320), ei_random(1,320))) ); - #endif + CALL_SUBTEST( product(Matrix(ei_random(1,320), ei_random(1,320))) ); } }