From 49fc1e3e84d036c43ffbac0128588d47c5a11f36 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Fri, 27 Mar 2009 14:41:46 +0000 Subject: add vectorization of sqrt for float --- Eigen/src/Array/Functors.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'Eigen/src/Array/Functors.h') diff --git a/Eigen/src/Array/Functors.h b/Eigen/src/Array/Functors.h index 9759ebf2a..f5607ba90 100644 --- a/Eigen/src/Array/Functors.h +++ b/Eigen/src/Array/Functors.h @@ -58,10 +58,16 @@ struct ei_functor_traits > */ template struct ei_scalar_sqrt_op EIGEN_EMPTY_STRUCT { inline const Scalar operator() (const Scalar& a) const { return ei_sqrt(a); } + typedef typename ei_packet_traits::type Packet; + inline Packet packetOp(const Packet& a) const { return ei_psqrt(a); } }; template struct ei_functor_traits > -{ enum { Cost = 5 * NumTraits::MulCost, PacketAccess = false }; }; +{ enum { + Cost = 5 * NumTraits::MulCost, + PacketAccess = ei_packet_traits::HasSqrt + }; +}; /** \internal * -- cgit v1.2.3