43 #ifndef OPENCV_CUDA_VECMATH_HPP
44 #define OPENCV_CUDA_VECMATH_HPP
46 #include "vec_traits.hpp"
47 #include "saturate_cast.hpp"
55 namespace cv {
namespace cuda {
namespace device
60 namespace vec_math_detail
62 template <
int cn,
typename VecD>
struct SatCastHelper;
63 template <
typename VecD>
struct SatCastHelper<1, VecD>
65 template <
typename VecS>
static __device__ __forceinline__ VecD cast(
const VecS& v)
67 typedef typename VecTraits<VecD>::elem_type D;
68 return VecTraits<VecD>::make(saturate_cast<D>(v.x));
71 template <
typename VecD>
struct SatCastHelper<2, VecD>
73 template <
typename VecS>
static __device__ __forceinline__ VecD cast(
const VecS& v)
75 typedef typename VecTraits<VecD>::elem_type D;
76 return VecTraits<VecD>::make(saturate_cast<D>(v.x), saturate_cast<D>(v.y));
79 template <
typename VecD>
struct SatCastHelper<3, VecD>
81 template <
typename VecS>
static __device__ __forceinline__ VecD cast(
const VecS& v)
83 typedef typename VecTraits<VecD>::elem_type D;
84 return VecTraits<VecD>::make(saturate_cast<D>(v.x), saturate_cast<D>(v.y), saturate_cast<D>(v.z));
87 template <
typename VecD>
struct SatCastHelper<4, VecD>
89 template <
typename VecS>
static __device__ __forceinline__ VecD cast(
const VecS& v)
91 typedef typename VecTraits<VecD>::elem_type D;
92 return VecTraits<VecD>::make(saturate_cast<D>(v.x), saturate_cast<D>(v.y), saturate_cast<D>(v.z), saturate_cast<D>(v.w));
96 template <
typename VecD,
typename VecS>
static __device__ __forceinline__ VecD saturate_cast_helper(
const VecS& v)
98 return SatCastHelper<VecTraits<VecD>::cn, VecD>::cast(v);
102 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const uchar1& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
103 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const char1& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
104 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const ushort1& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
105 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const short1& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
106 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const uint1& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
107 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const int1& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
108 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const float1& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
109 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const double1& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
111 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const uchar2& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
112 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const char2& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
113 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const ushort2& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
114 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const short2& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
115 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const uint2& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
116 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const int2& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
117 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const float2& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
118 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const double2& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
120 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const uchar3& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
121 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const char3& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
122 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const ushort3& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
123 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const short3& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
124 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const uint3& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
125 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const int3& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
126 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const float3& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
127 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const double3& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
129 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const uchar4& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
130 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const char4& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
131 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const ushort4& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
132 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const short4& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
133 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const uint4& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
134 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const int4& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
135 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const float4& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
136 template<
typename T>
static __device__ __forceinline__
T saturate_cast(
const double4& v) {
return vec_math_detail::saturate_cast_helper<T>(v);}
140 #define CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(op, input_type, output_type) \
141 __device__ __forceinline__ output_type ## 1 operator op(const input_type ## 1 & a) \
143 return VecTraits<output_type ## 1>::make(op (a.x)); \
145 __device__ __forceinline__ output_type ## 2 operator op(const input_type ## 2 & a) \
147 return VecTraits<output_type ## 2>::make(op (a.x), op (a.y)); \
149 __device__ __forceinline__ output_type ## 3 operator op(const input_type ## 3 & a) \
151 return VecTraits<output_type ## 3>::make(op (a.x), op (a.y), op (a.z)); \
153 __device__ __forceinline__ output_type ## 4 operator op(const input_type ## 4 & a) \
155 return VecTraits<output_type ## 4>::make(op (a.x), op (a.y), op (a.z), op (a.w)); \
158 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-,
char,
char)
159 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-,
short,
short)
160 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-,
int,
int)
161 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-,
float,
float)
162 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-,
double,
double)
164 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!,
uchar,
uchar)
165 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!,
char,
uchar)
167 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!,
short,
uchar)
168 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!,
int,
uchar)
169 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!,
uint,
uchar)
170 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!,
float,
uchar)
171 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!,
double,
uchar)
173 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~,
uchar,
uchar)
174 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~,
char,
char)
176 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~,
short,
short)
177 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~,
int,
int)
178 CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~,
uint,
uint)
180 #undef CV_CUDEV_IMPLEMENT_VEC_UNARY_OP
184 #define CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(func_name, func, input_type, output_type) \
185 __device__ __forceinline__ output_type ## 1 func_name(const input_type ## 1 & a) \
187 return VecTraits<output_type ## 1>::make(func (a.x)); \
189 __device__ __forceinline__ output_type ## 2 func_name(const input_type ## 2 & a) \
191 return VecTraits<output_type ## 2>::make(func (a.x), func (a.y)); \
193 __device__ __forceinline__ output_type ## 3 func_name(const input_type ## 3 & a) \
195 return VecTraits<output_type ## 3>::make(func (a.x), func (a.y), func (a.z)); \
197 __device__ __forceinline__ output_type ## 4 func_name(const input_type ## 4 & a) \
199 return VecTraits<output_type ## 4>::make(func (a.x), func (a.y), func (a.z), func (a.w)); \
202 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
abs, ::fabsf,
float,
float)
204 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sqrt, ::sqrtf,
uchar,
float)
205 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sqrt, ::sqrtf,
char,
float)
206 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sqrt, ::sqrtf,
ushort,
float)
207 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sqrt, ::sqrtf,
short,
float)
208 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sqrt, ::sqrtf,
int,
float)
209 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sqrt, ::sqrtf,
uint,
float)
210 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sqrt, ::sqrtf,
float,
float)
211 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sqrt, ::
sqrt,
double,
double)
213 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
exp, ::expf,
uchar,
float)
214 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
exp, ::expf,
char,
float)
215 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
exp, ::expf,
ushort,
float)
216 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
exp, ::expf,
short,
float)
217 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
exp, ::expf,
int,
float)
218 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
exp, ::expf,
uint,
float)
219 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
exp, ::expf,
float,
float)
220 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
exp, ::
exp,
double,
double)
222 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f,
uchar,
float)
223 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f,
char,
float)
224 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f,
ushort,
float)
225 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f,
short,
float)
226 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f,
int,
float)
227 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f,
uint,
float)
228 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f,
float,
float)
229 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2,
double,
double)
231 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f,
uchar,
float)
232 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f,
char,
float)
233 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f,
ushort,
float)
234 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f,
short,
float)
235 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f,
int,
float)
236 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f,
uint,
float)
237 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f,
float,
float)
238 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10,
double,
double)
240 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
log, ::logf,
uchar,
float)
241 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
log, ::logf,
char,
float)
242 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
log, ::logf,
ushort,
float)
243 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
log, ::logf,
short,
float)
244 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
log, ::logf,
int,
float)
245 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
log, ::logf,
uint,
float)
246 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
log, ::logf,
float,
float)
247 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
log, ::
log,
double,
double)
249 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f,
uchar,
float)
250 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f,
char,
float)
251 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f,
ushort,
float)
252 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f,
short,
float)
253 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f,
int,
float)
254 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f,
uint,
float)
255 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f,
float,
float)
256 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2,
double,
double)
258 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f,
uchar,
float)
259 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f,
char,
float)
260 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f,
ushort,
float)
261 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f,
short,
float)
262 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f,
int,
float)
263 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f,
uint,
float)
264 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f,
float,
float)
265 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10,
double,
double)
267 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sin, ::sinf,
uchar,
float)
268 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sin, ::sinf,
char,
float)
269 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sin, ::sinf,
ushort,
float)
270 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sin, ::sinf,
short,
float)
271 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sin, ::sinf,
int,
float)
272 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sin, ::sinf,
uint,
float)
273 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sin, ::sinf,
float,
float)
274 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sin, ::
sin,
double,
double)
276 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cos, ::cosf,
uchar,
float)
277 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cos, ::cosf,
char,
float)
278 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cos, ::cosf,
ushort,
float)
279 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cos, ::cosf,
short,
float)
280 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cos, ::cosf,
int,
float)
281 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cos, ::cosf,
uint,
float)
282 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cos, ::cosf,
float,
float)
283 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cos, ::
cos,
double,
double)
285 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tan, ::tanf,
uchar,
float)
286 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tan, ::tanf,
char,
float)
287 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tan, ::tanf,
ushort,
float)
288 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tan, ::tanf,
short,
float)
289 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tan, ::tanf,
int,
float)
290 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tan, ::tanf,
uint,
float)
291 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tan, ::tanf,
float,
float)
292 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tan, ::
tan,
double,
double)
294 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asin, ::asinf,
uchar,
float)
295 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asin, ::asinf,
char,
float)
296 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asin, ::asinf,
ushort,
float)
297 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asin, ::asinf,
short,
float)
298 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asin, ::asinf,
int,
float)
299 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asin, ::asinf,
uint,
float)
300 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asin, ::asinf,
float,
float)
301 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asin, ::
asin,
double,
double)
303 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acos, ::acosf,
uchar,
float)
304 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acos, ::acosf,
char,
float)
305 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acos, ::acosf,
ushort,
float)
306 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acos, ::acosf,
short,
float)
307 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acos, ::acosf,
int,
float)
308 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acos, ::acosf,
uint,
float)
309 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acos, ::acosf,
float,
float)
310 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acos, ::
acos,
double,
double)
312 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atan, ::atanf,
uchar,
float)
313 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atan, ::atanf,
char,
float)
314 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atan, ::atanf,
ushort,
float)
315 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atan, ::atanf,
short,
float)
316 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atan, ::atanf,
int,
float)
317 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atan, ::atanf,
uint,
float)
318 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atan, ::atanf,
float,
float)
319 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atan, ::
atan,
double,
double)
321 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sinh, ::sinhf,
uchar,
float)
322 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sinh, ::sinhf,
char,
float)
323 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sinh, ::sinhf,
ushort,
float)
324 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sinh, ::sinhf,
short,
float)
325 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sinh, ::sinhf,
int,
float)
326 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sinh, ::sinhf,
uint,
float)
327 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sinh, ::sinhf,
float,
float)
328 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
sinh, ::
sinh,
double,
double)
330 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cosh, ::coshf,
uchar,
float)
331 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cosh, ::coshf,
char,
float)
332 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cosh, ::coshf,
ushort,
float)
333 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cosh, ::coshf,
short,
float)
334 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cosh, ::coshf,
int,
float)
335 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cosh, ::coshf,
uint,
float)
336 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cosh, ::coshf,
float,
float)
337 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
cosh, ::
cosh,
double,
double)
339 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tanh, ::tanhf,
uchar,
float)
340 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tanh, ::tanhf,
char,
float)
341 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tanh, ::tanhf,
ushort,
float)
342 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tanh, ::tanhf,
short,
float)
343 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tanh, ::tanhf,
int,
float)
344 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tanh, ::tanhf,
uint,
float)
345 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tanh, ::tanhf,
float,
float)
346 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
tanh, ::
tanh,
double,
double)
348 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asinh, ::asinhf,
uchar,
float)
349 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asinh, ::asinhf,
char,
float)
350 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asinh, ::asinhf,
ushort,
float)
351 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asinh, ::asinhf,
short,
float)
352 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asinh, ::asinhf,
int,
float)
353 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asinh, ::asinhf,
uint,
float)
354 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asinh, ::asinhf,
float,
float)
355 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
asinh, ::
asinh,
double,
double)
357 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acosh, ::acoshf,
uchar,
float)
358 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acosh, ::acoshf,
char,
float)
359 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acosh, ::acoshf,
ushort,
float)
360 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acosh, ::acoshf,
short,
float)
361 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acosh, ::acoshf,
int,
float)
362 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acosh, ::acoshf,
uint,
float)
363 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acosh, ::acoshf,
float,
float)
364 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
acosh, ::
acosh,
double,
double)
366 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atanh, ::atanhf,
uchar,
float)
367 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atanh, ::atanhf,
char,
float)
368 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atanh, ::atanhf,
ushort,
float)
369 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atanh, ::atanhf,
short,
float)
370 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atanh, ::atanhf,
int,
float)
371 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atanh, ::atanhf,
uint,
float)
372 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atanh, ::atanhf,
float,
float)
373 CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(
atanh, ::
atanh,
double,
double)
375 #undef CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC
379 #define CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(op, input_type, output_type) \
380 __device__ __forceinline__ output_type ## 1 operator op(const input_type ## 1 & a, const input_type ## 1 & b) \
382 return VecTraits<output_type ## 1>::make(a.x op b.x); \
384 __device__ __forceinline__ output_type ## 2 operator op(const input_type ## 2 & a, const input_type ## 2 & b) \
386 return VecTraits<output_type ## 2>::make(a.x op b.x, a.y op b.y); \
388 __device__ __forceinline__ output_type ## 3 operator op(const input_type ## 3 & a, const input_type ## 3 & b) \
390 return VecTraits<output_type ## 3>::make(a.x op b.x, a.y op b.y, a.z op b.z); \
392 __device__ __forceinline__ output_type ## 4 operator op(const input_type ## 4 & a, const input_type ## 4 & b) \
394 return VecTraits<output_type ## 4>::make(a.x op b.x, a.y op b.y, a.z op b.z, a.w op b.w); \
397 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+,
uchar,
int)
398 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+,
char,
int)
399 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+,
ushort,
int)
400 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+,
short,
int)
401 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+,
int,
int)
402 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+,
uint,
uint)
403 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+,
float,
float)
404 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+,
double,
double)
406 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-,
uchar,
int)
407 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-,
char,
int)
408 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-,
ushort,
int)
409 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-,
short,
int)
410 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-,
int,
int)
411 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-,
uint,
uint)
412 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-,
float,
float)
413 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-,
double,
double)
415 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*,
uchar,
int)
416 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*,
char,
int)
417 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*,
ushort,
int)
418 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*,
short,
int)
419 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*,
int,
int)
420 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*,
uint,
uint)
421 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*,
float,
float)
422 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*,
double,
double)
424 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/,
uchar,
int)
425 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/,
char,
int)
426 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/,
ushort,
int)
427 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/,
short,
int)
428 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/,
int,
int)
429 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/,
uint,
uint)
430 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/,
float,
float)
431 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/,
double,
double)
433 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==,
uchar,
uchar)
434 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==,
char,
uchar)
435 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==,
ushort,
uchar)
436 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==,
short,
uchar)
437 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==,
int,
uchar)
438 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==,
uint,
uchar)
439 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==,
float,
uchar)
440 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==,
double,
uchar)
442 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=,
uchar,
uchar)
443 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=,
char,
uchar)
444 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=,
ushort,
uchar)
445 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=,
short,
uchar)
446 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=,
int,
uchar)
447 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=,
uint,
uchar)
448 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=,
float,
uchar)
449 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=,
double,
uchar)
451 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>,
uchar,
uchar)
452 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>,
char,
uchar)
454 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>,
short,
uchar)
455 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>,
int,
uchar)
456 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>,
uint,
uchar)
457 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>,
float,
uchar)
458 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>,
double,
uchar)
460 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<,
uchar,
uchar)
461 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<,
char,
uchar)
463 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<,
short,
uchar)
464 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<,
int,
uchar)
465 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<,
uint,
uchar)
466 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<,
float,
uchar)
467 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<,
double,
uchar)
469 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=,
uchar,
uchar)
470 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=,
char,
uchar)
471 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=,
ushort,
uchar)
472 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=,
short,
uchar)
473 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=,
int,
uchar)
474 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=,
uint,
uchar)
475 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=,
float,
uchar)
476 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=,
double,
uchar)
478 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=,
uchar,
uchar)
479 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=,
char,
uchar)
480 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=,
ushort,
uchar)
481 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=,
short,
uchar)
482 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=,
int,
uchar)
483 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=,
uint,
uchar)
484 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=,
float,
uchar)
485 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=,
double,
uchar)
487 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&,
uchar,
uchar)
488 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&,
char,
uchar)
489 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&,
ushort,
uchar)
490 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&,
short,
uchar)
491 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&,
int,
uchar)
492 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&,
uint,
uchar)
493 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&,
float,
uchar)
494 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&,
double,
uchar)
496 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||,
uchar,
uchar)
497 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||,
char,
uchar)
498 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||,
ushort,
uchar)
499 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||,
short,
uchar)
500 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||,
int,
uchar)
501 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||,
uint,
uchar)
502 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||,
float,
uchar)
503 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||,
double,
uchar)
505 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&,
uchar,
uchar)
506 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&,
char,
char)
508 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&,
short,
short)
509 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&,
int,
int)
510 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&,
uint,
uint)
512 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|,
uchar,
uchar)
513 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|,
char,
char)
515 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|,
short,
short)
516 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|,
int,
int)
517 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|,
uint,
uint)
519 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^,
uchar,
uchar)
520 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^,
char,
char)
522 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^,
short,
short)
523 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^,
int,
int)
524 CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^,
uint,
uint)
526 #undef CV_CUDEV_IMPLEMENT_VEC_BINARY_OP
530 #define CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(op, input_type, scalar_type, output_type) \
531 __device__ __forceinline__ output_type ## 1 operator op(const input_type ## 1 & a, scalar_type s) \
533 return VecTraits<output_type ## 1>::make(a.x op s); \
535 __device__ __forceinline__ output_type ## 1 operator op(scalar_type s, const input_type ## 1 & b) \
537 return VecTraits<output_type ## 1>::make(s op b.x); \
539 __device__ __forceinline__ output_type ## 2 operator op(const input_type ## 2 & a, scalar_type s) \
541 return VecTraits<output_type ## 2>::make(a.x op s, a.y op s); \
543 __device__ __forceinline__ output_type ## 2 operator op(scalar_type s, const input_type ## 2 & b) \
545 return VecTraits<output_type ## 2>::make(s op b.x, s op b.y); \
547 __device__ __forceinline__ output_type ## 3 operator op(const input_type ## 3 & a, scalar_type s) \
549 return VecTraits<output_type ## 3>::make(a.x op s, a.y op s, a.z op s); \
551 __device__ __forceinline__ output_type ## 3 operator op(scalar_type s, const input_type ## 3 & b) \
553 return VecTraits<output_type ## 3>::make(s op b.x, s op b.y, s op b.z); \
555 __device__ __forceinline__ output_type ## 4 operator op(const input_type ## 4 & a, scalar_type s) \
557 return VecTraits<output_type ## 4>::make(a.x op s, a.y op s, a.z op s, a.w op s); \
559 __device__ __forceinline__ output_type ## 4 operator op(scalar_type s, const input_type ## 4 & b) \
561 return VecTraits<output_type ## 4>::make(s op b.x, s op b.y, s op b.z, s op b.w); \
564 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
uchar,
int,
int)
565 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
uchar,
float,
float)
566 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
uchar,
double,
double)
567 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
char,
int,
int)
568 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
char,
float,
float)
569 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
char,
double,
double)
570 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
ushort,
int,
int)
571 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
ushort,
float,
float)
572 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
ushort,
double,
double)
573 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
short,
int,
int)
574 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
short,
float,
float)
575 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
short,
double,
double)
576 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
int,
int,
int)
577 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
int,
float,
float)
578 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
int,
double,
double)
579 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
uint,
uint,
uint)
580 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
uint,
float,
float)
581 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
uint,
double,
double)
582 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
float,
float,
float)
583 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
float,
double,
double)
584 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+,
double,
double,
double)
586 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
uchar,
int,
int)
587 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
uchar,
float,
float)
588 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
uchar,
double,
double)
589 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
char,
int,
int)
590 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
char,
float,
float)
591 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
char,
double,
double)
592 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
ushort,
int,
int)
593 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
ushort,
float,
float)
594 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
ushort,
double,
double)
595 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
short,
int,
int)
596 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
short,
float,
float)
597 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
short,
double,
double)
598 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
int,
int,
int)
599 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
int,
float,
float)
600 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
int,
double,
double)
601 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
uint,
uint,
uint)
602 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
uint,
float,
float)
603 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
uint,
double,
double)
604 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
float,
float,
float)
605 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
float,
double,
double)
606 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-,
double,
double,
double)
608 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
uchar,
int,
int)
609 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
uchar,
float,
float)
610 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
uchar,
double,
double)
611 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
char,
int,
int)
612 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
char,
float,
float)
613 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
char,
double,
double)
614 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
ushort,
int,
int)
615 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
ushort,
float,
float)
616 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
ushort,
double,
double)
617 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
short,
int,
int)
618 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
short,
float,
float)
619 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
short,
double,
double)
620 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
int,
int,
int)
621 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
int,
float,
float)
622 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
int,
double,
double)
623 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
uint,
uint,
uint)
624 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
uint,
float,
float)
625 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
uint,
double,
double)
626 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
float,
float,
float)
627 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
float,
double,
double)
628 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*,
double,
double,
double)
630 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
uchar,
int,
int)
631 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
uchar,
float,
float)
632 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
uchar,
double,
double)
633 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
char,
int,
int)
634 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
char,
float,
float)
635 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
char,
double,
double)
636 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
ushort,
int,
int)
637 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
ushort,
float,
float)
638 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
ushort,
double,
double)
639 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
short,
int,
int)
640 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
short,
float,
float)
641 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
short,
double,
double)
642 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
int,
int,
int)
643 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
int,
float,
float)
644 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
int,
double,
double)
645 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
uint,
uint,
uint)
646 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
uint,
float,
float)
647 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
uint,
double,
double)
648 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
float,
float,
float)
649 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
float,
double,
double)
650 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/,
double,
double,
double)
653 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==,
char,
char,
uchar)
655 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==,
short,
short,
uchar)
656 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==,
int,
int,
uchar)
658 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==,
float,
float,
uchar)
659 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==,
double,
double,
uchar)
662 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=,
char,
char,
uchar)
664 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=,
short,
short,
uchar)
665 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=,
int,
int,
uchar)
667 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=,
float,
float,
uchar)
668 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=,
double,
double,
uchar)
671 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>,
char,
char,
uchar)
673 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>,
short,
short,
uchar)
674 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>,
int,
int,
uchar)
676 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>,
float,
float,
uchar)
677 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>,
double,
double,
uchar)
680 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<,
char,
char,
uchar)
682 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<,
short,
short,
uchar)
683 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<,
int,
int,
uchar)
685 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<,
float,
float,
uchar)
686 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<,
double,
double,
uchar)
689 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=,
char,
char,
uchar)
691 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=,
short,
short,
uchar)
692 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=,
int,
int,
uchar)
694 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=,
float,
float,
uchar)
695 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=,
double,
double,
uchar)
698 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=,
char,
char,
uchar)
700 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=,
short,
short,
uchar)
701 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=,
int,
int,
uchar)
703 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=,
float,
float,
uchar)
704 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=,
double,
double,
uchar)
707 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&,
char,
char,
uchar)
709 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&,
short,
short,
uchar)
710 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&,
int,
int,
uchar)
712 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&,
float,
float,
uchar)
713 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&,
double,
double,
uchar)
716 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||,
char,
char,
uchar)
718 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||,
short,
short,
uchar)
719 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||,
int,
int,
uchar)
721 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||,
float,
float,
uchar)
722 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||,
double,
double,
uchar)
725 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&,
char,
char,
char)
727 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&,
short,
short,
short)
728 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&,
int,
int,
int)
729 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&,
uint,
uint,
uint)
732 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|,
char,
char,
char)
734 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|,
short,
short,
short)
735 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|,
int,
int,
int)
736 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|,
uint,
uint,
uint)
739 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^,
char,
char,
char)
741 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^,
short,
short,
short)
742 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^,
int,
int,
int)
743 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^,
uint,
uint,
uint)
745 #undef CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP
749 #define CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(func_name, func, input_type, output_type) \
750 __device__ __forceinline__ output_type ## 1 func_name(const input_type ## 1 & a, const input_type ## 1 & b) \
752 return VecTraits<output_type ## 1>::make(func (a.x, b.x)); \
754 __device__ __forceinline__ output_type ## 2 func_name(const input_type ## 2 & a, const input_type ## 2 & b) \
756 return VecTraits<output_type ## 2>::make(func (a.x, b.x), func (a.y, b.y)); \
758 __device__ __forceinline__ output_type ## 3 func_name(const input_type ## 3 & a, const input_type ## 3 & b) \
760 return VecTraits<output_type ## 3>::make(func (a.x, b.x), func (a.y, b.y), func (a.z, b.z)); \
762 __device__ __forceinline__ output_type ## 4 func_name(const input_type ## 4 & a, const input_type ## 4 & b) \
764 return VecTraits<output_type ## 4>::make(func (a.x, b.x), func (a.y, b.y), func (a.z, b.z), func (a.w, b.w)); \
768 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(
max, ::
max,
char,
char)
770 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(
max, ::
max,
short,
short)
772 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(
max, ::
max,
int,
int)
773 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(
max, ::fmaxf,
float,
float)
774 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(
max, ::fmax,
double,
double)
777 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(
min, ::
min,
char,
char)
779 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(
min, ::
min,
short,
short)
781 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(
min, ::
min,
int,
int)
782 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(
min, ::fminf,
float,
float)
783 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(
min, ::fmin,
double,
double)
785 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf,
uchar,
float)
786 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf,
char,
float)
787 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf,
ushort,
float)
788 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf,
short,
float)
789 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf,
uint,
float)
790 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf,
int,
float)
791 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf,
float,
float)
792 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypot,
double,
double)
794 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f,
uchar,
float)
795 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f,
char,
float)
796 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f,
ushort,
float)
797 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f,
short,
float)
798 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f,
uint,
float)
799 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f,
int,
float)
800 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f,
float,
float)
801 CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2,
double,
double)
803 #undef CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC
807 #define CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(func_name, func, input_type, scalar_type, output_type) \
808 __device__ __forceinline__ output_type ## 1 func_name(const input_type ## 1 & a, scalar_type s) \
810 return VecTraits<output_type ## 1>::make(func ((output_type) a.x, (output_type) s)); \
812 __device__ __forceinline__ output_type ## 1 func_name(scalar_type s, const input_type ## 1 & b) \
814 return VecTraits<output_type ## 1>::make(func ((output_type) s, (output_type) b.x)); \
816 __device__ __forceinline__ output_type ## 2 func_name(const input_type ## 2 & a, scalar_type s) \
818 return VecTraits<output_type ## 2>::make(func ((output_type) a.x, (output_type) s), func ((output_type) a.y, (output_type) s)); \
820 __device__ __forceinline__ output_type ## 2 func_name(scalar_type s, const input_type ## 2 & b) \
822 return VecTraits<output_type ## 2>::make(func ((output_type) s, (output_type) b.x), func ((output_type) s, (output_type) b.y)); \
824 __device__ __forceinline__ output_type ## 3 func_name(const input_type ## 3 & a, scalar_type s) \
826 return VecTraits<output_type ## 3>::make(func ((output_type) a.x, (output_type) s), func ((output_type) a.y, (output_type) s), func ((output_type) a.z, (output_type) s)); \
828 __device__ __forceinline__ output_type ## 3 func_name(scalar_type s, const input_type ## 3 & b) \
830 return VecTraits<output_type ## 3>::make(func ((output_type) s, (output_type) b.x), func ((output_type) s, (output_type) b.y), func ((output_type) s, (output_type) b.z)); \
832 __device__ __forceinline__ output_type ## 4 func_name(const input_type ## 4 & a, scalar_type s) \
834 return VecTraits<output_type ## 4>::make(func ((output_type) a.x, (output_type) s), func ((output_type) a.y, (output_type) s), func ((output_type) a.z, (output_type) s), func ((output_type) a.w, (output_type) s)); \
836 __device__ __forceinline__ output_type ## 4 func_name(scalar_type s, const input_type ## 4 & b) \
838 return VecTraits<output_type ## 4>::make(func ((output_type) s, (output_type) b.x), func ((output_type) s, (output_type) b.y), func ((output_type) s, (output_type) b.z), func ((output_type) s, (output_type) b.w)); \
842 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmaxf,
uchar,
float,
float)
843 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmax,
uchar,
double,
double)
844 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::
max,
char,
char,
char)
845 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmaxf,
char,
float,
float)
846 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmax,
char,
double,
double)
848 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmaxf,
ushort,
float,
float)
849 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmax,
ushort,
double,
double)
850 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::
max,
short,
short,
short)
851 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmaxf,
short,
float,
float)
852 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmax,
short,
double,
double)
854 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmaxf,
uint,
float,
float)
855 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmax,
uint,
double,
double)
856 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::
max,
int,
int,
int)
857 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmaxf,
int,
float,
float)
858 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmax,
int,
double,
double)
859 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmaxf,
float,
float,
float)
860 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmax,
float,
double,
double)
861 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
max, ::fmax,
double,
double,
double)
864 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fminf,
uchar,
float,
float)
865 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fmin,
uchar,
double,
double)
866 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::
min,
char,
char,
char)
867 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fminf,
char,
float,
float)
868 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fmin,
char,
double,
double)
870 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fminf,
ushort,
float,
float)
871 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fmin,
ushort,
double,
double)
872 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::
min,
short,
short,
short)
873 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fminf,
short,
float,
float)
874 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fmin,
short,
double,
double)
876 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fminf,
uint,
float,
float)
877 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fmin,
uint,
double,
double)
878 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::
min,
int,
int,
int)
879 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fminf,
int,
float,
float)
880 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fmin,
int,
double,
double)
881 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fminf,
float,
float,
float)
882 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fmin,
float,
double,
double)
883 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(
min, ::fmin,
double,
double,
double)
885 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf,
uchar,
float,
float)
886 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot,
uchar,
double,
double)
887 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf,
char,
float,
float)
888 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot,
char,
double,
double)
889 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf,
ushort,
float,
float)
890 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot,
ushort,
double,
double)
891 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf,
short,
float,
float)
892 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot,
short,
double,
double)
893 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf,
uint,
float,
float)
894 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot,
uint,
double,
double)
895 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf,
int,
float,
float)
896 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot,
int,
double,
double)
897 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf,
float,
float,
float)
898 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot,
float,
double,
double)
899 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot,
double,
double,
double)
901 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f,
uchar,
float,
float)
902 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2,
uchar,
double,
double)
903 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f,
char,
float,
float)
904 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2,
char,
double,
double)
905 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f,
ushort,
float,
float)
906 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2,
ushort,
double,
double)
907 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f,
short,
float,
float)
908 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2,
short,
double,
double)
909 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f,
uint,
float,
float)
910 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2,
uint,
double,
double)
911 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f,
int,
float,
float)
912 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2,
int,
double,
double)
913 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f,
float,
float,
float)
914 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2,
float,
double,
double)
915 CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2,
double,
double,
double)
917 #undef CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC
InputArrayOfArrays InputArrayOfArrays InputOutputArray InputOutputArray InputOutputArray InputOutputArray Size InputOutputArray InputOutputArray T
Definition: calib3d.hpp:1867
uint32_t uint
Definition: interface.h:42
unsigned char uchar
Definition: interface.h:51
unsigned short ushort
Definition: interface.h:52
softfloat max(const softfloat &a, const softfloat &b)
Definition: softfloat.hpp:440
softfloat min(const softfloat &a, const softfloat &b)
Min and Max functions.
Definition: softfloat.hpp:437
static _Tp saturate_cast(uchar v)
Template function for accurate conversion from one primitive type to another.
Definition: saturate.hpp:81
Quat< T > asinh(const Quat< T > &q)
Quat< T > tanh(const Quat< T > &q)
Quat< T > acosh(const Quat< T > &q)
Quat< T > acos(const Quat< T > &q)
Quat< T > tan(const Quat< T > &q)
Quat< T > sin(const Quat< T > &q)
Quat< T > atan(const Quat< T > &q)
Quat< T > asin(const Quat< T > &q)
Quat< T > sinh(const Quat< T > &q)
Quat< S > sqrt(const Quat< S > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
Quat< T > cosh(const Quat< T > &q)
Quat< T > atanh(const Quat< T > &q)
Quat< T > cos(const Quat< T > &q)
"black box" representation of the file storage associated with a file on disk.
Definition: calib3d.hpp:441
DualQuat< T > log(const DualQuat< T > &dq, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
Definition: dualquaternion.inl.hpp:344
DualQuat< T > exp(const DualQuat< T > &dq)
Definition: dualquaternion.inl.hpp:312
static uchar abs(uchar a)
Definition: cvstd.hpp:66