10 #ifndef EIGEN_STL_FUNCTORS_H 11 #define EIGEN_STL_FUNCTORS_H 18 template<
typename T =
void>
20 typedef bool result_type;
21 EIGEN_DEVICE_FUNC
bool operator()(
const T& lhs,
const T& rhs)
const {
26 template<
typename T =
void>
28 typedef bool result_type;
29 EIGEN_DEVICE_FUNC
bool operator()(
const T& lhs,
const T& rhs)
const {
42 struct functor_traits<
std::multiplies<T> >
43 {
enum { Cost = NumTraits<T>::MulCost, PacketAccess =
false }; };
46 struct functor_traits<
std::divides<T> >
47 {
enum { Cost = NumTraits<T>::MulCost, PacketAccess =
false }; };
50 struct functor_traits<
std::plus<T> >
51 {
enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false }; };
54 struct functor_traits<
std::minus<T> >
55 {
enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false }; };
58 struct functor_traits<
std::negate<T> >
59 {
enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false }; };
62 struct functor_traits<
std::logical_or<T> >
63 {
enum { Cost = 1, PacketAccess =
false }; };
66 struct functor_traits<
std::logical_and<T> >
67 {
enum { Cost = 1, PacketAccess =
false }; };
70 struct functor_traits<
std::logical_not<T> >
71 {
enum { Cost = 1, PacketAccess =
false }; };
74 struct functor_traits<
std::greater<T> >
75 {
enum { Cost = 1, PacketAccess =
false }; };
78 struct functor_traits<
std::less<T> >
79 {
enum { Cost = 1, PacketAccess =
false }; };
82 struct functor_traits<
std::greater_equal<T> >
83 {
enum { Cost = 1, PacketAccess =
false }; };
86 struct functor_traits<
std::less_equal<T> >
87 {
enum { Cost = 1, PacketAccess =
false }; };
90 struct functor_traits<
std::equal_to<T> >
91 {
enum { Cost = 1, PacketAccess =
false }; };
94 struct functor_traits<numext::equal_to<T> >
95 : functor_traits<std::equal_to<T> > {};
98 struct functor_traits<
std::not_equal_to<T> >
99 {
enum { Cost = 1, PacketAccess =
false }; };
102 struct functor_traits<numext::not_equal_to<T> >
103 : functor_traits<std::not_equal_to<T> > {};
105 #if (EIGEN_COMP_CXXVER < 11) 108 struct functor_traits<
std::binder2nd<T> >
109 {
enum { Cost = functor_traits<T>::Cost, PacketAccess =
false }; };
112 struct functor_traits<
std::binder1st<T> >
113 {
enum { Cost = functor_traits<T>::Cost, PacketAccess =
false }; };
116 #if (EIGEN_COMP_CXXVER < 17) 119 struct functor_traits<
std::unary_negate<T> >
120 {
enum { Cost = 1 + functor_traits<T>::Cost, PacketAccess =
false }; };
124 struct functor_traits<
std::binary_negate<T> >
125 {
enum { Cost = 1 + functor_traits<T>::Cost, PacketAccess =
false }; };
128 #ifdef EIGEN_STDEXT_SUPPORT 130 template<
typename T0,
typename T1>
131 struct functor_traits<
std::project1st<T0,T1> >
132 {
enum { Cost = 0, PacketAccess =
false }; };
134 template<
typename T0,
typename T1>
135 struct functor_traits<
std::project2nd<T0,T1> >
136 {
enum { Cost = 0, PacketAccess =
false }; };
138 template<
typename T0,
typename T1>
139 struct functor_traits<
std::select2nd<std::pair<T0,T1> > >
140 {
enum { Cost = 0, PacketAccess =
false }; };
142 template<
typename T0,
typename T1>
143 struct functor_traits<
std::select1st<std::pair<T0,T1> > >
144 {
enum { Cost = 0, PacketAccess =
false }; };
146 template<
typename T0,
typename T1>
147 struct functor_traits<
std::unary_compose<T0,T1> >
148 {
enum { Cost = functor_traits<T0>::Cost + functor_traits<T1>::Cost, PacketAccess =
false }; };
150 template<
typename T0,
typename T1,
typename T2>
151 struct functor_traits<
std::binary_compose<T0,T1,T2> >
152 {
enum { Cost = functor_traits<T0>::Cost + functor_traits<T1>::Cost + functor_traits<T2>::Cost, PacketAccess =
false }; };
154 #endif // EIGEN_STDEXT_SUPPORT 158 #ifdef EIGEN_FUNCTORS_PLUGIN 159 #include EIGEN_FUNCTORS_PLUGIN 166 #endif // EIGEN_STL_FUNCTORS_H Namespace containing all symbols from the Eigen library.
Definition: Core:141
Definition: BFloat16.h:88
Definition: Eigen_Colamd.h:50