diff --git a/Eigen/src/Core/CacheFriendlyProduct.h b/Eigen/src/Core/CacheFriendlyProduct.h index a54f1743f..c3efbacaf 100644 --- a/Eigen/src/Core/CacheFriendlyProduct.h +++ b/Eigen/src/Core/CacheFriendlyProduct.h @@ -406,7 +406,6 @@ EIGEN_DONT_INLINE static void ei_cache_friendly_product_colmajor_times_vector( const int peels = 2; const int PacketAlignedMask = PacketSize-1; const int PeelAlignedMask = PacketSize*peels-1; - const bool Vectorized = sizeof(Packet) != sizeof(Scalar); // How many coeffs of the result do we have to skip to be aligned. // Here we assume data are at least aligned on the base scalar type that is mandatory anyway. @@ -571,7 +570,6 @@ EIGEN_DONT_INLINE static void ei_cache_friendly_product_rowmajor_times_vector( // const int peels = 2; const int PacketAlignedMask = PacketSize-1; // const int PeelAlignedMask = PacketSize*peels-1; - const bool Vectorized = sizeof(Packet) != sizeof(Scalar); const int size = rhsSize; // How many coeffs of the result do we have to skip to be aligned. diff --git a/Eigen/src/Core/Map.h b/Eigen/src/Core/Map.h index 13664eebc..e6f8cdcbd 100644 --- a/Eigen/src/Core/Map.h +++ b/Eigen/src/Core/Map.h @@ -127,8 +127,7 @@ template class Map inline Map(const Scalar* data) : m_data(data), m_rows(RowsAtCompileTime), m_cols(ColsAtCompileTime) { - ei_assert(RowsAtCompileTime != Dynamic && ColsAtCompileTime != Dynamic); - ei_assert(RowsAtCompileTime > 0 && ColsAtCompileTime > 0); + EIGEN_STATIC_ASSERT_FIXED_SIZE(MatrixType) } inline Map(const Scalar* data, int size) @@ -136,11 +135,9 @@ template class Map m_rows(RowsAtCompileTime == Dynamic ? size : RowsAtCompileTime), m_cols(ColsAtCompileTime == Dynamic ? size : ColsAtCompileTime) { + EIGEN_STATIC_ASSERT_VECTOR_ONLY(MatrixType) ei_assert(size > 0); - ei_assert((RowsAtCompileTime == 1 - && (ColsAtCompileTime == Dynamic || ColsAtCompileTime == size)) - || (ColsAtCompileTime == 1 - && (RowsAtCompileTime == Dynamic || RowsAtCompileTime == size))); + ei_assert(SizeAtCompileTime == Dynamic || SizeAtCompileTime == size); } inline Map(const Scalar* data, int rows, int cols) diff --git a/test/inverse.cpp b/test/inverse.cpp index 5614c987d..9c7c6524c 100644 --- a/test/inverse.cpp +++ b/test/inverse.cpp @@ -2,6 +2,7 @@ // for linear algebra. Eigen itself is part of the KDE project. // // Copyright (C) 2008 Gael Guennebaud +// Copyright (C) 2008 Benoit Jacob // // Eigen is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -53,15 +54,19 @@ template void inverse(const MatrixType& m) VERIFY_IS_APPROX(identity, m1 * m1.inverse() ); VERIFY_IS_APPROX(m1, m1.inverse().inverse() ); + + // since for the general case we implement separately row-major and col-major, test that + VERIFY_IS_APPROX(m1.transpose().inverse(), m1.inverse().transpose()); } void test_inverse() { - for(int i = 0; i < 1; i++) { + for(int i = 0; i < g_repeat; i++) { CALL_SUBTEST( inverse(Matrix()) ); CALL_SUBTEST( inverse(Matrix2d()) ); CALL_SUBTEST( inverse(Matrix3f()) ); CALL_SUBTEST( inverse(Matrix4f()) ); + CALL_SUBTEST( inverse(MatrixXf(8,8)) ); CALL_SUBTEST( inverse(MatrixXcd(7,7)) ); } }