From 4432cf8ca327d6af820d0e410ebcfcf14611a6c6 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Thu, 8 Jan 2009 10:36:54 +0000 Subject: bugfix in sum --- Eigen/src/Core/Sum.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'Eigen/src/Core/Sum.h') diff --git a/Eigen/src/Core/Sum.h b/Eigen/src/Core/Sum.h index 33aa60956..ab9cdad1f 100644 --- a/Eigen/src/Core/Sum.h +++ b/Eigen/src/Core/Sum.h @@ -231,11 +231,18 @@ template struct ei_sum_impl { typedef typename Derived::Scalar Scalar; + typedef typename ei_packet_traits::type PacketScalar; + enum { + PacketSize = ei_packet_traits::size, + Size = Derived::SizeAtCompileTime, + VectorizationSize = (Size / PacketSize) * PacketSize + }; static Scalar run(const Derived& mat) { - return ei_predux( - ei_sum_vec_unroller::run(mat) - ); + Scalar res = ei_predux(ei_sum_vec_unroller::run(mat)); + if (VectorizationSize != Size) + res += ei_sum_novec_unroller::run(mat); + return res; } }; -- cgit v1.2.3