Private implementation helpers#
Detailed Description#
Function Documentation#
OPENCV_HAL_IMPL_MATH_FUNC()#
cv::OPENCV_HAL_IMPL_MATH_FUNC(
v_abs ,
(typename V_TypeTraits< _Tp >::abs_type) std::abs ,
typename V_TypeTraits< _Tp >::abs_type )
#include <opencv2/core/hal/intrin_cpp.hpp>
Sine \( sin(x) \) of elements.
Only for floating point types. Core implementation the same as v_sincos.
Cosine \( cos(x) \) of elements
Only for floating point types. Core implementation the same as v_sincos.
Absolute value of elements
Only for floating point types.
Helper macro
Helper macro
Choose min values for each pair
Scheme:
For all types except 64-bit integer.
Choose max values for each pair
Scheme:
For all types except 64-bit integer.
Find one min value
Scheme:
{A1 A2 A3 ...} => min(A1,A2,A3,...)
For all types except 64-bit integer and 64-bit floating point types.
Find one max value
Scheme:
{A1 A2 A3 ...} => max(A1,A2,A3,...)
For all types except 64-bit integer and 64-bit floating point types.
Macro Definition Documentation#
OPENCV_HAL_IMPL_ARITHM_OP#
#define OPENCV_HAL_IMPL_ARITHM_OP(func, bin_op, cast_op, _Tp2)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
Helper macro.
OPENCV_HAL_IMPL_C_INIT_VAL#
#define OPENCV_HAL_IMPL_C_INIT_VAL(_Tpvec, _Tp, prefix, suffix)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
inline _Tpvec prefix##_setall_##suffix(_Tp val) { return _Tpvec::all(val); } \
template <> inline _Tpvec v_setall_(_Tp val) { return _Tpvec::all(val); }
Helper macro.
OPENCV_HAL_IMPL_C_INIT_ZERO#
#define OPENCV_HAL_IMPL_C_INIT_ZERO(_Tpvec, prefix, suffix)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
inline _Tpvec prefix##_setzero_##suffix() { return _Tpvec::zero(); } \
template <> inline _Tpvec v_setzero_() { return _Tpvec::zero(); }
Helper macro.
OPENCV_HAL_IMPL_C_PACK#
#define OPENCV_HAL_IMPL_C_PACK(_Tp, _Tpn, pack_suffix, cast)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
Helper macro.
OPENCV_HAL_IMPL_C_PACK_STORE#
#define OPENCV_HAL_IMPL_C_PACK_STORE(_Tp, _Tpn, pack_suffix, cast)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
template<int n> inline void v_##pack_suffix##_store(_Tpn* ptr, const v_reg<_Tp, n>& a) \
{ \
for( int i = 0; i < n; i++ ) \
ptr[i] = cast<_Tpn>(a.s[i]); \
}
Helper macro.
OPENCV_HAL_IMPL_C_REINTERPRET#
#define OPENCV_HAL_IMPL_C_REINTERPRET(_Tp, suffix)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
Helper macro.
OPENCV_HAL_IMPL_C_RSHIFTR#
#define OPENCV_HAL_IMPL_C_RSHIFTR(_Tp)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
Helper macro.
OPENCV_HAL_IMPL_C_RSHR_PACK#
#define OPENCV_HAL_IMPL_C_RSHR_PACK(_Tp, _Tpn, pack_suffix, cast)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
template<int shift, int n> inline v_reg<_Tpn, 2*n> v_rshr_##pack_suffix(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \
{ \
v_reg<_Tpn, 2*n> c; \
for( int i = 0; i < n; i++ ) \
{ \
c.s[i] = cast<_Tpn>((a.s[i] + ((_Tp)1 << (shift - 1))) >> shift); \
c.s[i+n] = cast<_Tpn>((b.s[i] + ((_Tp)1 << (shift - 1))) >> shift); \
} \
return c; \
}
Helper macro.
OPENCV_HAL_IMPL_C_RSHR_PACK_STORE#
#define OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(_Tp, _Tpn, pack_suffix, cast)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
template<int shift, int n> inline void v_rshr_##pack_suffix##_store(_Tpn* ptr, const v_reg<_Tp, n>& a) \
{ \
for( int i = 0; i < n; i++ ) \
ptr[i] = cast<_Tpn>((a.s[i] + ((_Tp)1 << (shift - 1))) >> shift); \
}
Helper macro.
OPENCV_HAL_IMPL_C_SHIFTL#
#define OPENCV_HAL_IMPL_C_SHIFTL(_Tp)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
Helper macro.
OPENCV_HAL_IMPL_C_SHIFTR#
#define OPENCV_HAL_IMPL_C_SHIFTR(_Tp)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
Helper macro.
OPENCV_HAL_IMPL_CMP_OP#
#define OPENCV_HAL_IMPL_CMP_OP(cmp_op, func)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
template<typename _Tp, int n> \
inline v_reg<_Tp, n> func(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \
{ \
typedef typename V_TypeTraits<_Tp>::int_type itype; \
v_reg<_Tp, n> c; \
for( int i = 0; i < n; i++ ) \
c.s[i] = V_TypeTraits<_Tp>::reinterpret_from_int((itype)-(int)(a.s[i] cmp_op b.s[i])); \
return c; \
}
Helper macro.
OPENCV_HAL_IMPL_MATH_FUNC#
#define OPENCV_HAL_IMPL_MATH_FUNC(func, cfunc, _Tp2)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
Helper macro.
OPENCV_HAL_IMPL_ROTATE_SHIFT_OP#
#define OPENCV_HAL_IMPL_ROTATE_SHIFT_OP(suffix, opA, opB)
#include <opencv2/core/hal/intrin_cpp.hpp>
Bitwise shift left.
For 16-, 32- and 64-bit integer values.
Bitwise shift right
For 16-, 32- and 64-bit integer values.
Helper macro
OPENCV_HAL_IMPL_SHIFT_OP#
#define OPENCV_HAL_IMPL_SHIFT_OP(shift_op, func)
#include <opencv2/core/hal/intrin_cpp.hpp>
Value:
Helper macro.