10 #ifndef EIGEN_STL_FUNCTORS_H 11 #define EIGEN_STL_FUNCTORS_H 14 #include "../InternalHeaderCheck.h" 22 struct functor_traits<
std::multiplies<T> > {
23 enum { Cost = NumTraits<T>::MulCost, PacketAccess =
false };
27 struct functor_traits<
std::divides<T> > {
28 enum { Cost = NumTraits<T>::MulCost, PacketAccess =
false };
32 struct functor_traits<
std::plus<T> > {
33 enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false };
37 struct functor_traits<
std::minus<T> > {
38 enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false };
42 struct functor_traits<
std::negate<T> > {
43 enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false };
47 struct functor_traits<
std::logical_or<T> > {
48 enum { Cost = 1, PacketAccess =
false };
52 struct functor_traits<
std::logical_and<T> > {
53 enum { Cost = 1, PacketAccess =
false };
57 struct functor_traits<
std::logical_not<T> > {
58 enum { Cost = 1, PacketAccess =
false };
62 struct functor_traits<
std::greater<T> > {
63 enum { Cost = 1, PacketAccess =
false };
67 struct functor_traits<
std::less<T> > {
68 enum { Cost = 1, PacketAccess =
false };
72 struct functor_traits<
std::greater_equal<T> > {
73 enum { Cost = 1, PacketAccess =
false };
77 struct functor_traits<
std::less_equal<T> > {
78 enum { Cost = 1, PacketAccess =
false };
82 struct functor_traits<
std::equal_to<T> > {
83 enum { Cost = 1, PacketAccess =
false };
87 struct functor_traits<
std::not_equal_to<T> > {
88 enum { Cost = 1, PacketAccess =
false };
91 #if (EIGEN_COMP_CXXVER < 17) 94 struct functor_traits<
std::unary_negate<T> > {
95 enum { Cost = 1 + functor_traits<T>::Cost, PacketAccess =
false };
100 struct functor_traits<
std::binary_negate<T> > {
101 enum { Cost = 1 + functor_traits<T>::Cost, PacketAccess =
false };
105 #ifdef EIGEN_STDEXT_SUPPORT 107 template <
typename T0,
typename T1>
108 struct functor_traits<
std::project1st<T0, T1> > {
109 enum { Cost = 0, PacketAccess =
false };
112 template <
typename T0,
typename T1>
113 struct functor_traits<
std::project2nd<T0, T1> > {
114 enum { Cost = 0, PacketAccess =
false };
117 template <
typename T0,
typename T1>
118 struct functor_traits<
std::select2nd<std::pair<T0, T1> > > {
119 enum { Cost = 0, PacketAccess =
false };
122 template <
typename T0,
typename T1>
123 struct functor_traits<
std::select1st<std::pair<T0, T1> > > {
124 enum { Cost = 0, PacketAccess =
false };
127 template <
typename T0,
typename T1>
128 struct functor_traits<
std::unary_compose<T0, T1> > {
129 enum { Cost = functor_traits<T0>::Cost + functor_traits<T1>::Cost, PacketAccess =
false };
132 template <
typename T0,
typename T1,
typename T2>
133 struct functor_traits<
std::binary_compose<T0, T1, T2> > {
134 enum { Cost = functor_traits<T0>::Cost + functor_traits<T1>::Cost + functor_traits<T2>::Cost, PacketAccess =
false };
137 #endif // EIGEN_STDEXT_SUPPORT 141 #ifdef EIGEN_FUNCTORS_PLUGIN 142 #include EIGEN_FUNCTORS_PLUGIN 149 #endif // EIGEN_STL_FUNCTORS_H Namespace containing all symbols from the Eigen library.
Definition: B01_Experimental.dox:1
Definition: BFloat16.h:231