diff options
-rw-r--r-- | Eigen/src/Core/functors/UnaryFunctors.h | 18 |
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 |