#ifndef EIGEN_BINARY_FUNCTORS_H
#define EIGEN_BINARY_FUNCTORS_H
#include "../InternalHeaderCheck.h"
namespace Eigen {
namespace internal {
template <typename Arg1, typename Arg2>
struct binary_op_base { … };
template <typename LhsScalar, typename RhsScalar>
struct scalar_sum_op : binary_op_base<LhsScalar, RhsScalar> { … };
functor_traits<scalar_sum_op<LhsScalar, RhsScalar>>;
template <>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool scalar_sum_op<bool, bool>::operator()(const bool& a, const bool& b) const { … }
template <typename LhsScalar, typename RhsScalar>
struct scalar_product_op : binary_op_base<LhsScalar, RhsScalar> { … };
functor_traits<scalar_product_op<LhsScalar, RhsScalar>>;
template <>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool scalar_product_op<bool, bool>::operator()(const bool& a,
const bool& b) const { … }
template <typename LhsScalar, typename RhsScalar>
struct scalar_conj_product_op : binary_op_base<LhsScalar, RhsScalar> { … };
functor_traits<scalar_conj_product_op<LhsScalar, RhsScalar>>;
template <typename LhsScalar, typename RhsScalar, int NaNPropagation>
struct scalar_min_op : binary_op_base<LhsScalar, RhsScalar> { … };
functor_traits<scalar_min_op<LhsScalar, RhsScalar, NaNPropagation>>;
template <typename LhsScalar, typename RhsScalar, int NaNPropagation>
struct scalar_max_op : binary_op_base<LhsScalar, RhsScalar> { … };
functor_traits<scalar_max_op<LhsScalar, RhsScalar, NaNPropagation>>;
template <typename LhsScalar, typename RhsScalar, ComparisonName cmp, bool UseTypedComparators = false>
struct scalar_cmp_op;
functor_traits<scalar_cmp_op<LhsScalar, RhsScalar, cmp, UseTypedComparators>>;
template <typename LhsScalar, typename RhsScalar, bool UseTypedComparators>
struct typed_cmp_helper { … };
cmp_return_t;
scalar_cmp_op<LhsScalar, RhsScalar, cmp_EQ, UseTypedComparators>;
scalar_cmp_op<LhsScalar, RhsScalar, cmp_LT, UseTypedComparators>;
scalar_cmp_op<LhsScalar, RhsScalar, cmp_LE, UseTypedComparators>;
scalar_cmp_op<LhsScalar, RhsScalar, cmp_GT, UseTypedComparators>;
scalar_cmp_op<LhsScalar, RhsScalar, cmp_GE, UseTypedComparators>;
scalar_cmp_op<LhsScalar, RhsScalar, cmp_UNORD, UseTypedComparators>;
scalar_cmp_op<LhsScalar, RhsScalar, cmp_NEQ, UseTypedComparators>;
scalar_hypot_op<Scalar, Scalar>;
functor_traits<scalar_hypot_op<Scalar, Scalar>>;
template <typename Scalar, typename Exponent>
struct scalar_pow_op : binary_op_base<Scalar, Exponent> { … };
functor_traits<scalar_pow_op<Scalar, Exponent>>;
template <typename LhsScalar, typename RhsScalar>
struct scalar_difference_op : binary_op_base<LhsScalar, RhsScalar> { … };
functor_traits<scalar_difference_op<LhsScalar, RhsScalar>>;
template <typename Packet, bool IsInteger = NumTraits<typename unpacket_traits<Packet>::type>::IsInteger>
struct maybe_raise_div_by_zero { … };
#ifndef EIGEN_GPU_COMPILE_PHASE
maybe_raise_div_by_zero<Packet, true>;
#endif
template <typename LhsScalar, typename RhsScalar>
struct scalar_quotient_op : binary_op_base<LhsScalar, RhsScalar> { … };
functor_traits<scalar_quotient_op<LhsScalar, RhsScalar>>;
template <typename Scalar>
struct scalar_boolean_and_op { … };
functor_traits<scalar_boolean_and_op<Scalar>>;
template <typename Scalar>
struct scalar_boolean_or_op { … };
functor_traits<scalar_boolean_or_op<Scalar>>;
template <typename Scalar>
struct scalar_boolean_xor_op { … };
functor_traits<scalar_boolean_xor_op<Scalar>>;
template <typename Scalar, bool IsComplex = NumTraits<Scalar>::IsComplex>
struct bitwise_binary_impl { … };
bitwise_binary_impl<Scalar, true>;
template <typename Scalar>
struct scalar_bitwise_and_op { … };
functor_traits<scalar_bitwise_and_op<Scalar>>;
template <typename Scalar>
struct scalar_bitwise_or_op { … };
functor_traits<scalar_bitwise_or_op<Scalar>>;
template <typename Scalar>
struct scalar_bitwise_xor_op { … };
functor_traits<scalar_bitwise_xor_op<Scalar>>;
template <typename LhsScalar, typename RhsScalar>
struct scalar_absolute_difference_op : binary_op_base<LhsScalar, RhsScalar> { … };
functor_traits<scalar_absolute_difference_op<LhsScalar, RhsScalar>>;
template <typename LhsScalar, typename RhsScalar>
struct scalar_atan2_op { … };
functor_traits<scalar_atan2_op<LhsScalar, RhsScalar>>;
template <typename BinaryOp>
struct bind1st_op : BinaryOp { … };
functor_traits<bind1st_op<BinaryOp>>;
template <typename BinaryOp>
struct bind2nd_op : BinaryOp { … };
functor_traits<bind2nd_op<BinaryOp>>;
}
}
#endif