Improved support for integer modulo

This commit is contained in:
Benoit Steiner 2016-03-25 17:21:56 -07:00
parent 65716e99a5
commit 74f91ed06c

View File

@ -25,7 +25,20 @@ struct scalar_mod_op {
}; };
template <typename Scalar> template <typename Scalar>
struct functor_traits<scalar_mod_op<Scalar> > struct functor_traits<scalar_mod_op<Scalar> >
{ enum { Cost = 2 * NumTraits<Scalar>::MulCost, PacketAccess = false }; }; { enum { Cost = NumTraits<Scalar>::template Div<false>::Cost, PacketAccess = false }; };
/** \internal
* \brief Template functor to compute the modulo between 2 arrays.
*/
template <typename Scalar>
struct scalar_mod2_op {
EIGEN_EMPTY_STRUCT_CTOR(scalar_mod2_op);
EIGEN_DEVICE_FUNC inline Scalar operator() (const Scalar& a, const Scalar& b) const { return a % b; }
};
template <typename Scalar>
struct functor_traits<scalar_mod2_op<Scalar> >
{ enum { Cost = NumTraits<Scalar>::template Div<false>::Cost, PacketAccess = false }; };
/** \internal /** \internal