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;}