aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Eigen/src/Core/functors/UnaryFunctors.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/Eigen/src/Core/functors/UnaryFunctors.h b/Eigen/src/Core/functors/UnaryFunctors.h
index 03f167ac9..fb5fddb76 100644
--- a/Eigen/src/Core/functors/UnaryFunctors.h
+++ b/Eigen/src/Core/functors/UnaryFunctors.h
@@ -905,9 +905,11 @@ struct scalar_logistic_op {
}
};
template <typename T>
-struct functor_traits<scalar_logistic_op<T> > {
+struct functor_traits<scalar_logistic_op<T>> {
enum {
- Cost = NumTraits<T>::AddCost * 2 + NumTraits<T>::MulCost * 6,
+ Cost = NumTraits<T>::AddCost * 2 + NumTraits<T>::MulCost * 6 +
+ scalar_div_cost<T, packet_traits<T>::HasDiv>::value +
+ functor_traits<scalar_exp_op<T>>::Cost,
PacketAccess = packet_traits<T>::HasAdd && packet_traits<T>::HasDiv &&
packet_traits<T>::HasNegate && packet_traits<T>::HasExp
};
@@ -976,6 +978,18 @@ struct scalar_logistic_op<float> {
}
};
+template <>
+struct functor_traits<scalar_logistic_op<float>> {
+ enum {
+ Cost = NumTraits<float>::AddCost * 12 + NumTraits<float>::MulCost * 11 +
+ scalar_div_cost<float, packet_traits<float>::HasDiv>::value,
+ PacketAccess = packet_traits<float>::HasAdd &&
+ packet_traits<float>::HasMul &&
+ packet_traits<float>::HasDiv &&
+ packet_traits<float>::HasMax && packet_traits<float>::HasMin
+ };
+};
+
} // end namespace internal
} // end namespace Eigen