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 -struct functor_traits > { +struct functor_traits> { enum { - Cost = NumTraits::AddCost * 2 + NumTraits::MulCost * 6, + Cost = NumTraits::AddCost * 2 + NumTraits::MulCost * 6 + + scalar_div_cost::HasDiv>::value + + functor_traits>::Cost, PacketAccess = packet_traits::HasAdd && packet_traits::HasDiv && packet_traits::HasNegate && packet_traits::HasExp }; @@ -976,6 +978,18 @@ struct scalar_logistic_op { } }; +template <> +struct functor_traits> { + enum { + Cost = NumTraits::AddCost * 12 + NumTraits::MulCost * 11 + + scalar_div_cost::HasDiv>::value, + PacketAccess = packet_traits::HasAdd && + packet_traits::HasMul && + packet_traits::HasDiv && + packet_traits::HasMax && packet_traits::HasMin + }; +}; + } // end namespace internal } // end namespace Eigen