limits.hpp
Go to the documentation of this file.
1 /*M///////////////////////////////////////////////////////////////////////////////////////
2 //
3 // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4 //
5 // By downloading, copying, installing or using the software you agree to this license.
6 // If you do not agree to this license, do not download, install,
7 // copy or use the software.
8 //
9 //
10 // License Agreement
11 // For Open Source Computer Vision Library
12 //
13 // Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
14 // Copyright (C) 2009, Willow Garage Inc., all rights reserved.
15 // Third party copyrights are property of their respective owners.
16 //
17 // Redistribution and use in source and binary forms, with or without modification,
18 // are permitted provided that the following conditions are met:
19 //
20 // * Redistribution's of source code must retain the above copyright notice,
21 // this list of conditions and the following disclaimer.
22 //
23 // * Redistribution's in binary form must reproduce the above copyright notice,
24 // this list of conditions and the following disclaimer in the documentation
25 // and/or other materials provided with the distribution.
26 //
27 // * The name of the copyright holders may not be used to endorse or promote products
28 // derived from this software without specific prior written permission.
29 //
30 // This software is provided by the copyright holders and contributors "as is" and
31 // any express or implied warranties, including, but not limited to, the implied
32 // warranties of merchantability and fitness for a particular purpose are disclaimed.
33 // In no event shall the Intel Corporation or contributors be liable for any direct,
34 // indirect, incidental, special, exemplary, or consequential damages
35 // (including, but not limited to, procurement of substitute goods or services;
36 // loss of use, data, or profits; or business interruption) however caused
37 // and on any theory of liability, whether in contract, strict liability,
38 // or tort (including negligence or otherwise) arising in any way out of
39 // the use of this software, even if advised of the possibility of such damage.
40 //
41 //M*/
42 
43 #ifndef __OPENCV_GPU_LIMITS_GPU_HPP__
44 #define __OPENCV_GPU_LIMITS_GPU_HPP__
45 
46 #include <limits.h>
47 #include <float.h>
48 #include "common.hpp"
49 
50 namespace cv { namespace gpu { namespace device
51 {
52 
53 template <class T> struct numeric_limits;
54 
55 template <> struct numeric_limits<bool>
56 {
57  __device__ __forceinline__ static bool min() { return false; }
58  __device__ __forceinline__ static bool max() { return true; }
59  static const bool is_signed = false;
60 };
61 
62 template <> struct numeric_limits<signed char>
63 {
64  __device__ __forceinline__ static signed char min() { return SCHAR_MIN; }
65  __device__ __forceinline__ static signed char max() { return SCHAR_MAX; }
66  static const bool is_signed = true;
67 };
68 
69 template <> struct numeric_limits<unsigned char>
70 {
71  __device__ __forceinline__ static unsigned char min() { return 0; }
72  __device__ __forceinline__ static unsigned char max() { return UCHAR_MAX; }
73  static const bool is_signed = false;
74 };
75 
76 template <> struct numeric_limits<short>
77 {
78  __device__ __forceinline__ static short min() { return SHRT_MIN; }
79  __device__ __forceinline__ static short max() { return SHRT_MAX; }
80  static const bool is_signed = true;
81 };
82 
83 template <> struct numeric_limits<unsigned short>
84 {
85  __device__ __forceinline__ static unsigned short min() { return 0; }
86  __device__ __forceinline__ static unsigned short max() { return USHRT_MAX; }
87  static const bool is_signed = false;
88 };
89 
90 template <> struct numeric_limits<int>
91 {
92  __device__ __forceinline__ static int min() { return INT_MIN; }
93  __device__ __forceinline__ static int max() { return INT_MAX; }
94  static const bool is_signed = true;
95 };
96 
97 template <> struct numeric_limits<unsigned int>
98 {
99  __device__ __forceinline__ static unsigned int min() { return 0; }
100  __device__ __forceinline__ static unsigned int max() { return UINT_MAX; }
101  static const bool is_signed = false;
102 };
103 
104 template <> struct numeric_limits<float>
105 {
106  __device__ __forceinline__ static float min() { return FLT_MIN; }
107  __device__ __forceinline__ static float max() { return FLT_MAX; }
108  __device__ __forceinline__ static float epsilon() { return FLT_EPSILON; }
109  static const bool is_signed = true;
110 };
111 
112 template <> struct numeric_limits<double>
113 {
114  __device__ __forceinline__ static double min() { return DBL_MIN; }
115  __device__ __forceinline__ static double max() { return DBL_MAX; }
116  __device__ __forceinline__ static double epsilon() { return DBL_EPSILON; }
117  static const bool is_signed = true;
118 };
119 
120 }}} // namespace cv { namespace gpu { namespace device {
121 
122 #endif // __OPENCV_GPU_LIMITS_GPU_HPP__
short float uchar uchar uchar uchar uchar ushort int uchar ushort int float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float int int int float int int int float int CV_CUDEV_IMPLEMENT_VEC_BINARY_OP char CV_CUDEV_IMPLEMENT_VEC_BINARY_OP ushort CV_CUDEV_IMPLEMENT_VEC_BINARY_OP short CV_CUDEV_IMPLEMENT_VEC_BINARY_OP int CV_CUDEV_IMPLEMENT_VEC_BINARY_OP uint CV_CUDEV_IMPLEMENT_VEC_BINARY_OP float CV_CUDEV_IMPLEMENT_VEC_BINARY_OP double char
Definition: vec_math.hpp:426
__device__ static __forceinline__ double epsilon()
Definition: limits.hpp:116
__device__ static __forceinline__ double min()
Definition: limits.hpp:114
__device__ static __forceinline__ unsigned char max()
Definition: limits.hpp:72
__device__ static __forceinline__ unsigned short min()
Definition: limits.hpp:85
__device__ static __forceinline__ float min()
Definition: limits.hpp:106
__device__ static __forceinline__ int max()
Definition: limits.hpp:93
__device__ static __forceinline__ unsigned int max()
Definition: limits.hpp:100
__device__ static __forceinline__ unsigned int min()
Definition: limits.hpp:99
__device__ static __forceinline__ signed char min()
Definition: limits.hpp:64
__device__ static __forceinline__ unsigned char min()
Definition: limits.hpp:71
__device__ static __forceinline__ float epsilon()
Definition: limits.hpp:108
Definition: limits.hpp:53
__device__ static __forceinline__ signed char max()
Definition: limits.hpp:65
__device__ static __forceinline__ double max()
Definition: limits.hpp:115
__device__ static __forceinline__ int min()
Definition: limits.hpp:92
__device__ static __forceinline__ bool max()
Definition: limits.hpp:58
__device__ static __forceinline__ unsigned short max()
Definition: limits.hpp:86
::max::max::max float
Definition: functional.hpp:326
__device__ static __forceinline__ short min()
Definition: limits.hpp:78
::max::max int
Definition: functional.hpp:324
__device__ static __forceinline__ short max()
Definition: limits.hpp:79
short
Definition: vec_math.hpp:153
__device__ static __forceinline__ bool min()
Definition: limits.hpp:57
short float uchar uchar uchar uchar uchar ushort int uchar ushort int float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float int int int float int int int float int CV_CUDEV_IMPLEMENT_VEC_BINARY_OP char CV_CUDEV_IMPLEMENT_VEC_BINARY_OP ushort CV_CUDEV_IMPLEMENT_VEC_BINARY_OP short CV_CUDEV_IMPLEMENT_VEC_BINARY_OP int CV_CUDEV_IMPLEMENT_VEC_BINARY_OP uint CV_CUDEV_IMPLEMENT_VEC_BINARY_OP float CV_CUDEV_IMPLEMENT_VEC_BINARY_OP double int int uint double
Definition: vec_math.hpp:432
__device__ static __forceinline__ float max()
Definition: limits.hpp:107