44 #ifndef KOKKOS_NUMERICTRAITS_HPP
45 #define KOKKOS_NUMERICTRAITS_HPP
53 struct reduction_identity;
72 struct reduction_identity<signed char> {
73 KOKKOS_FORCEINLINE_FUNCTION constexpr
static signed char sum() {
return static_cast<signed char>(0);}
74 KOKKOS_FORCEINLINE_FUNCTION constexpr
static signed char prod() {
return static_cast<signed char>(1);}
75 KOKKOS_FORCEINLINE_FUNCTION constexpr
static signed char max() {
return SCHAR_MIN;}
76 KOKKOS_FORCEINLINE_FUNCTION constexpr
static signed char min() {
return SCHAR_MAX;}
77 KOKKOS_FORCEINLINE_FUNCTION constexpr
static signed char bor() {
return static_cast<signed char>(0x0);}
78 KOKKOS_FORCEINLINE_FUNCTION constexpr
static signed char band() {
return ~static_cast<
signed char>(0x0);}
79 KOKKOS_FORCEINLINE_FUNCTION constexpr
static signed char lor() {
return static_cast<signed char>(0);}
80 KOKKOS_FORCEINLINE_FUNCTION constexpr
static signed char land() {
return static_cast<signed char>(1);}
84 struct reduction_identity<short> {
85 KOKKOS_FORCEINLINE_FUNCTION constexpr
static short sum() {
return static_cast<short>(0);}
86 KOKKOS_FORCEINLINE_FUNCTION constexpr
static short prod() {
return static_cast<short>(1);}
87 KOKKOS_FORCEINLINE_FUNCTION constexpr
static short max() {
return SHRT_MIN;}
88 KOKKOS_FORCEINLINE_FUNCTION constexpr
static short min() {
return SHRT_MAX;}
89 KOKKOS_FORCEINLINE_FUNCTION constexpr
static short bor() {
return static_cast<short>(0x0);}
90 KOKKOS_FORCEINLINE_FUNCTION constexpr
static short band() {
return ~static_cast<
short>(0x0);}
91 KOKKOS_FORCEINLINE_FUNCTION constexpr
static short lor() {
return static_cast<short>(0);}
92 KOKKOS_FORCEINLINE_FUNCTION constexpr
static short land() {
return static_cast<short>(1);}
96 struct reduction_identity<int> {
97 KOKKOS_FORCEINLINE_FUNCTION constexpr
static int sum() {
return static_cast<int>(0);}
98 KOKKOS_FORCEINLINE_FUNCTION constexpr
static int prod() {
return static_cast<int>(1);}
99 KOKKOS_FORCEINLINE_FUNCTION constexpr
static int max() {
return INT_MIN;}
100 KOKKOS_FORCEINLINE_FUNCTION constexpr
static int min() {
return INT_MAX;}
101 KOKKOS_FORCEINLINE_FUNCTION constexpr
static int bor() {
return static_cast<int>(0x0);}
102 KOKKOS_FORCEINLINE_FUNCTION constexpr
static int band() {
return ~static_cast<
int>(0x0);}
103 KOKKOS_FORCEINLINE_FUNCTION constexpr
static int lor() {
return static_cast<int>(0);}
104 KOKKOS_FORCEINLINE_FUNCTION constexpr
static int land() {
return static_cast<int>(1);}
108 struct reduction_identity<long> {
109 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long sum() {
return static_cast<long>(0);}
110 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long prod() {
return static_cast<long>(1);}
111 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long max() {
return LLONG_MIN;}
112 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long min() {
return LLONG_MAX;}
113 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long bor() {
return static_cast<long>(0x0);}
114 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long band() {
return ~static_cast<
long>(0x0);}
115 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long lor() {
return static_cast<long>(0);}
116 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long land() {
return static_cast<long>(1);}
120 struct reduction_identity<long long> {
121 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long long sum() {
return static_cast<long long>(0);}
122 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long long prod() {
return static_cast<long long>(1);}
123 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long long max() {
return LLONG_MIN;}
124 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long long min() {
return LLONG_MAX;}
125 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long long bor() {
return static_cast<long long>(0x0);}
126 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long long band() {
return ~static_cast<
long long>(0x0);}
127 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long long lor() {
return static_cast<long long>(0);}
128 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long long land() {
return static_cast<long long>(1);}
132 struct reduction_identity<unsigned char> {
133 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned char sum() {
return static_cast<unsigned char>(0);}
134 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned char prod() {
return static_cast<unsigned char>(1);}
135 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned char max() {
return static_cast<unsigned char>(0);}
136 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned char min() {
return UCHAR_MAX;}
137 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned char bor() {
return static_cast<unsigned char>(0x0);}
138 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned char band() {
return ~static_cast<
unsigned char>(0x0);}
139 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned char lor() {
return static_cast<unsigned char>(0);}
140 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned char land() {
return static_cast<unsigned char>(1);}
144 struct reduction_identity<unsigned short> {
145 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned short sum() {
return static_cast<unsigned short>(0);}
146 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned short prod() {
return static_cast<unsigned short>(1);}
147 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned short max() {
return static_cast<unsigned short>(0);}
148 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned short min() {
return USHRT_MAX;}
149 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned short bor() {
return static_cast<unsigned short>(0x0);}
150 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned short band() {
return ~static_cast<
unsigned short>(0x0);}
151 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned short lor() {
return static_cast<unsigned short>(0);}
152 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned short land() {
return static_cast<unsigned short>(1);}
156 struct reduction_identity<unsigned int> {
157 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned int sum() {
return static_cast<unsigned int>(0);}
158 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned int prod() {
return static_cast<unsigned int>(1);}
159 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned int max() {
return static_cast<unsigned int>(0);}
160 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned int min() {
return UINT_MAX;}
161 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned int bor() {
return static_cast<unsigned int>(0x0);}
162 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned int band() {
return ~static_cast<
unsigned int>(0x0);}
163 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned int lor() {
return static_cast<unsigned int>(0);}
164 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned int land() {
return static_cast<unsigned int>(1);}
168 struct reduction_identity<unsigned long> {
169 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long sum() {
return static_cast<unsigned long>(0);}
170 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long prod() {
return static_cast<unsigned long>(1);}
171 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long max() {
return static_cast<unsigned long>(0);}
172 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long min() {
return ULONG_MAX;}
173 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long bor() {
return static_cast<unsigned long>(0x0);}
174 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long band() {
return ~static_cast<
unsigned long>(0x0);}
175 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long lor() {
return static_cast<unsigned long>(0);}
176 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long land() {
return static_cast<unsigned long>(1);}
180 struct reduction_identity<unsigned long long> {
181 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long long sum() {
return static_cast<unsigned long long>(0);}
182 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long long prod() {
return static_cast<unsigned long long>(1);}
183 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long long max() {
return static_cast<unsigned long long>(0);}
184 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long long min() {
return ULLONG_MAX;}
185 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long long bor() {
return static_cast<unsigned long long>(0x0);}
186 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long long band() {
return ~static_cast<
unsigned long long>(0x0);}
187 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long long lor() {
return static_cast<unsigned long long>(0);}
188 KOKKOS_FORCEINLINE_FUNCTION constexpr
static unsigned long long land() {
return static_cast<unsigned long long>(1);}
192 struct reduction_identity<float> {
193 KOKKOS_FORCEINLINE_FUNCTION constexpr
static float sum() {
return static_cast<float>(0.0f);}
194 KOKKOS_FORCEINLINE_FUNCTION constexpr
static float prod() {
return static_cast<float>(1.0f);}
195 KOKKOS_FORCEINLINE_FUNCTION constexpr
static float max() {
return -FLT_MAX;}
196 KOKKOS_FORCEINLINE_FUNCTION constexpr
static float min() {
return FLT_MAX;}
200 struct reduction_identity<double> {
201 KOKKOS_FORCEINLINE_FUNCTION constexpr
static double sum() {
return static_cast<double>(0.0);}
202 KOKKOS_FORCEINLINE_FUNCTION constexpr
static double prod() {
return static_cast<double>(1.0);}
203 KOKKOS_FORCEINLINE_FUNCTION constexpr
static double max() {
return -DBL_MAX;}
204 KOKKOS_FORCEINLINE_FUNCTION constexpr
static double min() {
return DBL_MAX;}
207 #if !defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA )
209 struct reduction_identity<long double> {
210 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long double sum() {
return static_cast<long double>(0.0);}
211 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long double prod() {
return static_cast<long double>(1.0);}
212 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long double max() {
return -LDBL_MAX;}
213 KOKKOS_FORCEINLINE_FUNCTION constexpr
static long double min() {
return LDBL_MAX;}