aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2015-08-07 17:41:39 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2015-08-07 17:41:39 +0200
commit60e4260d0d114f030f2425c4c5d681bc1afb3219 (patch)
tree6f8a0d7b41d6a229628bc4a3179f652d4dcdd67c
parente68c7b8368f49f77429ef02e7a99080a3f3de6fb (diff)
Some functors were not generic wrt packet-type.
-rw-r--r--Eigen/src/Core/functors/BinaryFunctors.h10
-rw-r--r--Eigen/src/Core/functors/UnaryFunctors.h32
2 files changed, 21 insertions, 21 deletions
diff --git a/Eigen/src/Core/functors/BinaryFunctors.h b/Eigen/src/Core/functors/BinaryFunctors.h
index 5dee6247e..cc0e80a33 100644
--- a/Eigen/src/Core/functors/BinaryFunctors.h
+++ b/Eigen/src/Core/functors/BinaryFunctors.h
@@ -341,7 +341,6 @@ template<> struct functor_traits<scalar_boolean_or_op> {
*/
template<typename Scalar>
struct scalar_multiple_op {
- typedef typename packet_traits<Scalar>::type Packet;
// FIXME default copy constructors seems bugged with std::complex<>
EIGEN_DEVICE_FUNC
EIGEN_STRONG_INLINE scalar_multiple_op(const scalar_multiple_op& other) : m_other(other.m_other) { }
@@ -349,6 +348,7 @@ struct scalar_multiple_op {
EIGEN_STRONG_INLINE scalar_multiple_op(const Scalar& other) : m_other(other) { }
EIGEN_DEVICE_FUNC
EIGEN_STRONG_INLINE Scalar operator() (const Scalar& a) const { return a * m_other; }
+ template <typename Packet>
EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const
{ return internal::pmul(a, pset1<Packet>(m_other)); }
typename add_const_on_value_type<typename NumTraits<Scalar>::Nested>::type m_other;
@@ -379,11 +379,11 @@ struct functor_traits<scalar_multiple2_op<Scalar1,Scalar2> >
*/
template<typename Scalar>
struct scalar_quotient1_op {
- typedef typename packet_traits<Scalar>::type Packet;
// FIXME default copy constructors seems bugged with std::complex<>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE scalar_quotient1_op(const scalar_quotient1_op& other) : m_other(other.m_other) { }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE scalar_quotient1_op(const Scalar& other) : m_other(other) {}
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator() (const Scalar& a) const { return a / m_other; }
+ template <typename Packet>
EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const
{ return internal::pdiv(a, pset1<Packet>(m_other)); }
typename add_const_on_value_type<typename NumTraits<Scalar>::Nested>::type m_other;
@@ -421,11 +421,11 @@ template<typename LhsScalar,typename RhsScalar> struct functor_is_product_like<s
/* If you wonder why doing the pset1() in packetOp() is an optimization check scalar_multiple_op */
template<typename Scalar>
struct scalar_add_op {
- typedef typename packet_traits<Scalar>::type Packet;
// FIXME default copy constructors seems bugged with std::complex<>
EIGEN_DEVICE_FUNC inline scalar_add_op(const scalar_add_op& other) : m_other(other.m_other) { }
EIGEN_DEVICE_FUNC inline scalar_add_op(const Scalar& other) : m_other(other) { }
EIGEN_DEVICE_FUNC inline Scalar operator() (const Scalar& a) const { return a + m_other; }
+ template <typename Packet>
inline const Packet packetOp(const Packet& a) const
{ return internal::padd(a, pset1<Packet>(m_other)); }
const Scalar m_other;
@@ -440,10 +440,10 @@ struct functor_traits<scalar_add_op<Scalar> >
*/
template<typename Scalar>
struct scalar_sub_op {
- typedef typename packet_traits<Scalar>::type Packet;
inline scalar_sub_op(const scalar_sub_op& other) : m_other(other.m_other) { }
inline scalar_sub_op(const Scalar& other) : m_other(other) { }
inline Scalar operator() (const Scalar& a) const { return a - m_other; }
+ template <typename Packet>
inline const Packet packetOp(const Packet& a) const
{ return internal::psub(a, pset1<Packet>(m_other)); }
const Scalar m_other;
@@ -458,10 +458,10 @@ struct functor_traits<scalar_sub_op<Scalar> >
*/
template<typename Scalar>
struct scalar_rsub_op {
- typedef typename packet_traits<Scalar>::type Packet;
inline scalar_rsub_op(const scalar_rsub_op& other) : m_other(other.m_other) { }
inline scalar_rsub_op(const Scalar& other) : m_other(other) { }
inline Scalar operator() (const Scalar& a) const { return m_other - a; }
+ template <typename Packet>
inline const Packet packetOp(const Packet& a) const
{ return internal::psub(pset1<Packet>(m_other), a); }
const Scalar m_other;
diff --git a/Eigen/src/Core/functors/UnaryFunctors.h b/Eigen/src/Core/functors/UnaryFunctors.h
index 9b4f49c3c..537406b60 100644
--- a/Eigen/src/Core/functors/UnaryFunctors.h
+++ b/Eigen/src/Core/functors/UnaryFunctors.h
@@ -231,7 +231,7 @@ struct functor_traits<scalar_imag_ref_op<Scalar> >
template<typename Scalar> struct scalar_exp_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_exp_op)
EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { using std::exp; return exp(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::pexp(a); }
};
template<typename Scalar>
@@ -247,7 +247,7 @@ struct functor_traits<scalar_exp_op<Scalar> >
template<typename Scalar> struct scalar_log_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_log_op)
EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { using std::log; return log(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::plog(a); }
};
template<typename Scalar>
@@ -263,7 +263,7 @@ struct functor_traits<scalar_log_op<Scalar> >
template<typename Scalar> struct scalar_log10_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_log10_op)
EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { using std::log10; return log10(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::plog10(a); }
};
template<typename Scalar>
@@ -277,7 +277,7 @@ struct functor_traits<scalar_log10_op<Scalar> >
template<typename Scalar> struct scalar_sqrt_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_sqrt_op)
EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { using std::sqrt; return sqrt(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::psqrt(a); }
};
template<typename Scalar>
@@ -295,7 +295,7 @@ struct functor_traits<scalar_sqrt_op<Scalar> >
template<typename Scalar> struct scalar_rsqrt_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_rsqrt_op)
EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { using std::sqrt; return Scalar(1)/sqrt(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::prsqrt(a); }
};
@@ -314,7 +314,7 @@ struct functor_traits<scalar_rsqrt_op<Scalar> >
template<typename Scalar> struct scalar_cos_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_cos_op)
EIGEN_DEVICE_FUNC inline Scalar operator() (const Scalar& a) const { using std::cos; return cos(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::pcos(a); }
};
template<typename Scalar>
@@ -333,7 +333,7 @@ struct functor_traits<scalar_cos_op<Scalar> >
template<typename Scalar> struct scalar_sin_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_sin_op)
EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { using std::sin; return sin(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::psin(a); }
};
template<typename Scalar>
@@ -353,7 +353,7 @@ struct functor_traits<scalar_sin_op<Scalar> >
template<typename Scalar> struct scalar_tan_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_tan_op)
EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { using std::tan; return tan(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::ptan(a); }
};
template<typename Scalar>
@@ -372,7 +372,7 @@ struct functor_traits<scalar_tan_op<Scalar> >
template<typename Scalar> struct scalar_acos_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_acos_op)
EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { using std::acos; return acos(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::pacos(a); }
};
template<typename Scalar>
@@ -391,7 +391,7 @@ struct functor_traits<scalar_acos_op<Scalar> >
template<typename Scalar> struct scalar_asin_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_asin_op)
EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { using std::asin; return asin(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::pasin(a); }
};
template<typename Scalar>
@@ -410,7 +410,7 @@ struct functor_traits<scalar_asin_op<Scalar> >
template<typename Scalar> struct scalar_atan_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_atan_op)
inline const Scalar operator() (const Scalar& a) const { using std::atan; return atan(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::patan(a); }
};
template<typename Scalar>
@@ -429,7 +429,7 @@ struct functor_traits<scalar_atan_op<Scalar> >
template<typename Scalar> struct scalar_tanh_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_tanh_op)
inline const Scalar operator() (const Scalar& a) const { using std::tanh; return tanh(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::ptanh(a); }
};
template<typename Scalar>
@@ -448,7 +448,7 @@ struct functor_traits<scalar_tanh_op<Scalar> >
template<typename Scalar> struct scalar_sinh_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_sinh_op)
inline const Scalar operator() (const Scalar& a) const { using std::sinh; return sinh(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::psinh(a); }
};
template<typename Scalar>
@@ -467,7 +467,7 @@ struct functor_traits<scalar_sinh_op<Scalar> >
template<typename Scalar> struct scalar_cosh_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_cosh_op)
inline const Scalar operator() (const Scalar& a) const { using std::cosh; return cosh(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::pcosh(a); }
};
template<typename Scalar>
@@ -534,7 +534,7 @@ struct functor_traits<scalar_cube_op<Scalar> >
template<typename Scalar> struct scalar_round_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_round_op)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a) const { return numext::round(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::pround(a); }
};
template<typename Scalar>
@@ -553,7 +553,7 @@ struct functor_traits<scalar_round_op<Scalar> >
template<typename Scalar> struct scalar_floor_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_floor_op)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a) const { return numext::floor(a); }
- typedef typename packet_traits<Scalar>::type Packet;
+ template <typename Packet>
inline Packet packetOp(const Packet& a) const { return internal::pfloor(a); }
};
template<typename Scalar>