From 52167be4c8a2ea72213ebbd9ce828eeb3dcff5f3 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Thu, 4 Feb 2010 18:51:29 +0100 Subject: [PATCH] make sure the correct diagoanl() function is called in trace() --- Eigen/src/Core/Redux.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Eigen/src/Core/Redux.h b/Eigen/src/Core/Redux.h index 99fec2528..42287dab9 100644 --- a/Eigen/src/Core/Redux.h +++ b/Eigen/src/Core/Redux.h @@ -49,7 +49,7 @@ private: MightVectorize = (int(Derived::Flags)&ActualPacketAccessBit) && (ei_functor_traits::PacketAccess), MayLinearVectorize = MightVectorize && (int(Derived::Flags)&LinearAccessBit), - MaySliceVectorize = MightVectorize && int(InnerMaxSize)>=3*PacketSize + MaySliceVectorize = MightVectorize && int(InnerMaxSize)>=3*PacketSize }; public: @@ -58,7 +58,7 @@ public: : int(MaySliceVectorize) ? int(SliceVectorizedTraversal) : int(DefaultTraversal) }; - + private: enum { Cost = Derived::SizeAtCompileTime * Derived::CoeffReadCost @@ -123,7 +123,7 @@ struct ei_redux_novec_unroller }; /*** vectorization ***/ - + template struct ei_redux_vec_unroller { @@ -223,7 +223,7 @@ struct ei_redux_impl for(int index = alignedStart + packetSize; index < alignedEnd; index += packetSize) packet_res = func.packetOp(packet_res, mat.template packet(index)); res = func.predux(packet_res); - + for(int index = 0; index < alignedStart; ++index) res = func(res,mat.coeff(index)); @@ -265,7 +265,7 @@ struct ei_redux_impl for(int i=0; i (isRowMajor?j:i, isRowMajor?i:j)); - + res = func.predux(packet_res); for(int j=0; j EIGEN_STRONG_INLINE typename ei_traits::Scalar MatrixBase::trace() const { - return diagonal().sum(); + return derived().diagonal().sum(); } #endif // EIGEN_REDUX_H