aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Redux.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-02-04 18:51:29 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-02-04 18:51:29 +0100
commit52167be4c8a2ea72213ebbd9ce828eeb3dcff5f3 (patch)
tree8abf52af72b327d5cb594126470ef67614f11a4a /Eigen/src/Core/Redux.h
parent73eb0e633c506e86f20fa231269b5cd81ebd083c (diff)
make sure the correct diagoanl() function is called in trace()
Diffstat (limited to 'Eigen/src/Core/Redux.h')
-rw-r--r--Eigen/src/Core/Redux.h12
1 files 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<Func>::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<Func, Derived, Start, 0>
};
/*** vectorization ***/
-
+
template<typename Func, typename Derived, int Start, int Length>
struct ei_redux_vec_unroller
{
@@ -223,7 +223,7 @@ struct ei_redux_impl<Func, Derived, LinearVectorizedTraversal, NoUnrolling>
for(int index = alignedStart + packetSize; index < alignedEnd; index += packetSize)
packet_res = func.packetOp(packet_res, mat.template packet<alignment>(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<Func, Derived, SliceVectorizedTraversal, NoUnrolling>
for(int i=0; i<packetedInnerSize; i+=int(packetSize))
packet_res = func.packetOp(packet_res, mat.template packet<Unaligned>
(isRowMajor?j:i, isRowMajor?i:j));
-
+
res = func.predux(packet_res);
for(int j=0; j<outerSize; ++j)
for(int i=packetedInnerSize; i<innerSize; ++i)
@@ -382,7 +382,7 @@ template<typename Derived>
EIGEN_STRONG_INLINE typename ei_traits<Derived>::Scalar
MatrixBase<Derived>::trace() const
{
- return diagonal().sum();
+ return derived().diagonal().sum();
}
#endif // EIGEN_REDUX_H