Defer to Eigen for mod & fmod functors and cost estimates.
PiperOrigin-RevId: 239510737
This commit is contained in:
parent
06c6f5ffc5
commit
b22875dac9
@ -426,7 +426,7 @@ struct google_floor_fmod {
|
|||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T operator()(const T& x,
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T operator()(const T& x,
|
||||||
const T& y) const {
|
const T& y) const {
|
||||||
// EIGEN_STATIC_ASSERT(NUMERIC_TYPE_MUST_BE_REAL);
|
// EIGEN_STATIC_ASSERT(NUMERIC_TYPE_MUST_BE_REAL);
|
||||||
T trunc_mod = std::fmod(x, y);
|
T trunc_mod = scalar_fmod_op<T>()(x, y);
|
||||||
return trunc_mod != T(0) && (y < T(0) != trunc_mod < T(0)) ? trunc_mod + y
|
return trunc_mod != T(0) && (y < T(0) != trunc_mod < T(0)) ? trunc_mod + y
|
||||||
: trunc_mod;
|
: trunc_mod;
|
||||||
}
|
}
|
||||||
@ -435,8 +435,8 @@ struct google_floor_fmod {
|
|||||||
template <typename Scalar>
|
template <typename Scalar>
|
||||||
struct functor_traits<google_floor_fmod<Scalar>> {
|
struct functor_traits<google_floor_fmod<Scalar>> {
|
||||||
enum {
|
enum {
|
||||||
Cost = 2 * Eigen::internal::scalar_div_cost<Scalar, false>::value +
|
Cost = functor_traits<Eigen::internal::scalar_fmod_op<Scalar>>::Cost +
|
||||||
2 * NumTraits<Scalar>::AddCost,
|
NumTraits<Scalar>::AddCost,
|
||||||
PacketAccess = false
|
PacketAccess = false
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -447,7 +447,7 @@ struct google_floor_mod {
|
|||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T operator()(const T& x,
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T operator()(const T& x,
|
||||||
const T& y) const {
|
const T& y) const {
|
||||||
// EIGEN_STATIC_ASSERT(!NUMERIC_TYPE_MUST_BE_REAL);
|
// EIGEN_STATIC_ASSERT(!NUMERIC_TYPE_MUST_BE_REAL);
|
||||||
T trunc_mod = x % y;
|
T trunc_mod = Eigen::internal::scalar_mod2_op<T>()(x, y);
|
||||||
return trunc_mod != T(0) && (y < T(0) != trunc_mod < T(0)) ? trunc_mod + y
|
return trunc_mod != T(0) && (y < T(0) != trunc_mod < T(0)) ? trunc_mod + y
|
||||||
: trunc_mod;
|
: trunc_mod;
|
||||||
}
|
}
|
||||||
@ -456,8 +456,8 @@ struct google_floor_mod {
|
|||||||
template <typename Scalar>
|
template <typename Scalar>
|
||||||
struct functor_traits<google_floor_mod<Scalar>> {
|
struct functor_traits<google_floor_mod<Scalar>> {
|
||||||
enum {
|
enum {
|
||||||
Cost = 2 * Eigen::internal::scalar_div_cost<Scalar, false>::value +
|
Cost = functor_traits<Eigen::internal::scalar_mod2_op<Scalar>>::Cost +
|
||||||
2 * NumTraits<Scalar>::AddCost,
|
NumTraits<Scalar>::AddCost,
|
||||||
PacketAccess = false
|
PacketAccess = false
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user