namespace cv::cudev

namespace cudev {

// namespaces

namespace cv::cudev::functional_detail;
namespace cv::cudev::vec_math_detail;

// typedefs

typedef cv::cudev::color_cvt_detail::RGB5x52RGB<3, 0, 5> BGR555_to_BGR_func;
typedef cv::cudev::color_cvt_detail::RGB5x52RGB<4, 0, 5> BGR555_to_BGRA_func;
typedef cv::cudev::color_cvt_detail::RGB5x52Gray<5> BGR555_to_GRAY_func;
typedef cv::cudev::color_cvt_detail::RGB5x52RGB<3, 2, 5> BGR555_to_RGB_func;
typedef cv::cudev::color_cvt_detail::RGB5x52RGB<4, 2, 5> BGR555_to_RGBA_func;
typedef cv::cudev::color_cvt_detail::RGB5x52RGB<3, 0, 6> BGR565_to_BGR_func;
typedef cv::cudev::color_cvt_detail::RGB5x52RGB<4, 0, 6> BGR565_to_BGRA_func;
typedef cv::cudev::color_cvt_detail::RGB5x52Gray<6> BGR565_to_GRAY_func;
typedef cv::cudev::color_cvt_detail::RGB5x52RGB<3, 2, 6> BGR565_to_RGB_func;
typedef cv::cudev::color_cvt_detail::RGB5x52RGB<4, 2, 6> BGR565_to_RGBA_func;
typedef cv::cudev::color_cvt_detail::RGB2RGB5x5<3, 0, 5> BGR_to_BGR555_func;
typedef cv::cudev::color_cvt_detail::RGB2RGB5x5<3, 0, 6> BGR_to_BGR565_func;
typedef cv::cudev::color_cvt_detail::RGB2RGB5x5<4, 0, 5> BGRA_to_BGR555_func;
typedef cv::cudev::color_cvt_detail::RGB2RGB5x5<4, 0, 6> BGRA_to_BGR565_func;
typedef cv::cudev::color_cvt_detail::Gray2RGB5x5<5> GRAY_to_BGR555_func;
typedef cv::cudev::color_cvt_detail::Gray2RGB5x5<6> GRAY_to_BGR565_func;
typedef cv::cudev::color_cvt_detail::RGB2RGB5x5<3, 2, 5> RGB_to_BGR555_func;
typedef cv::cudev::color_cvt_detail::RGB2RGB5x5<3, 2, 6> RGB_to_BGR565_func;
typedef cv::cudev::color_cvt_detail::RGB2RGB5x5<4, 2, 5> RGBA_to_BGR555_func;
typedef cv::cudev::color_cvt_detail::RGB2RGB5x5<4, 2, 6> RGBA_to_BGR565_func;

// enums

enum
{
    LOG_WARP_SIZE = 5,
    WARP_SIZE     = 1 <<LOG_WARP_SIZE,
};

// structs

struct AffineMapPtr;
struct AffineMapPtrSz;

template <
    typename T,
    int COUNT
    >
struct ArrayWrapper;

template <typename T>
struct Avg;

template <typename SrcDepth>
struct BGRA_to_BGR_func;

template <typename SrcDepth>
struct BGRA_to_GRAY_func;

template <>
struct BGRA_to_HLS4_FULL_func<float>;

template <typename SrcDepth>
struct BGRA_to_HLS4_FULL_func;

template <typename SrcDepth>
struct BGRA_to_HLS4_func;

template <>
struct BGRA_to_HLS4_func<float>;

template <typename SrcDepth>
struct BGRA_to_HLS_FULL_func;

template <>
struct BGRA_to_HLS_FULL_func<float>;

template <typename SrcDepth>
struct BGRA_to_HLS_func;

template <>
struct BGRA_to_HLS_func<float>;

template <typename SrcDepth>
struct BGRA_to_HSV4_FULL_func;

template <>
struct BGRA_to_HSV4_FULL_func<float>;

template <>
struct BGRA_to_HSV4_func<float>;

template <typename SrcDepth>
struct BGRA_to_HSV4_func;

template <>
struct BGRA_to_HSV_FULL_func<float>;

template <typename SrcDepth>
struct BGRA_to_HSV_FULL_func;

template <typename SrcDepth>
struct BGRA_to_HSV_func;

template <>
struct BGRA_to_HSV_func<float>;

template <typename SrcDepth>
struct BGRA_to_Lab4_func;

template <typename SrcDepth>
struct BGRA_to_Lab_func;

template <typename SrcDepth>
struct BGRA_to_Luv4_func;

template <typename SrcDepth>
struct BGRA_to_Luv_func;

template <typename SrcDepth>
struct BGRA_to_RGBA_func;

template <typename SrcDepth>
struct BGRA_to_RGB_func;

template <typename SrcDepth>
struct BGRA_to_XYZ4_func;

template <typename SrcDepth>
struct BGRA_to_XYZ_func;

template <typename SrcDepth>
struct BGRA_to_YCrCb4_func;

template <typename SrcDepth>
struct BGRA_to_YCrCb_func;

template <typename SrcDepth>
struct BGRA_to_YUV4_func;

template <typename SrcDepth>
struct BGRA_to_YUV_func;

template <typename SrcDepth>
struct BGR_to_BGRA_func;

template <typename SrcDepth>
struct BGR_to_GRAY_func;

template <typename SrcDepth>
struct BGR_to_HLS4_FULL_func;

template <>
struct BGR_to_HLS4_FULL_func<float>;

template <>
struct BGR_to_HLS4_func<float>;

template <typename SrcDepth>
struct BGR_to_HLS4_func;

template <typename SrcDepth>
struct BGR_to_HLS_FULL_func;

template <>
struct BGR_to_HLS_FULL_func<float>;

template <>
struct BGR_to_HLS_func<float>;

template <typename SrcDepth>
struct BGR_to_HLS_func;

template <>
struct BGR_to_HSV4_FULL_func<float>;

template <typename SrcDepth>
struct BGR_to_HSV4_FULL_func;

template <>
struct BGR_to_HSV4_func<float>;

template <typename SrcDepth>
struct BGR_to_HSV4_func;

template <>
struct BGR_to_HSV_FULL_func<float>;

template <typename SrcDepth>
struct BGR_to_HSV_FULL_func;

template <>
struct BGR_to_HSV_func<float>;

template <typename SrcDepth>
struct BGR_to_HSV_func;

template <typename SrcDepth>
struct BGR_to_Lab4_func;

template <typename SrcDepth>
struct BGR_to_Lab_func;

template <typename SrcDepth>
struct BGR_to_Luv4_func;

template <typename SrcDepth>
struct BGR_to_Luv_func;

template <typename SrcDepth>
struct BGR_to_RGBA_func;

template <typename SrcDepth>
struct BGR_to_RGB_func;

template <typename SrcDepth>
struct BGR_to_XYZ4_func;

template <typename SrcDepth>
struct BGR_to_XYZ_func;

template <typename SrcDepth>
struct BGR_to_YCrCb4_func;

template <typename SrcDepth>
struct BGR_to_YCrCb_func;

template <typename SrcDepth>
struct BGR_to_YUV4_func;

template <typename SrcDepth>
struct BGR_to_YUV_func;

template <class Predicate>
struct BinaryNegate;

template <
    class Src1Ptr,
    class Src2Ptr,
    class Op
    >
struct BinaryTransformPtr;

template <
    class Src1Ptr,
    class Src2Ptr,
    class Op
    >
struct BinaryTransformPtrSz;

template <
    class Op,
    int n0,
    int n1
    >
struct BinaryTupleAdapter;

template <class Op>
struct Binder1st;

template <class Op>
struct Binder2nd;

struct Block;

template <
    class BrdImpl,
    class SrcPtr
    >
struct BrdBase;

template <class SrcPtr>
struct BrdConstant;

struct BrdReflect;
struct BrdReflect101;
struct BrdReplicate;
struct BrdWrap;

template <typename SrcPtr>
struct CommonAreaInterPtr;

template <class SrcPtr>
struct CommonAreaInterPtrSz;

template <typename T>
struct ConstantPtr;

template <typename T>
struct ConstantPtrSz;

template <
    class Tuple,
    template< typename T > class CvtOp
    >
struct ConvertTuple;

template <class SrcPtr>
struct CountNonZeroExprBody;

template <typename SrcPtr>
struct CubicInterPtr;

template <class SrcPtr>
struct CubicInterPtrSz;

struct DefaultCopyPolicy;
struct DefaultGlobReducePolicy;
struct DefaultHistogramPolicy;
struct DefaultReduceToVecPolicy;
struct DefaultSplitMergePolicy;
struct DefaultTransformPolicy;
struct DefaultTransposePolicy;

template <class SrcPtr>
struct DerivXPtr;

template <class SrcPtr>
struct DerivXPtrSz;

template <class SrcPtr>
struct DerivYPtr;

template <class SrcPtr>
struct DerivYPtrSz;

template <
    bool,
    typename T = void
    >
struct DisableIf;

template <typename T>
struct DisableIf<false, T>;

template <class T>
struct DynamicSharedMem;

template <>
struct DynamicSharedMem<double>;

template <
    bool,
    typename T = void
    >
struct EnableIf;

template <typename T>
struct EnableIf<true, T>;

template <class Body>
struct Expr;

template <class SrcPtr>
struct FindMaxValExprBody;

template <class SrcPtr>
struct FindMinMaxValExprBody;

template <class SrcPtr>
struct FindMinValExprBody;

template <typename SrcDepth>
struct GRAY_to_BGRA_func;

template <typename SrcDepth>
struct GRAY_to_BGR_func;

template <typename T>
struct GlobPtr;

template <typename T>
struct GlobPtrSz;

template <>
struct HLS4_to_BGRA_FULL_func<float>;

template <typename SrcDepth>
struct HLS4_to_BGRA_FULL_func;

template <typename SrcDepth>
struct HLS4_to_BGRA_func;

template <>
struct HLS4_to_BGRA_func<float>;

template <>
struct HLS4_to_BGR_FULL_func<float>;

template <typename SrcDepth>
struct HLS4_to_BGR_FULL_func;

template <>
struct HLS4_to_BGR_func<float>;

template <typename SrcDepth>
struct HLS4_to_BGR_func;

template <>
struct HLS4_to_RGBA_FULL_func<float>;

template <typename SrcDepth>
struct HLS4_to_RGBA_FULL_func;

template <>
struct HLS4_to_RGBA_func<float>;

template <typename SrcDepth>
struct HLS4_to_RGBA_func;

template <typename SrcDepth>
struct HLS4_to_RGB_FULL_func;

template <>
struct HLS4_to_RGB_FULL_func<float>;

template <>
struct HLS4_to_RGB_func<float>;

template <typename SrcDepth>
struct HLS4_to_RGB_func;

template <>
struct HLS_to_BGRA_FULL_func<float>;

template <typename SrcDepth>
struct HLS_to_BGRA_FULL_func;

template <>
struct HLS_to_BGRA_func<float>;

template <typename SrcDepth>
struct HLS_to_BGRA_func;

template <typename SrcDepth>
struct HLS_to_BGR_FULL_func;

template <>
struct HLS_to_BGR_FULL_func<float>;

template <>
struct HLS_to_BGR_func<float>;

template <typename SrcDepth>
struct HLS_to_BGR_func;

template <>
struct HLS_to_RGBA_FULL_func<float>;

template <typename SrcDepth>
struct HLS_to_RGBA_FULL_func;

template <>
struct HLS_to_RGBA_func<float>;

template <typename SrcDepth>
struct HLS_to_RGBA_func;

template <>
struct HLS_to_RGB_FULL_func<float>;

template <typename SrcDepth>
struct HLS_to_RGB_FULL_func;

template <typename SrcDepth>
struct HLS_to_RGB_func;

template <>
struct HLS_to_RGB_func<float>;

template <typename SrcDepth>
struct HSV4_to_BGRA_FULL_func;

template <>
struct HSV4_to_BGRA_FULL_func<float>;

template <>
struct HSV4_to_BGRA_func<float>;

template <typename SrcDepth>
struct HSV4_to_BGRA_func;

template <>
struct HSV4_to_BGR_FULL_func<float>;

template <typename SrcDepth>
struct HSV4_to_BGR_FULL_func;

template <typename SrcDepth>
struct HSV4_to_BGR_func;

template <>
struct HSV4_to_BGR_func<float>;

template <>
struct HSV4_to_RGBA_FULL_func<float>;

template <typename SrcDepth>
struct HSV4_to_RGBA_FULL_func;

template <typename SrcDepth>
struct HSV4_to_RGBA_func;

template <>
struct HSV4_to_RGBA_func<float>;

template <>
struct HSV4_to_RGB_FULL_func<float>;

template <typename SrcDepth>
struct HSV4_to_RGB_FULL_func;

template <>
struct HSV4_to_RGB_func<float>;

template <typename SrcDepth>
struct HSV4_to_RGB_func;

template <>
struct HSV_to_BGRA_FULL_func<float>;

template <typename SrcDepth>
struct HSV_to_BGRA_FULL_func;

template <typename SrcDepth>
struct HSV_to_BGRA_func;

template <>
struct HSV_to_BGRA_func<float>;

template <>
struct HSV_to_BGR_FULL_func<float>;

template <typename SrcDepth>
struct HSV_to_BGR_FULL_func;

template <typename SrcDepth>
struct HSV_to_BGR_func;

template <>
struct HSV_to_BGR_func<float>;

template <>
struct HSV_to_RGBA_FULL_func<float>;

template <typename SrcDepth>
struct HSV_to_RGBA_FULL_func;

template <typename SrcDepth>
struct HSV_to_RGBA_func;

template <>
struct HSV_to_RGBA_func<float>;

template <>
struct HSV_to_RGB_FULL_func<float>;

template <typename SrcDepth>
struct HSV_to_RGB_FULL_func;

template <typename SrcDepth>
struct HSV_to_RGB_func;

template <>
struct HSV_to_RGB_func<float>;

template <
    int BIN_COUNT,
    class SrcPtr
    >
struct HistogramBody;

template <int A>
struct Int2Type;

template <typename SrcPtr>
struct IntegerAreaInterPtr;

template <class SrcPtr>
struct IntegerAreaInterPtrSz;

template <class SrcPtr>
struct IntegralBody;

template <typename F>
struct IsBinaryFunction;

template <int N>
struct IsPowerOf2;

template <typename F>
struct IsUnaryFunction;

template <typename SrcDepth>
struct LBGRA_to_Lab4_func;

template <typename SrcDepth>
struct LBGRA_to_Lab_func;

template <typename SrcDepth>
struct LBGRA_to_Luv4_func;

template <typename SrcDepth>
struct LBGRA_to_Luv_func;

template <typename SrcDepth>
struct LBGR_to_Lab4_func;

template <typename SrcDepth>
struct LBGR_to_Lab_func;

template <typename SrcDepth>
struct LBGR_to_Luv4_func;

template <typename SrcDepth>
struct LBGR_to_Luv_func;

template <typename SrcDepth>
struct LRGBA_to_Lab4_func;

template <typename SrcDepth>
struct LRGBA_to_Lab_func;

template <typename SrcDepth>
struct LRGBA_to_Luv4_func;

template <typename SrcDepth>
struct LRGBA_to_Luv_func;

template <typename SrcDepth>
struct LRGB_to_Lab4_func;

template <typename SrcDepth>
struct LRGB_to_Lab_func;

template <typename SrcDepth>
struct LRGB_to_Luv4_func;

template <typename SrcDepth>
struct LRGB_to_Luv_func;

template <typename SrcDepth>
struct Lab4_to_BGRA_func;

template <typename SrcDepth>
struct Lab4_to_BGR_func;

template <typename SrcDepth>
struct Lab4_to_LBGRA_func;

template <typename SrcDepth>
struct Lab4_to_LBGR_func;

template <typename SrcDepth>
struct Lab4_to_LRGBA_func;

template <typename SrcDepth>
struct Lab4_to_LRGB_func;

template <typename SrcDepth>
struct Lab4_to_RGBA_func;

template <typename SrcDepth>
struct Lab4_to_RGB_func;

template <typename SrcDepth>
struct Lab_to_BGRA_func;

template <typename SrcDepth>
struct Lab_to_BGR_func;

template <typename SrcDepth>
struct Lab_to_LBGRA_func;

template <typename SrcDepth>
struct Lab_to_LBGR_func;

template <typename SrcDepth>
struct Lab_to_LRGBA_func;

template <typename SrcDepth>
struct Lab_to_LRGB_func;

template <typename SrcDepth>
struct Lab_to_RGBA_func;

template <typename SrcDepth>
struct Lab_to_RGB_func;

template <class SrcPtr>
struct LaplacianPtr<1, SrcPtr>;

template <
    int ksize,
    class SrcPtr
    >
struct LaplacianPtr;

template <class SrcPtr>
struct LaplacianPtr<3, SrcPtr>;

template <
    int ksize,
    class SrcPtr
    >
struct LaplacianPtrSz;

template <
    typename A,
    typename B
    >
struct LargerType;

template <typename SrcPtr>
struct LinearInterPtr;

template <class SrcPtr>
struct LinearInterPtrSz;

template <
    int N,
    int CURRENT_VAL = N,
    int COUNT = 0
    >
struct Log2;

template <
    int N,
    int COUNT
    >
struct Log2<N, 0, COUNT>;

template <
    class SrcPtr,
    class TablePtr
    >
struct LutPtr;

template <
    class SrcPtr,
    class TablePtr
    >
struct LutPtrSz;

template <typename SrcDepth>
struct Luv4_to_BGRA_func;

template <typename SrcDepth>
struct Luv4_to_BGR_func;

template <typename SrcDepth>
struct Luv4_to_LBGRA_func;

template <typename SrcDepth>
struct Luv4_to_LBGR_func;

template <typename SrcDepth>
struct Luv4_to_LRGBA_func;

template <typename SrcDepth>
struct Luv4_to_LRGB_func;

template <typename SrcDepth>
struct Luv4_to_RGBA_func;

template <typename SrcDepth>
struct Luv4_to_RGB_func;

template <typename SrcDepth>
struct Luv_to_BGRA_func;

template <typename SrcDepth>
struct Luv_to_BGR_func;

template <typename SrcDepth>
struct Luv_to_LBGRA_func;

template <typename SrcDepth>
struct Luv_to_LBGR_func;

template <typename SrcDepth>
struct Luv_to_LRGBA_func;

template <typename SrcDepth>
struct Luv_to_LRGB_func;

template <typename SrcDepth>
struct Luv_to_RGBA_func;

template <typename SrcDepth>
struct Luv_to_RGB_func;

template <>
struct MakeVec<double, 4>;

template <>
struct MakeVec<ushort, 2>;

template <>
struct MakeVec<ushort, 1>;

template <>
struct MakeVec<uint, 3>;

template <>
struct MakeVec<ushort, 3>;

template <>
struct MakeVec<uint, 4>;

template <>
struct MakeVec<ushort, 4>;

template <>
struct MakeVec<bool, 4>;

template <>
struct MakeVec<uint, 2>;

template <
    typename T,
    int CN
    >
struct MakeVec;

template <>
struct MakeVec<double, 3>;

template <>
struct MakeVec<bool, 1>;

template <>
struct MakeVec<bool, 3>;

template <>
struct MakeVec<bool, 2>;

template <>
struct MakeVec<double, 1>;

template <>
struct MakeVec<uint, 1>;

template <>
struct MakeVec<uchar, 3>;

template <>
struct MakeVec<schar, 1>;

template <>
struct MakeVec<float, 4>;

template <>
struct MakeVec<float, 2>;

template <>
struct MakeVec<float, 1>;

template <>
struct MakeVec<schar, 2>;

template <>
struct MakeVec<schar, 4>;

template <>
struct MakeVec<schar, 3>;

template <>
struct MakeVec<uchar, 4>;

template <>
struct MakeVec<double, 2>;

template <>
struct MakeVec<float, 3>;

template <>
struct MakeVec<uchar, 1>;

template <>
struct MakeVec<short, 2>;

template <>
struct MakeVec<short, 3>;

template <>
struct MakeVec<short, 1>;

template <>
struct MakeVec<uchar, 2>;

template <>
struct MakeVec<short, 4>;

template <typename T>
struct Max;

template <typename T>
struct Min;

template <class SrcPtr>
struct NearestInterPtr;

template <class SrcPtr>
struct NearestInterPtrSz;

struct NormHamming;

template <typename T>
struct NormL1;

template <>
struct NormL1<float>;

struct NormL2;
struct NullType;
struct PerspectiveMapPtr;
struct PerspectiveMapPtrSz;

template <
    class SrcPtr,
    class MapXPtr,
    class MapYPtr
    >
struct PtrTraits<RemapPtr2Sz<SrcPtr, MapXPtr, MapYPtr>>;

template <class Body>
struct PtrTraits<Expr<Body>>;

template <
    class SrcPtr,
    class Op
    >
struct PtrTraits<UnaryTransformPtrSz<SrcPtr, Op>>;

template <class PtrTuple>
struct PtrTraits<ZipPtrSz<PtrTuple>>;

template <typename T>
struct PtrTraits<Texture<T>>;

template <class SrcPtr>
struct PtrTraits<DerivYPtrSz<SrcPtr>>;

template <class SrcPtr>
struct PtrTraits<CubicInterPtrSz<SrcPtr>>;

template <class Ptr2DSz>
struct PtrTraits;

template <class SrcPtr>
struct PtrTraits<DerivXPtrSz<SrcPtr>>;

template <class SrcPtr>
struct PtrTraits<CommonAreaInterPtrSz<SrcPtr>>;

template <typename T>
struct PtrTraits<ConstantPtrSz<T>>;

template <
    class SrcPtr,
    class MapPtr
    >
struct PtrTraits<RemapPtr1Sz<SrcPtr, MapPtr>>;

template <class SrcPtr>
struct PtrTraits<SobelYPtrSz<SrcPtr>>;

template <class MaskPtr>
struct PtrTraits<SingleMaskChannelsSz<MaskPtr>>;

template <
    class SrcPtr,
    class TablePtr
    >
struct PtrTraits<LutPtrSz<SrcPtr, TablePtr>>;

template <class SrcPtr>
struct PtrTraits<LinearInterPtrSz<SrcPtr>>;

template <class SrcPtr>
struct PtrTraits<NearestInterPtrSz<SrcPtr>>;

template <>
struct PtrTraits<PerspectiveMapPtrSz>;

template <class SrcPtr>
struct PtrTraits<SobelXPtrSz<SrcPtr>>;

template <
    int ksize,
    class SrcPtr
    >
struct PtrTraits<LaplacianPtrSz<ksize, SrcPtr>>;

template <typename T>
struct PtrTraits<GpuMat_<T>>;

template <class SrcPtr>
struct PtrTraits<ScharrYPtrSz<SrcPtr>>;

template <class SrcPtr>
struct PtrTraits<IntegerAreaInterPtrSz<SrcPtr>>;

template <class SrcPtr>
struct PtrTraits<ScharrXPtrSz<SrcPtr>>;

template <typename T>
struct PtrTraits<GlobPtrSz<T>>;

template <class SrcPtr>
struct PtrTraits<ResizePtrSz<SrcPtr>>;

template <
    class Src1Ptr,
    class Src2Ptr,
    class Op
    >
struct PtrTraits<BinaryTransformPtrSz<Src1Ptr, Src2Ptr, Op>>;

template <>
struct PtrTraits<AffineMapPtrSz>;

template <
    class Ptr2DSz,
    class Ptr2D
    >
struct PtrTraitsBase;

template <class SrcPtr>
struct PyrDownBody;

template <class SrcPtr>
struct PyrUpBody;

template <typename SrcDepth>
struct RGBA_to_GRAY_func;

template <typename SrcDepth>
struct RGBA_to_HLS4_FULL_func;

template <>
struct RGBA_to_HLS4_FULL_func<float>;

template <typename SrcDepth>
struct RGBA_to_HLS4_func;

template <>
struct RGBA_to_HLS4_func<float>;

template <typename SrcDepth>
struct RGBA_to_HLS_FULL_func;

template <>
struct RGBA_to_HLS_FULL_func<float>;

template <typename SrcDepth>
struct RGBA_to_HLS_func;

template <>
struct RGBA_to_HLS_func<float>;

template <>
struct RGBA_to_HSV4_FULL_func<float>;

template <typename SrcDepth>
struct RGBA_to_HSV4_FULL_func;

template <>
struct RGBA_to_HSV4_func<float>;

template <typename SrcDepth>
struct RGBA_to_HSV4_func;

template <typename SrcDepth>
struct RGBA_to_HSV_FULL_func;

template <>
struct RGBA_to_HSV_FULL_func<float>;

template <typename SrcDepth>
struct RGBA_to_HSV_func;

template <>
struct RGBA_to_HSV_func<float>;

template <typename SrcDepth>
struct RGBA_to_Lab4_func;

template <typename SrcDepth>
struct RGBA_to_Lab_func;

template <typename SrcDepth>
struct RGBA_to_Luv4_func;

template <typename SrcDepth>
struct RGBA_to_Luv_func;

template <typename SrcDepth>
struct RGBA_to_XYZ4_func;

template <typename SrcDepth>
struct RGBA_to_XYZ_func;

template <typename SrcDepth>
struct RGBA_to_YCrCb4_func;

template <typename SrcDepth>
struct RGBA_to_YCrCb_func;

template <typename SrcDepth>
struct RGBA_to_YUV4_func;

template <typename SrcDepth>
struct RGBA_to_YUV_func;

template <typename SrcDepth>
struct RGB_to_GRAY_func;

template <>
struct RGB_to_HLS4_FULL_func<float>;

template <typename SrcDepth>
struct RGB_to_HLS4_FULL_func;

template <typename SrcDepth>
struct RGB_to_HLS4_func;

template <>
struct RGB_to_HLS4_func<float>;

template <>
struct RGB_to_HLS_FULL_func<float>;

template <typename SrcDepth>
struct RGB_to_HLS_FULL_func;

template <>
struct RGB_to_HLS_func<float>;

template <typename SrcDepth>
struct RGB_to_HLS_func;

template <>
struct RGB_to_HSV4_FULL_func<float>;

template <typename SrcDepth>
struct RGB_to_HSV4_FULL_func;

template <>
struct RGB_to_HSV4_func<float>;

template <typename SrcDepth>
struct RGB_to_HSV4_func;

template <typename SrcDepth>
struct RGB_to_HSV_FULL_func;

template <>
struct RGB_to_HSV_FULL_func<float>;

template <>
struct RGB_to_HSV_func<float>;

template <typename SrcDepth>
struct RGB_to_HSV_func;

template <typename SrcDepth>
struct RGB_to_Lab4_func;

template <typename SrcDepth>
struct RGB_to_Lab_func;

template <typename SrcDepth>
struct RGB_to_Luv4_func;

template <typename SrcDepth>
struct RGB_to_Luv_func;

template <typename SrcDepth>
struct RGB_to_XYZ4_func;

template <typename SrcDepth>
struct RGB_to_XYZ_func;

template <typename SrcDepth>
struct RGB_to_YCrCb4_func;

template <typename SrcDepth>
struct RGB_to_YCrCb_func;

template <typename SrcDepth>
struct RGB_to_YUV4_func;

template <typename SrcDepth>
struct RGB_to_YUV_func;

template <
    class Reductor,
    class SrcPtr
    >
struct ReduceToColumnBody;

template <
    class Reductor,
    class SrcPtr
    >
struct ReduceToRowBody;

template <
    class SrcPtr,
    class MapPtr
    >
struct RemapPtr1;

template <
    class SrcPtr,
    class MapPtr
    >
struct RemapPtr1Sz;

template <
    class SrcPtr,
    class MapXPtr,
    class MapYPtr
    >
struct RemapPtr2;

template <
    class SrcPtr,
    class MapXPtr,
    class MapYPtr
    >
struct RemapPtr2Sz;

template <class SrcPtr>
struct ResizePtr;

template <class SrcPtr>
struct ResizePtrSz;

template <class SrcPtr>
struct ScharrXPtr;

template <class SrcPtr>
struct ScharrXPtrSz;

template <class SrcPtr>
struct ScharrYPtr;

template <class SrcPtr>
struct ScharrYPtrSz;

template <
    bool,
    typename ThenType,
    typename ElseType
    >
struct SelectIf;

template <
    typename ThenType,
    typename ElseType
    >
struct SelectIf<false, ThenType, ElseType>;

template <class MaskPtr>
struct SingleMaskChannels;

template <class MaskPtr>
struct SingleMaskChannelsSz;

template <class SrcPtr>
struct SobelXPtr;

template <class SrcPtr>
struct SobelXPtrSz;

template <class SrcPtr>
struct SobelYPtr;

template <class SrcPtr>
struct SobelYPtrSz;

template <typename T>
struct Sum;

template <class SrcPtr>
struct SumExprBody;

template <typename T>
struct Texture;

template <typename T>
struct TexturePtr;

template <typename T>
struct ThreshBinaryFunc;

template <typename T>
struct ThreshBinaryInvFunc;

template <typename T>
struct ThreshToZeroFunc;

template <typename T>
struct ThreshToZeroInvFunc;

template <typename T>
struct ThreshTruncFunc;

template <class SrcPtr>
struct TransposeBody;

template <
    typename P0,
    typename P1,
    typename P2,
    typename P3,
    typename P4,
    typename P5,
    typename P6,
    typename P7,
    typename P8,
    typename P9
    >
struct TupleTraits<tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>>;

template <typename T>
struct TupleTraits;

template <typename T>
struct TypeTraits;

template <typename A>
struct TypesEquals<A, A>;

template <
    typename A,
    typename B
    >
struct TypesEquals;

template <class Predicate>
struct UnaryNegate;

template <
    class SrcPtr,
    class Op
    >
struct UnaryTransformPtr;

template <
    class SrcPtr,
    class Op
    >
struct UnaryTransformPtrSz;

template <
    class Op,
    int n
    >
struct UnaryTupleAdapter;

template <>
struct VecTraits<char4>;

template <>
struct VecTraits<double4>;

template <>
struct VecTraits<char3>;

template <>
struct VecTraits<char2>;

template <>
struct VecTraits<double>;

template <>
struct VecTraits<double2>;

template <>
struct VecTraits<double1>;

template <>
struct VecTraits<uint1>;

template <>
struct VecTraits<uint2>;

template <>
struct VecTraits<uint>;

template <>
struct VecTraits<char1>;

template <>
struct VecTraits<uint3>;

template <>
struct VecTraits<ushort3>;

template <>
struct VecTraits<ushort4>;

template <typename T>
struct VecTraits;

template <>
struct VecTraits<ushort2>;

template <>
struct VecTraits<ushort>;

template <>
struct VecTraits<ushort1>;

template <>
struct VecTraits<double3>;

template <>
struct VecTraits<uchar4>;

template <>
struct VecTraits<uint4>;

template <>
struct VecTraits<uchar2>;

template <>
struct VecTraits<float4>;

template <>
struct VecTraits<int1>;

template <>
struct VecTraits<uchar3>;

template <>
struct VecTraits<int3>;

template <>
struct VecTraits<float3>;

template <>
struct VecTraits<float1>;

template <>
struct VecTraits<float2>;

template <>
struct VecTraits<float>;

template <>
struct VecTraits<int4>;

template <>
struct VecTraits<int2>;

template <>
struct VecTraits<short4>;

template <>
struct VecTraits<uchar>;

template <>
struct VecTraits<uchar1>;

template <>
struct VecTraits<schar>;

template <>
struct VecTraits<short3>;

template <>
struct VecTraits<short2>;

template <>
struct VecTraits<short1>;

template <>
struct VecTraits<short>;

struct Warp;
struct WithOutMask;

template <typename SrcDepth>
struct XYZ4_to_BGRA_func;

template <typename SrcDepth>
struct XYZ4_to_BGR_func;

template <typename SrcDepth>
struct XYZ4_to_RGBA_func;

template <typename SrcDepth>
struct XYZ4_to_RGB_func;

template <typename SrcDepth>
struct XYZ_to_BGRA_func;

template <typename SrcDepth>
struct XYZ_to_BGR_func;

template <typename SrcDepth>
struct XYZ_to_RGBA_func;

template <typename SrcDepth>
struct XYZ_to_RGB_func;

template <typename SrcDepth>
struct YCrCb4_to_BGRA_func;

template <typename SrcDepth>
struct YCrCb4_to_BGR_func;

template <typename SrcDepth>
struct YCrCb4_to_RGBA_func;

template <typename SrcDepth>
struct YCrCb4_to_RGB_func;

template <typename SrcDepth>
struct YCrCb_to_BGRA_func;

template <typename SrcDepth>
struct YCrCb_to_BGR_func;

template <typename SrcDepth>
struct YCrCb_to_RGBA_func;

template <typename SrcDepth>
struct YCrCb_to_RGB_func;

template <typename SrcDepth>
struct YUV4_to_BGRA_func;

template <typename SrcDepth>
struct YUV4_to_BGR_func;

template <typename SrcDepth>
struct YUV4_to_RGBA_func;

template <typename SrcDepth>
struct YUV4_to_RGB_func;

template <typename SrcDepth>
struct YUV_to_BGRA_func;

template <typename SrcDepth>
struct YUV_to_BGR_func;

template <typename SrcDepth>
struct YUV_to_RGBA_func;

template <typename SrcDepth>
struct YUV_to_RGB_func;

template <
    class Ptr0,
    class Ptr1,
    class Ptr2
    >
struct ZipPtr<tuple<Ptr0, Ptr1, Ptr2>>;

template <
    class Ptr0,
    class Ptr1
    >
struct ZipPtr<tuple<Ptr0, Ptr1>>;

template <
    class Ptr0,
    class Ptr1,
    class Ptr2,
    class Ptr3
    >
struct ZipPtr<tuple<Ptr0, Ptr1, Ptr2, Ptr3>>;

template <class PtrTuple>
struct ZipPtr;

template <class PtrTuple>
struct ZipPtrSz;

template <typename T>
struct abs_func;

template <>
struct abs_func<uchar>;

template <>
struct abs_func<short>;

template <>
struct abs_func<ushort>;

template <>
struct abs_func<schar>;

template <>
struct abs_func<double>;

template <>
struct abs_func<float>;

template <>
struct abs_func<uint>;

template <typename T>
struct absdiff_func;

template <>
struct acos_func<uint>;

template <>
struct acos_func<short>;

template <>
struct acos_func<uchar>;

template <>
struct acos_func<schar>;

template <>
struct acos_func<double>;

template <>
struct acos_func<ushort>;

template <typename T>
struct acos_func;

template <>
struct acos_func<float>;

template <>
struct acosh_func<uint>;

template <>
struct acosh_func<ushort>;

template <>
struct acosh_func<short>;

template <>
struct acosh_func<uchar>;

template <>
struct acosh_func<schar>;

template <typename T>
struct acosh_func;

template <>
struct acosh_func<float>;

template <>
struct acosh_func<double>;

template <>
struct asin_func<uint>;

template <>
struct asin_func<ushort>;

template <>
struct asin_func<uchar>;

template <>
struct asin_func<short>;

template <>
struct asin_func<schar>;

template <>
struct asin_func<float>;

template <typename T>
struct asin_func;

template <>
struct asin_func<double>;

template <>
struct asinh_func<uchar>;

template <>
struct asinh_func<short>;

template <>
struct asinh_func<ushort>;

template <>
struct asinh_func<schar>;

template <>
struct asinh_func<uint>;

template <>
struct asinh_func<double>;

template <typename T>
struct asinh_func;

template <>
struct asinh_func<float>;

template <>
struct atan2_func<uchar>;

template <>
struct atan2_func<short>;

template <>
struct atan2_func<ushort>;

template <>
struct atan2_func<schar>;

template <>
struct atan2_func<uint>;

template <>
struct atan2_func<double>;

template <>
struct atan2_func<float>;

template <typename T>
struct atan2_func;

template <>
struct atan_func<uint>;

template <>
struct atan_func<uchar>;

template <>
struct atan_func<short>;

template <>
struct atan_func<schar>;

template <>
struct atan_func<ushort>;

template <>
struct atan_func<double>;

template <typename T>
struct atan_func;

template <>
struct atan_func<float>;

template <>
struct atanh_func<short>;

template <typename T>
struct atanh_func;

template <>
struct atanh_func<ushort>;

template <>
struct atanh_func<schar>;

template <>
struct atanh_func<float>;

template <>
struct atanh_func<uchar>;

template <>
struct atanh_func<double>;

template <>
struct atanh_func<uint>;

template <
    typename _Arg1,
    typename _Arg2,
    typename _Result
    >
struct binary_function;

template <typename T>
struct bit_and;

template <typename T>
struct bit_lshift;

template <typename T>
struct bit_not;

template <typename T>
struct bit_or;

template <typename T>
struct bit_rshift;

template <typename T>
struct bit_xor;

template <>
struct cos_func<short>;

template <>
struct cos_func<schar>;

template <typename T>
struct cos_func;

template <>
struct cos_func<float>;

template <>
struct cos_func<double>;

template <>
struct cos_func<uchar>;

template <>
struct cos_func<uint>;

template <>
struct cos_func<ushort>;

template <>
struct cosh_func<uint>;

template <>
struct cosh_func<float>;

template <>
struct cosh_func<double>;

template <>
struct cosh_func<schar>;

template <>
struct cosh_func<ushort>;

template <typename T>
struct cosh_func;

template <>
struct cosh_func<uchar>;

template <>
struct cosh_func<short>;

template <
    typename T,
    bool angleInDegrees
    >
struct direction_func;

template <typename T>
struct divides;

template <typename T>
struct equal_to;

template <>
struct exp10_func<uchar>;

template <>
struct exp10_func<short>;

template <>
struct exp10_func<schar>;

template <>
struct exp10_func<double>;

template <>
struct exp10_func<float>;

template <>
struct exp10_func<uint>;

template <typename T>
struct exp10_func;

template <>
struct exp10_func<ushort>;

template <typename T>
struct exp2_func;

template <>
struct exp2_func<uchar>;

template <>
struct exp2_func<ushort>;

template <>
struct exp2_func<short>;

template <>
struct exp2_func<uint>;

template <>
struct exp2_func<double>;

template <>
struct exp2_func<float>;

template <>
struct exp2_func<schar>;

template <>
struct exp_func<uchar>;

template <>
struct exp_func<uint>;

template <>
struct exp_func<ushort>;

template <>
struct exp_func<short>;

template <>
struct exp_func<float>;

template <>
struct exp_func<schar>;

template <typename T>
struct exp_func;

template <>
struct exp_func<double>;

template <typename T>
struct greater;

template <typename T>
struct greater_equal;

template <>
struct hypot_func<ushort>;

template <>
struct hypot_func<uint>;

template <>
struct hypot_func<short>;

template <typename T>
struct hypot_func;

template <>
struct hypot_func<float>;

template <>
struct hypot_func<schar>;

template <>
struct hypot_func<uchar>;

template <>
struct hypot_func<double>;

template <typename T>
struct identity;

template <typename T>
struct less;

template <typename T>
struct less_equal;

template <>
struct log10_func<uint>;

template <>
struct log10_func<ushort>;

template <>
struct log10_func<uchar>;

template <>
struct log10_func<schar>;

template <>
struct log10_func<double>;

template <>
struct log10_func<short>;

template <typename T>
struct log10_func;

template <>
struct log10_func<float>;

template <>
struct log2_func<ushort>;

template <>
struct log2_func<short>;

template <>
struct log2_func<double>;

template <typename T>
struct log2_func;

template <>
struct log2_func<float>;

template <>
struct log2_func<schar>;

template <>
struct log2_func<uchar>;

template <>
struct log2_func<uint>;

template <>
struct log_func<uint>;

template <>
struct log_func<schar>;

template <>
struct log_func<short>;

template <>
struct log_func<uchar>;

template <>
struct log_func<float>;

template <typename T>
struct log_func;

template <>
struct log_func<double>;

template <>
struct log_func<ushort>;

template <typename T>
struct logical_and;

template <typename T>
struct logical_not;

template <typename T>
struct logical_or;

template <typename T>
struct magnitude_func;

template <typename T>
struct magnitude_sqr_func;

template <>
struct maximum<schar>;

template <>
struct maximum<float>;

template <>
struct maximum<double>;

template <>
struct maximum<ushort>;

template <>
struct maximum<uchar>;

template <typename T>
struct maximum;

template <>
struct maximum<uint>;

template <>
struct maximum<short>;

template <typename T>
struct minimum;

template <>
struct minimum<uchar>;

template <>
struct minimum<uint>;

template <>
struct minimum<ushort>;

template <>
struct minimum<schar>;

template <>
struct minimum<short>;

template <>
struct minimum<float>;

template <>
struct minimum<double>;

template <typename T>
struct minus;

template <typename T>
struct modulus;

template <typename T>
struct multiplies;

template <typename T>
struct negate;

template <typename T>
struct not_equal_to;

template <>
struct numeric_limits<uint>;

template <>
struct numeric_limits<uchar>;

template <>
struct numeric_limits<schar>;

template <>
struct numeric_limits<float>;

template <>
struct numeric_limits<ushort>;

template <>
struct numeric_limits<bool>;

template <class T>
struct numeric_limits;

template <>
struct numeric_limits<double>;

template <>
struct numeric_limits<short>;

template <typename T>
struct plus;

template <typename T>
struct pow_func;

template <>
struct pow_func<double>;

template <
    typename T1,
    typename T2
    >
struct project1st;

template <
    typename T1,
    typename T2
    >
struct project2nd;

template <>
struct saturate_cast_fp16_func<short, float>;

template <>
struct saturate_cast_fp16_func<float, short>;

template <
    typename T,
    typename D
    >
struct saturate_cast_fp16_func;

template <
    typename T,
    typename D
    >
struct saturate_cast_func;

template <>
struct sin_func<ushort>;

template <>
struct sin_func<uint>;

template <>
struct sin_func<uchar>;

template <>
struct sin_func<short>;

template <>
struct sin_func<schar>;

template <>
struct sin_func<double>;

template <typename T>
struct sin_func;

template <>
struct sin_func<float>;

template <>
struct sinh_func<uchar>;

template <>
struct sinh_func<uint>;

template <>
struct sinh_func<ushort>;

template <>
struct sinh_func<short>;

template <>
struct sinh_func<double>;

template <>
struct sinh_func<float>;

template <>
struct sinh_func<schar>;

template <typename T>
struct sinh_func;

template <typename T>
struct sqr_func;

template <>
struct sqrt_func<short>;

template <>
struct sqrt_func<ushort>;

template <>
struct sqrt_func<uchar>;

template <>
struct sqrt_func<uint>;

template <>
struct sqrt_func<schar>;

template <typename T>
struct sqrt_func;

template <>
struct sqrt_func<double>;

template <>
struct sqrt_func<float>;

template <>
struct tan_func<ushort>;

template <>
struct tan_func<uint>;

template <>
struct tan_func<uchar>;

template <>
struct tan_func<float>;

template <>
struct tan_func<short>;

template <>
struct tan_func<double>;

template <>
struct tan_func<schar>;

template <typename T>
struct tan_func;

template <>
struct tanh_func<uint>;

template <typename T>
struct tanh_func;

template <>
struct tanh_func<ushort>;

template <>
struct tanh_func<double>;

template <>
struct tanh_func<schar>;

template <>
struct tanh_func<float>;

template <>
struct tanh_func<uchar>;

template <>
struct tanh_func<short>;

template <
    typename _Arg,
    typename _Result
    >
struct unary_function;

// classes

template <typename T>
class GpuMat_;

// global functions

__device__ __forceinline__ uchar1
abs(const uchar1& a);

__device__ __forceinline__ uchar2
abs(const uchar2& a);

__device__ __forceinline__ uchar3
abs(const uchar3& a);

__device__ __forceinline__ uchar4
abs(const uchar4& a);

__device__ __forceinline__ char1
abs(const char1& a);

__device__ __forceinline__ char2
abs(const char2& a);

__device__ __forceinline__ char3
abs(const char3& a);

__device__ __forceinline__ char4
abs(const char4& a);

__device__ __forceinline__ ushort1
abs(const ushort1& a);

__device__ __forceinline__ ushort2
abs(const ushort2& a);

__device__ __forceinline__ ushort3
abs(const ushort3& a);

__device__ __forceinline__ ushort4
abs(const ushort4& a);

__device__ __forceinline__ short1
abs(const short1& a);

__device__ __forceinline__ short2
abs(const short2& a);

__device__ __forceinline__ short3
abs(const short3& a);

__device__ __forceinline__ short4
abs(const short4& a);

__device__ __forceinline__ int1
abs(const int1& a);

__device__ __forceinline__ int2
abs(const int2& a);

__device__ __forceinline__ int3
abs(const int3& a);

__device__ __forceinline__ int4
abs(const int4& a);

__device__ __forceinline__ uint1
abs(const uint1& a);

__device__ __forceinline__ uint2
abs(const uint2& a);

__device__ __forceinline__ uint3
abs(const uint3& a);

__device__ __forceinline__ uint4
abs(const uint4& a);

__device__ __forceinline__ float1
abs(const float1& a);

__device__ __forceinline__ float2
abs(const float2& a);

__device__ __forceinline__ float3
abs(const float3& a);

__device__ __forceinline__ float4
abs(const float4& a);

__device__ __forceinline__ double1
abs(const double1& a);

__device__ __forceinline__ double2
abs(const double2& a);

__device__ __forceinline__ double3
abs(const double3& a);

__device__ __forceinline__ double4
abs(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, abs_func<typename PtrTraits<SrcPtr>::value_type>>>
abs_(const SrcPtr& src);

template <
    class SrcPtr1,
    class SrcPtr2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<SrcPtr1>::ptr_type, typename PtrTraits<SrcPtr2>::ptr_type, absdiff_func<typename LargerType<typename PtrTraits<SrcPtr1>::value_type, typename PtrTraits<SrcPtr2>::value_type>::type>>>
absdiff_(
    const SrcPtr1& src1,
    const SrcPtr2& src2
    );

__device__ __forceinline__ float1
acos(const uchar1& a);

__device__ __forceinline__ float2
acos(const uchar2& a);

__device__ __forceinline__ float3
acos(const uchar3& a);

__device__ __forceinline__ float4
acos(const uchar4& a);

__device__ __forceinline__ float1
acos(const char1& a);

__device__ __forceinline__ float2
acos(const char2& a);

__device__ __forceinline__ float3
acos(const char3& a);

__device__ __forceinline__ float4
acos(const char4& a);

__device__ __forceinline__ float1
acos(const ushort1& a);

__device__ __forceinline__ float2
acos(const ushort2& a);

__device__ __forceinline__ float3
acos(const ushort3& a);

__device__ __forceinline__ float4
acos(const ushort4& a);

__device__ __forceinline__ float1
acos(const short1& a);

__device__ __forceinline__ float2
acos(const short2& a);

__device__ __forceinline__ float3
acos(const short3& a);

__device__ __forceinline__ float4
acos(const short4& a);

__device__ __forceinline__ float1
acos(const int1& a);

__device__ __forceinline__ float2
acos(const int2& a);

__device__ __forceinline__ float3
acos(const int3& a);

__device__ __forceinline__ float4
acos(const int4& a);

__device__ __forceinline__ float1
acos(const uint1& a);

__device__ __forceinline__ float2
acos(const uint2& a);

__device__ __forceinline__ float3
acos(const uint3& a);

__device__ __forceinline__ float4
acos(const uint4& a);

__device__ __forceinline__ float1
acos(const float1& a);

__device__ __forceinline__ float2
acos(const float2& a);

__device__ __forceinline__ float3
acos(const float3& a);

__device__ __forceinline__ float4
acos(const float4& a);

__device__ __forceinline__ double1
acos(const double1& a);

__device__ __forceinline__ double2
acos(const double2& a);

__device__ __forceinline__ double3
acos(const double3& a);

__device__ __forceinline__ double4
acos(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, acos_func<typename PtrTraits<SrcPtr>::value_type>>>
acos_(const SrcPtr& src);

__device__ __forceinline__ float1
acosh(const uchar1& a);

__device__ __forceinline__ float2
acosh(const uchar2& a);

__device__ __forceinline__ float3
acosh(const uchar3& a);

__device__ __forceinline__ float4
acosh(const uchar4& a);

__device__ __forceinline__ float1
acosh(const char1& a);

__device__ __forceinline__ float2
acosh(const char2& a);

__device__ __forceinline__ float3
acosh(const char3& a);

__device__ __forceinline__ float4
acosh(const char4& a);

__device__ __forceinline__ float1
acosh(const ushort1& a);

__device__ __forceinline__ float2
acosh(const ushort2& a);

__device__ __forceinline__ float3
acosh(const ushort3& a);

__device__ __forceinline__ float4
acosh(const ushort4& a);

__device__ __forceinline__ float1
acosh(const short1& a);

__device__ __forceinline__ float2
acosh(const short2& a);

__device__ __forceinline__ float3
acosh(const short3& a);

__device__ __forceinline__ float4
acosh(const short4& a);

__device__ __forceinline__ float1
acosh(const int1& a);

__device__ __forceinline__ float2
acosh(const int2& a);

__device__ __forceinline__ float3
acosh(const int3& a);

__device__ __forceinline__ float4
acosh(const int4& a);

__device__ __forceinline__ float1
acosh(const uint1& a);

__device__ __forceinline__ float2
acosh(const uint2& a);

__device__ __forceinline__ float3
acosh(const uint3& a);

__device__ __forceinline__ float4
acosh(const uint4& a);

__device__ __forceinline__ float1
acosh(const float1& a);

__device__ __forceinline__ float2
acosh(const float2& a);

__device__ __forceinline__ float3
acosh(const float3& a);

__device__ __forceinline__ float4
acosh(const float4& a);

__device__ __forceinline__ double1
acosh(const double1& a);

__device__ __forceinline__ double2
acosh(const double2& a);

__device__ __forceinline__ double3
acosh(const double3& a);

__device__ __forceinline__ double4
acosh(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, acosh_func<typename PtrTraits<SrcPtr>::value_type>>>
acosh_(const SrcPtr& src);

static
__host__ AffineMapPtrSz
affineMap(
    Size dstSize,
    const GpuMat_<float>& warpMat
    );

__device__ __forceinline__ float2
asin(const uchar2& a);

__device__ __forceinline__ float3
asin(const uchar3& a);

__device__ __forceinline__ float4
asin(const uchar4& a);

__device__ __forceinline__ float1
asin(const uchar1& a);

__device__ __forceinline__ float1
asin(const char1& a);

__device__ __forceinline__ float2
asin(const char2& a);

__device__ __forceinline__ float3
asin(const char3& a);

__device__ __forceinline__ float4
asin(const char4& a);

__device__ __forceinline__ float1
asin(const ushort1& a);

__device__ __forceinline__ float2
asin(const ushort2& a);

__device__ __forceinline__ float3
asin(const ushort3& a);

__device__ __forceinline__ float4
asin(const ushort4& a);

__device__ __forceinline__ float3
asin(const short3& a);

__device__ __forceinline__ float4
asin(const short4& a);

__device__ __forceinline__ float1
asin(const short1& a);

__device__ __forceinline__ float2
asin(const short2& a);

__device__ __forceinline__ float1
asin(const int1& a);

__device__ __forceinline__ float2
asin(const int2& a);

__device__ __forceinline__ float3
asin(const int3& a);

__device__ __forceinline__ float4
asin(const int4& a);

__device__ __forceinline__ float1
asin(const uint1& a);

__device__ __forceinline__ float2
asin(const uint2& a);

__device__ __forceinline__ float3
asin(const uint3& a);

__device__ __forceinline__ float4
asin(const uint4& a);

__device__ __forceinline__ float1
asin(const float1& a);

__device__ __forceinline__ float2
asin(const float2& a);

__device__ __forceinline__ float3
asin(const float3& a);

__device__ __forceinline__ float4
asin(const float4& a);

__device__ __forceinline__ double3
asin(const double3& a);

__device__ __forceinline__ double4
asin(const double4& a);

__device__ __forceinline__ double2
asin(const double2& a);

__device__ __forceinline__ double1
asin(const double1& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, asin_func<typename PtrTraits<SrcPtr>::value_type>>>
asin_(const SrcPtr& src);

__device__ __forceinline__ float2
asinh(const uchar2& a);

__device__ __forceinline__ float3
asinh(const uchar3& a);

__device__ __forceinline__ float4
asinh(const uchar4& a);

__device__ __forceinline__ float1
asinh(const uchar1& a);

__device__ __forceinline__ float1
asinh(const char1& a);

__device__ __forceinline__ float2
asinh(const char2& a);

__device__ __forceinline__ float3
asinh(const char3& a);

__device__ __forceinline__ float4
asinh(const char4& a);

__device__ __forceinline__ float1
asinh(const ushort1& a);

__device__ __forceinline__ float2
asinh(const ushort2& a);

__device__ __forceinline__ float3
asinh(const ushort3& a);

__device__ __forceinline__ float4
asinh(const ushort4& a);

__device__ __forceinline__ float4
asinh(const short4& a);

__device__ __forceinline__ float1
asinh(const short1& a);

__device__ __forceinline__ float2
asinh(const short2& a);

__device__ __forceinline__ float3
asinh(const short3& a);

__device__ __forceinline__ float1
asinh(const int1& a);

__device__ __forceinline__ float2
asinh(const int2& a);

__device__ __forceinline__ float3
asinh(const int3& a);

__device__ __forceinline__ float4
asinh(const int4& a);

__device__ __forceinline__ float1
asinh(const uint1& a);

__device__ __forceinline__ float2
asinh(const uint2& a);

__device__ __forceinline__ float3
asinh(const uint3& a);

__device__ __forceinline__ float4
asinh(const uint4& a);

__device__ __forceinline__ float1
asinh(const float1& a);

__device__ __forceinline__ float2
asinh(const float2& a);

__device__ __forceinline__ float3
asinh(const float3& a);

__device__ __forceinline__ float4
asinh(const float4& a);

__device__ __forceinline__ double3
asinh(const double3& a);

__device__ __forceinline__ double4
asinh(const double4& a);

__device__ __forceinline__ double2
asinh(const double2& a);

__device__ __forceinline__ double1
asinh(const double1& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, asinh_func<typename PtrTraits<SrcPtr>::value_type>>>
asinh_(const SrcPtr& src);

__device__ __forceinline__ float1
atan(const uchar1& a);

__device__ __forceinline__ float2
atan(const uchar2& a);

__device__ __forceinline__ float3
atan(const uchar3& a);

__device__ __forceinline__ float4
atan(const uchar4& a);

__device__ __forceinline__ float1
atan(const char1& a);

__device__ __forceinline__ float2
atan(const char2& a);

__device__ __forceinline__ float3
atan(const char3& a);

__device__ __forceinline__ float4
atan(const char4& a);

__device__ __forceinline__ float1
atan(const ushort1& a);

__device__ __forceinline__ float2
atan(const ushort2& a);

__device__ __forceinline__ float3
atan(const ushort3& a);

__device__ __forceinline__ float4
atan(const ushort4& a);

__device__ __forceinline__ float3
atan(const short3& a);

__device__ __forceinline__ float4
atan(const short4& a);

__device__ __forceinline__ float2
atan(const short2& a);

__device__ __forceinline__ float1
atan(const short1& a);

__device__ __forceinline__ float1
atan(const int1& a);

__device__ __forceinline__ float2
atan(const int2& a);

__device__ __forceinline__ float3
atan(const int3& a);

__device__ __forceinline__ float4
atan(const int4& a);

__device__ __forceinline__ float1
atan(const uint1& a);

__device__ __forceinline__ float2
atan(const uint2& a);

__device__ __forceinline__ float3
atan(const uint3& a);

__device__ __forceinline__ float4
atan(const uint4& a);

__device__ __forceinline__ float1
atan(const float1& a);

__device__ __forceinline__ float2
atan(const float2& a);

__device__ __forceinline__ float3
atan(const float3& a);

__device__ __forceinline__ float4
atan(const float4& a);

__device__ __forceinline__ double1
atan(const double1& a);

__device__ __forceinline__ double2
atan(const double2& a);

__device__ __forceinline__ double3
atan(const double3& a);

__device__ __forceinline__ double4
atan(const double4& a);

__device__ __forceinline__ float1
atan2(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ float2
atan2(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ float3
atan2(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ float4
atan2(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ float1
atan2(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ float2
atan2(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ float3
atan2(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ float4
atan2(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ float1
atan2(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ float2
atan2(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ float3
atan2(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ float4
atan2(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ float1
atan2(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ float2
atan2(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ float3
atan2(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ float4
atan2(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ float1
atan2(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ float2
atan2(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ float3
atan2(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ float4
atan2(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ float1
atan2(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ float2
atan2(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ float3
atan2(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ float4
atan2(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ float1
atan2(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ float2
atan2(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ float3
atan2(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ float4
atan2(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ double1
atan2(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ double2
atan2(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ double3
atan2(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ double4
atan2(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ float1
atan2(
    const uchar1& a,
    float s
    );

__device__ __forceinline__ float1
atan2(
    float s,
    const uchar1& b
    );

__device__ __forceinline__ float2
atan2(
    const uchar2& a,
    float s
    );

__device__ __forceinline__ float2
atan2(
    float s,
    const uchar2& b
    );

__device__ __forceinline__ float3
atan2(
    const uchar3& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    float s,
    const uchar3& b
    );

__device__ __forceinline__ float4
atan2(
    const uchar4& a,
    float s
    );

__device__ __forceinline__ float4
atan2(
    float s,
    const uchar4& b
    );

__device__ __forceinline__ double1
atan2(
    const uchar1& a,
    double s
    );

__device__ __forceinline__ double1
atan2(
    double s,
    const uchar1& b
    );

__device__ __forceinline__ double2
atan2(
    const uchar2& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    const uchar3& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    double s,
    const uchar3& b
    );

__device__ __forceinline__ double4
atan2(
    const uchar4& a,
    double s
    );

__device__ __forceinline__ double4
atan2(
    double s,
    const uchar4& b
    );

__device__ __forceinline__ double2
atan2(
    double s,
    const uchar2& b
    );

__device__ __forceinline__ float1
atan2(
    const char1& a,
    float s
    );

__device__ __forceinline__ float1
atan2(
    float s,
    const char1& b
    );

__device__ __forceinline__ float2
atan2(
    const char2& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    const char3& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    float s,
    const char3& b
    );

__device__ __forceinline__ float4
atan2(
    const char4& a,
    float s
    );

__device__ __forceinline__ float2
atan2(
    float s,
    const char2& b
    );

__device__ __forceinline__ float4
atan2(
    float s,
    const char4& b
    );

__device__ __forceinline__ double1
atan2(
    const char1& a,
    double s
    );

__device__ __forceinline__ double1
atan2(
    double s,
    const char1& b
    );

__device__ __forceinline__ double2
atan2(
    const char2& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    const char3& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    double s,
    const char3& b
    );

__device__ __forceinline__ double4
atan2(
    const char4& a,
    double s
    );

__device__ __forceinline__ double4
atan2(
    double s,
    const char4& b
    );

__device__ __forceinline__ double2
atan2(
    double s,
    const char2& b
    );

__device__ __forceinline__ float1
atan2(
    const ushort1& a,
    float s
    );

__device__ __forceinline__ float1
atan2(
    float s,
    const ushort1& b
    );

__device__ __forceinline__ float2
atan2(
    const ushort2& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    const ushort3& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    float s,
    const ushort3& b
    );

__device__ __forceinline__ float4
atan2(
    const ushort4& a,
    float s
    );

__device__ __forceinline__ float2
atan2(
    float s,
    const ushort2& b
    );

__device__ __forceinline__ float4
atan2(
    float s,
    const ushort4& b
    );

__device__ __forceinline__ double1
atan2(
    const ushort1& a,
    double s
    );

__device__ __forceinline__ double1
atan2(
    double s,
    const ushort1& b
    );

__device__ __forceinline__ double2
atan2(
    const ushort2& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    const ushort3& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    double s,
    const ushort3& b
    );

__device__ __forceinline__ double4
atan2(
    const ushort4& a,
    double s
    );

__device__ __forceinline__ double4
atan2(
    double s,
    const ushort4& b
    );

__device__ __forceinline__ double2
atan2(
    double s,
    const ushort2& b
    );

__device__ __forceinline__ float1
atan2(
    const short1& a,
    float s
    );

__device__ __forceinline__ float1
atan2(
    float s,
    const short1& b
    );

__device__ __forceinline__ float2
atan2(
    const short2& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    const short3& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    float s,
    const short3& b
    );

__device__ __forceinline__ float4
atan2(
    const short4& a,
    float s
    );

__device__ __forceinline__ float4
atan2(
    float s,
    const short4& b
    );

__device__ __forceinline__ float2
atan2(
    float s,
    const short2& b
    );

__device__ __forceinline__ double1
atan2(
    const short1& a,
    double s
    );

__device__ __forceinline__ double1
atan2(
    double s,
    const short1& b
    );

__device__ __forceinline__ double2
atan2(
    const short2& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    const short3& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    double s,
    const short3& b
    );

__device__ __forceinline__ double4
atan2(
    const short4& a,
    double s
    );

__device__ __forceinline__ double4
atan2(
    double s,
    const short4& b
    );

__device__ __forceinline__ double2
atan2(
    double s,
    const short2& b
    );

__device__ __forceinline__ float1
atan2(
    const uint1& a,
    float s
    );

__device__ __forceinline__ float1
atan2(
    float s,
    const uint1& b
    );

__device__ __forceinline__ float2
atan2(
    const uint2& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    const uint3& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    float s,
    const uint3& b
    );

__device__ __forceinline__ float4
atan2(
    const uint4& a,
    float s
    );

__device__ __forceinline__ float4
atan2(
    float s,
    const uint4& b
    );

__device__ __forceinline__ float2
atan2(
    float s,
    const uint2& b
    );

__device__ __forceinline__ double1
atan2(
    const uint1& a,
    double s
    );

__device__ __forceinline__ double1
atan2(
    double s,
    const uint1& b
    );

__device__ __forceinline__ double2
atan2(
    const uint2& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    const uint3& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    double s,
    const uint3& b
    );

__device__ __forceinline__ double4
atan2(
    const uint4& a,
    double s
    );

__device__ __forceinline__ double4
atan2(
    double s,
    const uint4& b
    );

__device__ __forceinline__ double2
atan2(
    double s,
    const uint2& b
    );

__device__ __forceinline__ float1
atan2(
    const int1& a,
    float s
    );

__device__ __forceinline__ float1
atan2(
    float s,
    const int1& b
    );

__device__ __forceinline__ float2
atan2(
    const int2& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    const int3& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    float s,
    const int3& b
    );

__device__ __forceinline__ float4
atan2(
    const int4& a,
    float s
    );

__device__ __forceinline__ float4
atan2(
    float s,
    const int4& b
    );

__device__ __forceinline__ float2
atan2(
    float s,
    const int2& b
    );

__device__ __forceinline__ double1
atan2(
    const int1& a,
    double s
    );

__device__ __forceinline__ double1
atan2(
    double s,
    const int1& b
    );

__device__ __forceinline__ double2
atan2(
    const int2& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    const int3& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    double s,
    const int3& b
    );

__device__ __forceinline__ double4
atan2(
    const int4& a,
    double s
    );

__device__ __forceinline__ double4
atan2(
    double s,
    const int4& b
    );

__device__ __forceinline__ double2
atan2(
    double s,
    const int2& b
    );

__device__ __forceinline__ float1
atan2(
    const float1& a,
    float s
    );

__device__ __forceinline__ float1
atan2(
    float s,
    const float1& b
    );

__device__ __forceinline__ float2
atan2(
    const float2& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    const float3& a,
    float s
    );

__device__ __forceinline__ float3
atan2(
    float s,
    const float3& b
    );

__device__ __forceinline__ float4
atan2(
    const float4& a,
    float s
    );

__device__ __forceinline__ float4
atan2(
    float s,
    const float4& b
    );

__device__ __forceinline__ float2
atan2(
    float s,
    const float2& b
    );

__device__ __forceinline__ double1
atan2(
    const float1& a,
    double s
    );

__device__ __forceinline__ double1
atan2(
    double s,
    const float1& b
    );

__device__ __forceinline__ double2
atan2(
    const float2& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    const float3& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    double s,
    const float3& b
    );

__device__ __forceinline__ double4
atan2(
    const float4& a,
    double s
    );

__device__ __forceinline__ double4
atan2(
    double s,
    const float4& b
    );

__device__ __forceinline__ double2
atan2(
    double s,
    const float2& b
    );

__device__ __forceinline__ double1
atan2(
    const double1& a,
    double s
    );

__device__ __forceinline__ double1
atan2(
    double s,
    const double1& b
    );

__device__ __forceinline__ double2
atan2(
    const double2& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    const double3& a,
    double s
    );

__device__ __forceinline__ double3
atan2(
    double s,
    const double3& b
    );

__device__ __forceinline__ double4
atan2(
    const double4& a,
    double s
    );

__device__ __forceinline__ double2
atan2(
    double s,
    const double2& b
    );

__device__ __forceinline__ double4
atan2(
    double s,
    const double4& b
    );

template <
    class SrcPtr1,
    class SrcPtr2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<SrcPtr1>::ptr_type, typename PtrTraits<SrcPtr2>::ptr_type, atan2_func<typename LargerType<typename PtrTraits<SrcPtr1>::value_type, typename PtrTraits<SrcPtr2>::value_type>::type>>>
atan2_(
    const SrcPtr1& src1,
    const SrcPtr2& src2
    );

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, atan_func<typename PtrTraits<SrcPtr>::value_type>>>
atan_(const SrcPtr& src);

__device__ __forceinline__ float1
atanh(const uchar1& a);

__device__ __forceinline__ float2
atanh(const uchar2& a);

__device__ __forceinline__ float3
atanh(const uchar3& a);

__device__ __forceinline__ float4
atanh(const uchar4& a);

__device__ __forceinline__ float1
atanh(const char1& a);

__device__ __forceinline__ float2
atanh(const char2& a);

__device__ __forceinline__ float3
atanh(const char3& a);

__device__ __forceinline__ float4
atanh(const char4& a);

__device__ __forceinline__ float1
atanh(const ushort1& a);

__device__ __forceinline__ float2
atanh(const ushort2& a);

__device__ __forceinline__ float3
atanh(const ushort3& a);

__device__ __forceinline__ float4
atanh(const ushort4& a);

__device__ __forceinline__ float1
atanh(const short1& a);

__device__ __forceinline__ float2
atanh(const short2& a);

__device__ __forceinline__ float3
atanh(const short3& a);

__device__ __forceinline__ float4
atanh(const short4& a);

__device__ __forceinline__ float1
atanh(const int1& a);

__device__ __forceinline__ float2
atanh(const int2& a);

__device__ __forceinline__ float3
atanh(const int3& a);

__device__ __forceinline__ float4
atanh(const int4& a);

__device__ __forceinline__ float1
atanh(const uint1& a);

__device__ __forceinline__ float2
atanh(const uint2& a);

__device__ __forceinline__ float3
atanh(const uint3& a);

__device__ __forceinline__ float4
atanh(const uint4& a);

__device__ __forceinline__ float1
atanh(const float1& a);

__device__ __forceinline__ float2
atanh(const float2& a);

__device__ __forceinline__ float3
atanh(const float3& a);

__device__ __forceinline__ float4
atanh(const float4& a);

__device__ __forceinline__ double1
atanh(const double1& a);

__device__ __forceinline__ double2
atanh(const double2& a);

__device__ __forceinline__ double3
atanh(const double3& a);

__device__ __forceinline__ double4
atanh(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, atanh_func<typename PtrTraits<SrcPtr>::value_type>>>
atanh_(const SrcPtr& src);

__device__ __forceinline__ int
atomicAdd(
    int* address,
    int val
    );

__device__ __forceinline__ uint
atomicAdd(
    uint* address,
    uint val
    );

__device__ __forceinline__ float
atomicAdd(
    float* address,
    float val
    );

static
__device__ double
atomicAdd(
    double* address,
    double val
    );

__device__ __forceinline__ int
atomicMax(
    int* address,
    int val
    );

__device__ __forceinline__ uint
atomicMax(
    uint* address,
    uint val
    );

static
__device__ float
atomicMax(
    float* address,
    float val
    );

static
__device__ double
atomicMax(
    double* address,
    double val
    );

__device__ __forceinline__ int
atomicMin(
    int* address,
    int val
    );

__device__ __forceinline__ uint
atomicMin(
    uint* address,
    uint val
    );

static
__device__ float
atomicMin(
    float* address,
    float val
    );

static
__device__ double
atomicMin(
    double* address,
    double val
    );

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_GRAY_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_GRAY_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_HLS4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_HLS4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_HLS4_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_HLS4_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_HLS_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_HLS_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_HLS_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_HLS_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_HSV4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_HSV4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_HSV4_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_HSV4_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_HSV_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_HSV_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_HSV_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_HSV_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_Lab4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_Lab4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_Lab_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_Lab_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_Luv4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_Luv4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_Luv_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_Luv_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_XYZ4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_XYZ4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_XYZ_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_XYZ_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_YCrCb4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_YCrCb4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_YCrCb_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_YCrCb_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_YUV4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_YUV4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGR_to_YUV_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGR_to_YUV_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_GRAY_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_GRAY_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_HLS4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_HLS4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_HLS4_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_HLS4_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_HLS_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_HLS_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_HLS_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_HLS_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_HSV4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_HSV4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_HSV4_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_HSV4_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_HSV_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_HSV_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_HSV_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_HSV_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_Lab4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_Lab4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_Lab_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_Lab_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_Luv4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_Luv4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_Luv_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_Luv_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_XYZ4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_XYZ4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_XYZ_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_XYZ_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_YCrCb4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_YCrCb4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_YCrCb_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_YCrCb_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_YUV4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_YUV4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, BGRA_to_YUV_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
BGRA_to_YUV_(const SrcPtr& src);

template <
    int n0,
    int n1,
    class Op
    >
__host__ __device__ BinaryTupleAdapter<Op, n0, n1>
binaryTupleAdapter(const Op& op);

template <class Op>
__host__ __device__ Binder1st<Op>
bind1st(
    const Op& op,
    const typename Op::first_argument_type& arg1
    );

template <class Op>
__host__ __device__ Binder2nd<Op>
bind2nd(
    const Op& op,
    const typename Op::second_argument_type& arg2
    );

template <
    class InIt,
    class OutIt
    >
static
__device__ static __forceinline__ void
blockCopy(
    InIt beg,
    InIt end,
    OutIt out
    );

template <
    class It,
    typename T
    >
static
__device__ static __forceinline__ void
blockFill(
    It beg,
    It end,
    const T& value
    );

template <
    int N,
    typename T,
    class Op
    >
__device__ __forceinline__ void
blockReduce(
    volatile T* smem,
    T& val,
    uint tid,
    const Op& op
    );

template <
    int N,
    typename P0,
    typename P1,
    typename P2,
    typename P3,
    typename P4,
    typename P5,
    typename P6,
    typename P7,
    typename P8,
    typename P9,
    typename R0,
    typename R1,
    typename R2,
    typename R3,
    typename R4,
    typename R5,
    typename R6,
    typename R7,
    typename R8,
    typename R9,
    class Op0,
    class Op1,
    class Op2,
    class Op3,
    class Op4,
    class Op5,
    class Op6,
    class Op7,
    class Op8,
    class Op9
    >
__device__ __forceinline__ void
blockReduce(
    const tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>& smem,
    const tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val,
    uint tid,
    const tuple<Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9>& op
    );

template <
    int N,
    typename K,
    typename V,
    class Cmp
    >
__device__ __forceinline__ void
blockReduceKeyVal(
    volatile K* skeys,
    K& key,
    volatile V* svals,
    V& val,
    uint tid,
    const Cmp& cmp
    );

template <
    int N,
    typename K,
    typename VP0,
    typename VP1,
    typename VP2,
    typename VP3,
    typename VP4,
    typename VP5,
    typename VP6,
    typename VP7,
    typename VP8,
    typename VP9,
    typename VR0,
    typename VR1,
    typename VR2,
    typename VR3,
    typename VR4,
    typename VR5,
    typename VR6,
    typename VR7,
    typename VR8,
    typename VR9,
    class Cmp
    >
__device__ __forceinline__ void
blockReduceKeyVal(
    volatile K* skeys,
    K& key,
    const tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals,
    const tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
    uint tid,
    const Cmp& cmp
    );

template <
    int N,
    typename KP0,
    typename KP1,
    typename KP2,
    typename KP3,
    typename KP4,
    typename KP5,
    typename KP6,
    typename KP7,
    typename KP8,
    typename KP9,
    typename KR0,
    typename KR1,
    typename KR2,
    typename KR3,
    typename KR4,
    typename KR5,
    typename KR6,
    typename KR7,
    typename KR8,
    typename KR9,
    typename VP0,
    typename VP1,
    typename VP2,
    typename VP3,
    typename VP4,
    typename VP5,
    typename VP6,
    typename VP7,
    typename VP8,
    typename VP9,
    typename VR0,
    typename VR1,
    typename VR2,
    typename VR3,
    typename VR4,
    typename VR5,
    typename VR6,
    typename VR7,
    typename VR8,
    typename VR9,
    class Cmp0,
    class Cmp1,
    class Cmp2,
    class Cmp3,
    class Cmp4,
    class Cmp5,
    class Cmp6,
    class Cmp7,
    class Cmp8,
    class Cmp9
    >
__device__ __forceinline__ void
blockReduceKeyVal(
    const tuple<KP0, KP1, KP2, KP3, KP4, KP5, KP6, KP7, KP8, KP9>& skeys,
    const tuple<KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9>& key,
    const tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals,
    const tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
    uint tid,
    const tuple<Cmp0, Cmp1, Cmp2, Cmp3, Cmp4, Cmp5, Cmp6, Cmp7, Cmp8, Cmp9>& cmp
    );

template <
    int THREADS_NUM,
    typename T
    >
__device__ __forceinline__ T
blockScanExclusive(
    T data,
    volatile T* smem,
    uint tid
    );

template <
    int THREADS_NUM,
    typename T
    >
__device__ T
blockScanInclusive(
    T data,
    volatile T* smem,
    uint tid
    );

template <
    class InIt,
    class OutIt,
    class UnOp
    >
static
__device__ static __forceinline__ void
blockTransfrom(
    InIt beg,
    InIt end,
    OutIt out,
    const UnOp& op
    );

template <
    class InIt1,
    class InIt2,
    class OutIt,
    class BinOp
    >
static
__device__ static __forceinline__ void
blockTransfrom(
    InIt1 beg1,
    InIt1 end1,
    InIt2 beg2,
    OutIt out,
    const BinOp& op
    );

template <
    class OutIt,
    typename T
    >
static
__device__ static __forceinline__ void
blockYota(
    OutIt beg,
    OutIt end,
    T value
    );

template <class SrcPtr>
__host__ BrdConstant<typename PtrTraits<SrcPtr>::ptr_type>
brdConstant(
    const SrcPtr& src,
    typename PtrTraits<SrcPtr>::value_type val
    );

template <class SrcPtr>
__host__ BrdConstant<typename PtrTraits<SrcPtr>::ptr_type>
brdConstant(const SrcPtr& src);

template <class SrcPtr>
__host__ BrdBase<BrdReflect, typename PtrTraits<SrcPtr>::ptr_type>
brdReflect(const SrcPtr& src);

template <class SrcPtr>
__host__ BrdBase<BrdReflect101, typename PtrTraits<SrcPtr>::ptr_type>
brdReflect101(const SrcPtr& src);

template <class SrcPtr>
__host__ BrdBase<BrdReplicate, typename PtrTraits<SrcPtr>::ptr_type>
brdReplicate(const SrcPtr& src);

template <class SrcPtr>
__host__ BrdBase<BrdWrap, typename PtrTraits<SrcPtr>::ptr_type>
brdWrap(const SrcPtr& src);

template <
    typename T,
    typename D
    >
__device__ __forceinline__ D
cast_fp16(T v);

__device__ __forceinline__ short
cast_fp16< float, short >(float v);

__device__ __forceinline__ float
cast_fp16< short, float >(short v);

__host__ __forceinline__ void
checkCudaError(
    cudaError_t err,
    const char* file,
    const int line,
    const char* func
    );

template <typename T>
__host__ ConstantPtr<T>
constantPtr(T value);

template <typename T>
ConstantPtrSz<T> __host__
constantPtr(
    T value,
    int rows,
    int cols
    );

__device__ __forceinline__ float1
cos(const uchar1& a);

__device__ __forceinline__ float2
cos(const uchar2& a);

__device__ __forceinline__ float3
cos(const uchar3& a);

__device__ __forceinline__ float4
cos(const uchar4& a);

__device__ __forceinline__ float1
cos(const char1& a);

__device__ __forceinline__ float2
cos(const char2& a);

__device__ __forceinline__ float3
cos(const char3& a);

__device__ __forceinline__ float4
cos(const char4& a);

__device__ __forceinline__ float1
cos(const ushort1& a);

__device__ __forceinline__ float2
cos(const ushort2& a);

__device__ __forceinline__ float3
cos(const ushort3& a);

__device__ __forceinline__ float4
cos(const ushort4& a);

__device__ __forceinline__ float1
cos(const short1& a);

__device__ __forceinline__ float2
cos(const short2& a);

__device__ __forceinline__ float3
cos(const short3& a);

__device__ __forceinline__ float4
cos(const short4& a);

__device__ __forceinline__ float1
cos(const int1& a);

__device__ __forceinline__ float2
cos(const int2& a);

__device__ __forceinline__ float3
cos(const int3& a);

__device__ __forceinline__ float4
cos(const int4& a);

__device__ __forceinline__ float1
cos(const uint1& a);

__device__ __forceinline__ float2
cos(const uint2& a);

__device__ __forceinline__ float3
cos(const uint3& a);

__device__ __forceinline__ float4
cos(const uint4& a);

__device__ __forceinline__ float1
cos(const float1& a);

__device__ __forceinline__ float2
cos(const float2& a);

__device__ __forceinline__ float3
cos(const float3& a);

__device__ __forceinline__ float4
cos(const float4& a);

__device__ __forceinline__ double1
cos(const double1& a);

__device__ __forceinline__ double2
cos(const double2& a);

__device__ __forceinline__ double3
cos(const double3& a);

__device__ __forceinline__ double4
cos(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, cos_func<typename PtrTraits<SrcPtr>::value_type>>>
cos_(const SrcPtr& src);

__device__ __forceinline__ float1
cosh(const uchar1& a);

__device__ __forceinline__ float2
cosh(const uchar2& a);

__device__ __forceinline__ float3
cosh(const uchar3& a);

__device__ __forceinline__ float4
cosh(const uchar4& a);

__device__ __forceinline__ float1
cosh(const char1& a);

__device__ __forceinline__ float2
cosh(const char2& a);

__device__ __forceinline__ float3
cosh(const char3& a);

__device__ __forceinline__ float4
cosh(const char4& a);

__device__ __forceinline__ float1
cosh(const ushort1& a);

__device__ __forceinline__ float2
cosh(const ushort2& a);

__device__ __forceinline__ float3
cosh(const ushort3& a);

__device__ __forceinline__ float4
cosh(const ushort4& a);

__device__ __forceinline__ float2
cosh(const short2& a);

__device__ __forceinline__ float3
cosh(const short3& a);

__device__ __forceinline__ float4
cosh(const short4& a);

__device__ __forceinline__ float1
cosh(const short1& a);

__device__ __forceinline__ float1
cosh(const int1& a);

__device__ __forceinline__ float2
cosh(const int2& a);

__device__ __forceinline__ float3
cosh(const int3& a);

__device__ __forceinline__ float4
cosh(const int4& a);

__device__ __forceinline__ float1
cosh(const uint1& a);

__device__ __forceinline__ float2
cosh(const uint2& a);

__device__ __forceinline__ float3
cosh(const uint3& a);

__device__ __forceinline__ float4
cosh(const uint4& a);

__device__ __forceinline__ float1
cosh(const float1& a);

__device__ __forceinline__ float2
cosh(const float2& a);

__device__ __forceinline__ float3
cosh(const float3& a);

__device__ __forceinline__ float4
cosh(const float4& a);

__device__ __forceinline__ double1
cosh(const double1& a);

__device__ __forceinline__ double2
cosh(const double2& a);

__device__ __forceinline__ double3
cosh(const double3& a);

__device__ __forceinline__ double4
cosh(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, cosh_func<typename PtrTraits<SrcPtr>::value_type>>>
cosh_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<CountNonZeroExprBody<SrcPtr>>
countNonZero_(const SrcPtr& src);

template <
    typename D,
    class SrcPtr
    >
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, saturate_cast_func<typename PtrTraits<SrcPtr>::value_type, D>>>
cvt_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<DerivXPtrSz<typename PtrTraits<SrcPtr>::ptr_type>>
derivX_(const SrcPtr& src);

template <class SrcPtr>
__host__ DerivXPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
derivXPtr(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<DerivYPtrSz<typename PtrTraits<SrcPtr>::ptr_type>>
derivY_(const SrcPtr& src);

template <class SrcPtr>
__host__ DerivYPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
derivYPtr(const SrcPtr& src);

__host__ __device__ __forceinline__ int
divUp(
    int total,
    int grain
    );

__device__ __forceinline__ float1
exp(const uchar1& a);

__device__ __forceinline__ float2
exp(const uchar2& a);

__device__ __forceinline__ float3
exp(const uchar3& a);

__device__ __forceinline__ float4
exp(const uchar4& a);

__device__ __forceinline__ float1
exp(const char1& a);

__device__ __forceinline__ float2
exp(const char2& a);

__device__ __forceinline__ float3
exp(const char3& a);

__device__ __forceinline__ float4
exp(const char4& a);

__device__ __forceinline__ float1
exp(const ushort1& a);

__device__ __forceinline__ float2
exp(const ushort2& a);

__device__ __forceinline__ float3
exp(const ushort3& a);

__device__ __forceinline__ float4
exp(const ushort4& a);

__device__ __forceinline__ float1
exp(const short1& a);

__device__ __forceinline__ float2
exp(const short2& a);

__device__ __forceinline__ float3
exp(const short3& a);

__device__ __forceinline__ float4
exp(const short4& a);

__device__ __forceinline__ float1
exp(const int1& a);

__device__ __forceinline__ float2
exp(const int2& a);

__device__ __forceinline__ float3
exp(const int3& a);

__device__ __forceinline__ float4
exp(const int4& a);

__device__ __forceinline__ float1
exp(const uint1& a);

__device__ __forceinline__ float2
exp(const uint2& a);

__device__ __forceinline__ float3
exp(const uint3& a);

__device__ __forceinline__ float4
exp(const uint4& a);

__device__ __forceinline__ float1
exp(const float1& a);

__device__ __forceinline__ float2
exp(const float2& a);

__device__ __forceinline__ float3
exp(const float3& a);

__device__ __forceinline__ float4
exp(const float4& a);

__device__ __forceinline__ double1
exp(const double1& a);

__device__ __forceinline__ double2
exp(const double2& a);

__device__ __forceinline__ double3
exp(const double3& a);

__device__ __forceinline__ double4
exp(const double4& a);

__device__ __forceinline__ float1
exp10(const uchar1& a);

__device__ __forceinline__ float2
exp10(const uchar2& a);

__device__ __forceinline__ float3
exp10(const uchar3& a);

__device__ __forceinline__ float4
exp10(const uchar4& a);

__device__ __forceinline__ float1
exp10(const char1& a);

__device__ __forceinline__ float2
exp10(const char2& a);

__device__ __forceinline__ float3
exp10(const char3& a);

__device__ __forceinline__ float4
exp10(const char4& a);

__device__ __forceinline__ float1
exp10(const ushort1& a);

__device__ __forceinline__ float2
exp10(const ushort2& a);

__device__ __forceinline__ float3
exp10(const ushort3& a);

__device__ __forceinline__ float4
exp10(const ushort4& a);

__device__ __forceinline__ float1
exp10(const short1& a);

__device__ __forceinline__ float2
exp10(const short2& a);

__device__ __forceinline__ float3
exp10(const short3& a);

__device__ __forceinline__ float4
exp10(const short4& a);

__device__ __forceinline__ float1
exp10(const int1& a);

__device__ __forceinline__ float2
exp10(const int2& a);

__device__ __forceinline__ float3
exp10(const int3& a);

__device__ __forceinline__ float4
exp10(const int4& a);

__device__ __forceinline__ float1
exp10(const uint1& a);

__device__ __forceinline__ float2
exp10(const uint2& a);

__device__ __forceinline__ float3
exp10(const uint3& a);

__device__ __forceinline__ float4
exp10(const uint4& a);

__device__ __forceinline__ float1
exp10(const float1& a);

__device__ __forceinline__ float2
exp10(const float2& a);

__device__ __forceinline__ float3
exp10(const float3& a);

__device__ __forceinline__ float4
exp10(const float4& a);

__device__ __forceinline__ double1
exp10(const double1& a);

__device__ __forceinline__ double2
exp10(const double2& a);

__device__ __forceinline__ double3
exp10(const double3& a);

__device__ __forceinline__ double4
exp10(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, exp10_func<typename PtrTraits<SrcPtr>::value_type>>>
exp10_(const SrcPtr& src);

__device__ __forceinline__ float1
exp2(const uchar1& a);

__device__ __forceinline__ float2
exp2(const uchar2& a);

__device__ __forceinline__ float3
exp2(const uchar3& a);

__device__ __forceinline__ float4
exp2(const uchar4& a);

__device__ __forceinline__ float1
exp2(const char1& a);

__device__ __forceinline__ float2
exp2(const char2& a);

__device__ __forceinline__ float3
exp2(const char3& a);

__device__ __forceinline__ float4
exp2(const char4& a);

__device__ __forceinline__ float1
exp2(const ushort1& a);

__device__ __forceinline__ float2
exp2(const ushort2& a);

__device__ __forceinline__ float3
exp2(const ushort3& a);

__device__ __forceinline__ float4
exp2(const ushort4& a);

__device__ __forceinline__ float1
exp2(const short1& a);

__device__ __forceinline__ float2
exp2(const short2& a);

__device__ __forceinline__ float3
exp2(const short3& a);

__device__ __forceinline__ float4
exp2(const short4& a);

__device__ __forceinline__ float1
exp2(const int1& a);

__device__ __forceinline__ float2
exp2(const int2& a);

__device__ __forceinline__ float3
exp2(const int3& a);

__device__ __forceinline__ float4
exp2(const int4& a);

__device__ __forceinline__ float1
exp2(const uint1& a);

__device__ __forceinline__ float2
exp2(const uint2& a);

__device__ __forceinline__ float3
exp2(const uint3& a);

__device__ __forceinline__ float4
exp2(const uint4& a);

__device__ __forceinline__ float1
exp2(const float1& a);

__device__ __forceinline__ float2
exp2(const float2& a);

__device__ __forceinline__ float3
exp2(const float3& a);

__device__ __forceinline__ float4
exp2(const float4& a);

__device__ __forceinline__ double3
exp2(const double3& a);

__device__ __forceinline__ double4
exp2(const double4& a);

__device__ __forceinline__ double2
exp2(const double2& a);

__device__ __forceinline__ double1
exp2(const double1& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, exp2_func<typename PtrTraits<SrcPtr>::value_type>>>
exp2_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, exp_func<typename PtrTraits<SrcPtr>::value_type>>>
exp_(const SrcPtr& src);

template <class Ptr2DSz>
__host__ int
getCols(const Ptr2DSz& ptr);

template <class Ptr2DSz>
__host__ int
getRows(const Ptr2DSz& ptr);

template <typename T>
__host__ __device__ GlobPtr<T>
globPtr(
    T* data,
    size_t step
    );

template <typename T>
__host__ __device__ GlobPtrSz<T>
globPtr(
    T* data,
    size_t step,
    int rows,
    int cols
    );

template <typename T>
__host__ GlobPtrSz<T>
globPtr(const GpuMat& mat);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, GRAY_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
GRAY_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, GRAY_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
GRAY_to_BGRA_(const SrcPtr& src);

template <
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridCalcSum(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType
    >
__host__ void
gridCalcSum(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridCalcSum_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridCalcSum_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridCopy(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridCopy(
    const SrcPtr& src,
    const GlobPtrSz<DstType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType
    >
__host__ void
gridCopy(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType
    >
__host__ void
gridCopy(
    const SrcPtr& src,
    const GlobPtrSz<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1,
    class MaskPtr
    >
__host__ void
gridCopy(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1,
    class MaskPtr
    >
__host__ void
gridCopy(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1
    >
__host__ void
gridCopy(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1
    >
__host__ void
gridCopy(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    class MaskPtr
    >
__host__ void
gridCopy(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    class MaskPtr
    >
__host__ void
gridCopy(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2
    >
__host__ void
gridCopy(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2
    >
__host__ void
gridCopy(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class MaskPtr
    >
__host__ void
gridCopy(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&, GpuMat_<D3>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class MaskPtr
    >
__host__ void
gridCopy(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>, GlobPtrSz<D3>>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridCopy_(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridCopy_(
    const SrcPtr& src,
    const GlobPtrSz<DstType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridCopy_(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridCopy_(
    const SrcPtr& src,
    const GlobPtrSz<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1,
    class MaskPtr
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1,
    class MaskPtr
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    class MaskPtr
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    class MaskPtr
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class MaskPtr
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&, GpuMat_<D3>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class MaskPtr
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>, GlobPtrSz<D3>>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    typename D3
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&, GpuMat_<D3>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    typename D3
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>, GlobPtrSz<D3>>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    typename D3
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&, GpuMat_<D3>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename D0,
    typename D1,
    typename D2,
    typename D3
    >
__host__ void
gridCopy_(
    const SrcPtrTuple& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>, GlobPtrSz<D3>>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridCountNonZero(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType
    >
__host__ void
gridCountNonZero(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridCountNonZero_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridCountNonZero_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridFindMaxVal(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType
    >
__host__ void
gridFindMaxVal(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridFindMaxVal_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridFindMaxVal_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridFindMinMaxVal(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType
    >
__host__ void
gridFindMinMaxVal(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridFindMinMaxVal_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridFindMinMaxVal_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridFindMinVal(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType
    >
__host__ void
gridFindMinVal(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridFindMinVal_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridFindMinVal_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    int BIN_COUNT,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridHistogram(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    int BIN_COUNT,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridHistogram(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    int BIN_COUNT,
    class Policy,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridHistogram_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    int BIN_COUNT,
    class Policy,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridHistogram_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType
    >
__host__ void
gridIntegral(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridMerge(
    const SrcPtrTuple& src,
    GpuMat_<DstType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridMerge(
    const SrcPtrTuple& src,
    const GlobPtrSz<DstType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename DstType
    >
__host__ void
gridMerge(
    const SrcPtrTuple& src,
    GpuMat_<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtrTuple,
    typename DstType
    >
__host__ void
gridMerge(
    const SrcPtrTuple& src,
    const GlobPtrSz<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridMerge_(
    const SrcPtrTuple& src,
    GpuMat_<DstType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridMerge_(
    const SrcPtrTuple& src,
    const GlobPtrSz<DstType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename DstType
    >
__host__ void
gridMerge_(
    const SrcPtrTuple& src,
    GpuMat_<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtrTuple,
    typename DstType
    >
__host__ void
gridMerge_(
    const SrcPtrTuple& src,
    const GlobPtrSz<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridMinMaxLoc(
    const SrcPtr& src,
    GpuMat_<ResType>& valBuf,
    GpuMat_<int>& locBuf,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename ResType
    >
__host__ void
gridMinMaxLoc(
    const SrcPtr& src,
    GpuMat_<ResType>& valBuf,
    GpuMat_<int>& locBuf,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridMinMaxLoc_(
    const SrcPtr& src,
    GpuMat_<ResType>& valBuf,
    GpuMat_<int>& locBuf,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridMinMaxLoc_(
    const SrcPtr& src,
    GpuMat_<ResType>& valBuf,
    GpuMat_<int>& locBuf,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType
    >
__host__ void
gridPyrDown(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Brd,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridPyrDown_(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType
    >
__host__ void
gridPyrUp(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Reductor,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridReduceToColumn(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Reductor,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridReduceToColumn(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Reductor,
    class Policy,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridReduceToColumn_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Reductor,
    class Policy,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridReduceToColumn_(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Reductor,
    class SrcPtr,
    typename ResType,
    class MaskPtr
    >
__host__ void
gridReduceToRow(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Reductor,
    class SrcPtr,
    typename ResType
    >
__host__ void
gridReduceToRow(
    const SrcPtr& src,
    GpuMat_<ResType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    int COUNT,
    class MaskPtr
    >
__host__ void
gridSplit(
    const SrcPtr& src,
    GpuMat_<DstType>(&) dst [COUNT],
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    int COUNT,
    class MaskPtr
    >
__host__ void
gridSplit(
    const SrcPtr& src,
    GlobPtrSz<DstType>(&) dst [COUNT],
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    int COUNT
    >
__host__ void
gridSplit(
    const SrcPtr& src,
    GpuMat_<DstType>(&) dst [COUNT],
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    int COUNT
    >
__host__ void
gridSplit(
    const SrcPtr& src,
    GlobPtrSz<DstType>(&) dst [COUNT],
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GpuMat_<DstType>(&) dst [2],
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GlobPtrSz<DstType>(&) dst [2],
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GpuMat_<DstType>(&) dst [2],
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GlobPtrSz<DstType>(&) dst [2],
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GpuMat_<DstType>(&) dst [3],
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GlobPtrSz<DstType>(&) dst [3],
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GpuMat_<DstType>(&) dst [3],
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GlobPtrSz<DstType>(&) dst [3],
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GpuMat_<DstType>(&) dst [4],
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class MaskPtr
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GlobPtrSz<DstType>(&) dst [4],
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    const tuple<GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&, GpuMat_<DstType>&>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GpuMat_<DstType>(&) dst [4],
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridSplit_(
    const SrcPtr& src,
    GlobPtrSz<DstType>(&) dst [4],
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr1,
    class SrcPtr2,
    typename DstType,
    class Op,
    class MaskPtr
    >
__host__ void
gridTransformBinary(
    const SrcPtr1& src1,
    const SrcPtr2& src2,
    GpuMat_<DstType>& dst,
    const Op& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr1,
    class SrcPtr2,
    typename DstType,
    class Op,
    class MaskPtr
    >
__host__ void
gridTransformBinary(
    const SrcPtr1& src1,
    const SrcPtr2& src2,
    const GlobPtrSz<DstType>& dst,
    const Op& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr1,
    class SrcPtr2,
    typename DstType,
    class Op
    >
__host__ void
gridTransformBinary(
    const SrcPtr1& src1,
    const SrcPtr2& src2,
    GpuMat_<DstType>& dst,
    const Op& op,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr1,
    class SrcPtr2,
    typename DstType,
    class Op
    >
__host__ void
gridTransformBinary(
    const SrcPtr1& src1,
    const SrcPtr2& src2,
    const GlobPtrSz<DstType>& dst,
    const Op& op,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr1,
    class SrcPtr2,
    typename DstType,
    class BinOp,
    class MaskPtr
    >
__host__ void
gridTransformBinary_(
    const SrcPtr1& src1,
    const SrcPtr2& src2,
    GpuMat_<DstType>& dst,
    const BinOp& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr1,
    class SrcPtr2,
    typename DstType,
    class BinOp,
    class MaskPtr
    >
__host__ void
gridTransformBinary_(
    const SrcPtr1& src1,
    const SrcPtr2& src2,
    const GlobPtrSz<DstType>& dst,
    const BinOp& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr1,
    class SrcPtr2,
    typename DstType,
    class BinOp
    >
__host__ void
gridTransformBinary_(
    const SrcPtr1& src1,
    const SrcPtr2& src2,
    GpuMat_<DstType>& dst,
    const BinOp& op,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr1,
    class SrcPtr2,
    typename DstType,
    class BinOp
    >
__host__ void
gridTransformBinary_(
    const SrcPtr1& src1,
    const SrcPtr2& src2,
    const GlobPtrSz<DstType>& dst,
    const BinOp& op,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    class OpTuple
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    class OpTuple
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    class OpTuple
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    class OpTuple
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&, GpuMat_<D3>&>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>, GlobPtrSz<D3>>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class OpTuple
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&, GpuMat_<D3>&>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class OpTuple
    >
__host__ void
gridTransformTuple(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>, GlobPtrSz<D3>>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    class OpTuple
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    class OpTuple
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    class OpTuple
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    class OpTuple
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&, GpuMat_<D3>&>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class OpTuple,
    class MaskPtr
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>, GlobPtrSz<D3>>& dst,
    const OpTuple& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class OpTuple
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GpuMat_<D0>&, GpuMat_<D1>&, GpuMat_<D2>&, GpuMat_<D3>&>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename D0,
    typename D1,
    typename D2,
    typename D3,
    class OpTuple
    >
__host__ void
gridTransformTuple_(
    const SrcPtr& src,
    const tuple<GlobPtrSz<D0>, GlobPtrSz<D1>, GlobPtrSz<D2>, GlobPtrSz<D3>>& dst,
    const OpTuple& op,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    class Op,
    class MaskPtr
    >
__host__ void
gridTransformUnary(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    const Op& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    class Op,
    class MaskPtr
    >
__host__ void
gridTransformUnary(
    const SrcPtr& src,
    const GlobPtrSz<DstType>& dst,
    const Op& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    class Op
    >
__host__ void
gridTransformUnary(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    const Op& op,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType,
    class Op
    >
__host__ void
gridTransformUnary(
    const SrcPtr& src,
    const GlobPtrSz<DstType>& dst,
    const Op& op,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class UnOp,
    class MaskPtr
    >
__host__ void
gridTransformUnary_(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    const UnOp& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class UnOp,
    class MaskPtr
    >
__host__ void
gridTransformUnary_(
    const SrcPtr& src,
    const GlobPtrSz<DstType>& dst,
    const UnOp& op,
    const MaskPtr& mask,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class UnOp
    >
__host__ void
gridTransformUnary_(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    const UnOp& op,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType,
    class UnOp
    >
__host__ void
gridTransformUnary_(
    const SrcPtr& src,
    const GlobPtrSz<DstType>& dst,
    const UnOp& op,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType
    >
__host__ void
gridTranspose(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class SrcPtr,
    typename DstType
    >
__host__ void
gridTranspose(
    const SrcPtr& src,
    const GlobPtrSz<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridTranspose_(
    const SrcPtr& src,
    GpuMat_<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    class Policy,
    class SrcPtr,
    typename DstType
    >
__host__ void
gridTranspose_(
    const SrcPtr& src,
    const GlobPtrSz<DstType>& dst,
    Stream& stream = Stream::Null()
    );

template <
    int BIN_COUNT,
    class SrcPtr
    >
__host__ Expr<HistogramBody<BIN_COUNT, SrcPtr>>
histogram_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS4_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS4_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS4_to_BGR_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS4_to_BGR_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS4_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS4_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS4_to_BGRA_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS4_to_BGRA_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS4_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS4_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS4_to_RGB_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS4_to_RGB_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS4_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS4_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS4_to_RGBA_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS4_to_RGBA_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS_to_BGR_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS_to_BGR_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS_to_BGRA_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS_to_BGRA_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS_to_RGB_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS_to_RGB_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HLS_to_RGBA_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HLS_to_RGBA_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV4_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV4_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV4_to_BGR_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV4_to_BGR_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV4_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV4_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV4_to_BGRA_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV4_to_BGRA_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV4_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV4_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV4_to_RGB_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV4_to_RGB_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV4_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV4_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV4_to_RGBA_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV4_to_RGBA_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV_to_BGR_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV_to_BGR_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV_to_BGRA_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV_to_BGRA_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV_to_RGB_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV_to_RGB_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, HSV_to_RGBA_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
HSV_to_RGBA_FULL_(const SrcPtr& src);

__device__ __forceinline__ float1
hypot(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ float2
hypot(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ float3
hypot(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ float4
hypot(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ float1
hypot(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ float2
hypot(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ float3
hypot(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ float4
hypot(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ float4
hypot(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ float1
hypot(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ float2
hypot(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ float3
hypot(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ float4
hypot(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ float1
hypot(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ float2
hypot(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ float3
hypot(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ float4
hypot(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ float1
hypot(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ float2
hypot(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ float3
hypot(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ float2
hypot(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ float3
hypot(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ float4
hypot(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ float1
hypot(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ float4
hypot(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ float1
hypot(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ float2
hypot(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ float3
hypot(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ double4
hypot(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ double2
hypot(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ double3
hypot(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ double1
hypot(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ float1
hypot(
    const uchar1& a,
    float s
    );

__device__ __forceinline__ float1
hypot(
    float s,
    const uchar1& b
    );

__device__ __forceinline__ float2
hypot(
    const uchar2& a,
    float s
    );

__device__ __forceinline__ float2
hypot(
    float s,
    const uchar2& b
    );

__device__ __forceinline__ float3
hypot(
    const uchar3& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    float s,
    const uchar3& b
    );

__device__ __forceinline__ float4
hypot(
    const uchar4& a,
    float s
    );

__device__ __forceinline__ float4
hypot(
    float s,
    const uchar4& b
    );

__device__ __forceinline__ double4
hypot(
    double s,
    const uchar4& b
    );

__device__ __forceinline__ double2
hypot(
    double s,
    const uchar2& b
    );

__device__ __forceinline__ double1
hypot(
    const uchar1& a,
    double s
    );

__device__ __forceinline__ double1
hypot(
    double s,
    const uchar1& b
    );

__device__ __forceinline__ double2
hypot(
    const uchar2& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    const uchar3& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    double s,
    const uchar3& b
    );

__device__ __forceinline__ double4
hypot(
    const uchar4& a,
    double s
    );

__device__ __forceinline__ float4
hypot(
    float s,
    const char4& b
    );

__device__ __forceinline__ float2
hypot(
    float s,
    const char2& b
    );

__device__ __forceinline__ float1
hypot(
    const char1& a,
    float s
    );

__device__ __forceinline__ float1
hypot(
    float s,
    const char1& b
    );

__device__ __forceinline__ float2
hypot(
    const char2& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    const char3& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    float s,
    const char3& b
    );

__device__ __forceinline__ float4
hypot(
    const char4& a,
    float s
    );

__device__ __forceinline__ double2
hypot(
    double s,
    const char2& b
    );

__device__ __forceinline__ double4
hypot(
    double s,
    const char4& b
    );

__device__ __forceinline__ double1
hypot(
    const char1& a,
    double s
    );

__device__ __forceinline__ double1
hypot(
    double s,
    const char1& b
    );

__device__ __forceinline__ double2
hypot(
    const char2& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    const char3& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    double s,
    const char3& b
    );

__device__ __forceinline__ double4
hypot(
    const char4& a,
    double s
    );

__device__ __forceinline__ float2
hypot(
    float s,
    const ushort2& b
    );

__device__ __forceinline__ float1
hypot(
    const ushort1& a,
    float s
    );

__device__ __forceinline__ float1
hypot(
    float s,
    const ushort1& b
    );

__device__ __forceinline__ float2
hypot(
    const ushort2& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    const ushort3& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    float s,
    const ushort3& b
    );

__device__ __forceinline__ float4
hypot(
    const ushort4& a,
    float s
    );

__device__ __forceinline__ float4
hypot(
    float s,
    const ushort4& b
    );

__device__ __forceinline__ double2
hypot(
    double s,
    const ushort2& b
    );

__device__ __forceinline__ double4
hypot(
    double s,
    const ushort4& b
    );

__device__ __forceinline__ double1
hypot(
    const ushort1& a,
    double s
    );

__device__ __forceinline__ double1
hypot(
    double s,
    const ushort1& b
    );

__device__ __forceinline__ double2
hypot(
    const ushort2& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    const ushort3& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    double s,
    const ushort3& b
    );

__device__ __forceinline__ double4
hypot(
    const ushort4& a,
    double s
    );

__device__ __forceinline__ float2
hypot(
    float s,
    const short2& b
    );

__device__ __forceinline__ float1
hypot(
    const short1& a,
    float s
    );

__device__ __forceinline__ float1
hypot(
    float s,
    const short1& b
    );

__device__ __forceinline__ float2
hypot(
    const short2& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    const short3& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    float s,
    const short3& b
    );

__device__ __forceinline__ float4
hypot(
    const short4& a,
    float s
    );

__device__ __forceinline__ float4
hypot(
    float s,
    const short4& b
    );

__device__ __forceinline__ double2
hypot(
    double s,
    const short2& b
    );

__device__ __forceinline__ double4
hypot(
    double s,
    const short4& b
    );

__device__ __forceinline__ double1
hypot(
    const short1& a,
    double s
    );

__device__ __forceinline__ double1
hypot(
    double s,
    const short1& b
    );

__device__ __forceinline__ double2
hypot(
    const short2& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    const short3& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    double s,
    const short3& b
    );

__device__ __forceinline__ double4
hypot(
    const short4& a,
    double s
    );

__device__ __forceinline__ float2
hypot(
    float s,
    const uint2& b
    );

__device__ __forceinline__ float1
hypot(
    const uint1& a,
    float s
    );

__device__ __forceinline__ float1
hypot(
    float s,
    const uint1& b
    );

__device__ __forceinline__ float2
hypot(
    const uint2& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    const uint3& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    float s,
    const uint3& b
    );

__device__ __forceinline__ float4
hypot(
    const uint4& a,
    float s
    );

__device__ __forceinline__ float4
hypot(
    float s,
    const uint4& b
    );

__device__ __forceinline__ double4
hypot(
    double s,
    const uint4& b
    );

__device__ __forceinline__ double2
hypot(
    double s,
    const uint2& b
    );

__device__ __forceinline__ double1
hypot(
    const uint1& a,
    double s
    );

__device__ __forceinline__ double1
hypot(
    double s,
    const uint1& b
    );

__device__ __forceinline__ double2
hypot(
    const uint2& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    const uint3& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    double s,
    const uint3& b
    );

__device__ __forceinline__ double4
hypot(
    const uint4& a,
    double s
    );

__device__ __forceinline__ float2
hypot(
    float s,
    const int2& b
    );

__device__ __forceinline__ float1
hypot(
    const int1& a,
    float s
    );

__device__ __forceinline__ float1
hypot(
    float s,
    const int1& b
    );

__device__ __forceinline__ float2
hypot(
    const int2& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    const int3& a,
    float s
    );

__device__ __forceinline__ float3
hypot(
    float s,
    const int3& b
    );

__device__ __forceinline__ float4
hypot(
    const int4& a,
    float s
    );

__device__ __forceinline__ float4
hypot(
    float s,
    const int4& b
    );

__device__ __forceinline__ double4
hypot(
    double s,
    const int4& b
    );

__device__ __forceinline__ double2
hypot(
    double s,
    const int2& b
    );

__device__ __forceinline__ double1
hypot(
    const int1& a,
    double s
    );

__device__ __forceinline__ double1
hypot(
    double s,
    const int1& b
    );

__device__ __forceinline__ double2
hypot(
    const int2& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    const int3& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    double s,
    const int3& b
    );

__device__ __forceinline__ double4
hypot(
    const int4& a,
    double s
    );

__device__ __forceinline__ float3
hypot(
    float s,
    const float3& b
    );

__device__ __forceinline__ float4
hypot(
    const float4& a,
    float s
    );

__device__ __forceinline__ float4
hypot(
    float s,
    const float4& b
    );

__device__ __forceinline__ float3
hypot(
    const float3& a,
    float s
    );

__device__ __forceinline__ float2
hypot(
    float s,
    const float2& b
    );

__device__ __forceinline__ float1
hypot(
    const float1& a,
    float s
    );

__device__ __forceinline__ float1
hypot(
    float s,
    const float1& b
    );

__device__ __forceinline__ float2
hypot(
    const float2& a,
    float s
    );

__device__ __forceinline__ double1
hypot(
    const float1& a,
    double s
    );

__device__ __forceinline__ double1
hypot(
    double s,
    const float1& b
    );

__device__ __forceinline__ double2
hypot(
    const float2& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    const float3& a,
    double s
    );

__device__ __forceinline__ double3
hypot(
    double s,
    const float3& b
    );

__device__ __forceinline__ double4
hypot(
    const float4& a,
    double s
    );

__device__ __forceinline__ double2
hypot(
    double s,
    const float2& b
    );

__device__ __forceinline__ double4
hypot(
    double s,
    const float4& b
    );

__device__ __forceinline__ double1
hypot(
    const double1& a,
    double s
    );

__device__ __forceinline__ double1
hypot(
    double s,
    const double1& b
    );

__device__ __forceinline__ double2
hypot(
    const double2& a,
    double s
    );

__device__ __forceinline__ double4
hypot(
    const double4& a,
    double s
    );

__device__ __forceinline__ double4
hypot(
    double s,
    const double4& b
    );

__device__ __forceinline__ double3
hypot(
    double s,
    const double3& b
    );

__device__ __forceinline__ double3
hypot(
    const double3& a,
    double s
    );

__device__ __forceinline__ double2
hypot(
    double s,
    const double2& b
    );

template <
    class SrcPtr1,
    class SrcPtr2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<SrcPtr1>::ptr_type, typename PtrTraits<SrcPtr2>::ptr_type, hypot_func<typename LargerType<typename PtrTraits<SrcPtr1>::value_type, typename PtrTraits<SrcPtr2>::value_type>::type>>>
hypot_(
    const SrcPtr1& src1,
    const SrcPtr2& src2
    );

template <class SrcPtr>
__host__ Expr<IntegralBody<SrcPtr>>
integral_(const SrcPtr& src);

template <class SrcPtr>
__host__ IntegerAreaInterPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
interArea(
    const SrcPtr& src,
    Size areaSize
    );

template <class SrcPtr>
__host__ CommonAreaInterPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
interArea(
    const SrcPtr& src,
    Size2f areaSize
    );

template <class SrcPtr>
__host__ CubicInterPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
interCubic(const SrcPtr& src);

template <class SrcPtr>
__host__ LinearInterPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
interLinear(const SrcPtr& src);

template <class SrcPtr>
__host__ NearestInterPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
interNearest(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab4_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab4_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab4_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab4_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab4_to_LBGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab4_to_LBGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab4_to_LBGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab4_to_LBGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab4_to_LRGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab4_to_LRGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab4_to_LRGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab4_to_LRGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab4_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab4_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab4_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab4_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab_to_LBGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab_to_LBGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab_to_LBGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab_to_LBGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab_to_LRGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab_to_LRGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab_to_LRGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab_to_LRGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Lab_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Lab_to_RGBA_(const SrcPtr& src);

template <
    int ksize,
    class SrcPtr
    >
__host__ Expr<LaplacianPtrSz<ksize, typename PtrTraits<SrcPtr>::ptr_type>>
laplacian_(const SrcPtr& src);

template <
    int ksize,
    class SrcPtr
    >
__host__ LaplacianPtrSz<ksize, typename PtrTraits<SrcPtr>::ptr_type>
laplacianPtr(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LBGR_to_Lab4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LBGR_to_Lab4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LBGR_to_Lab_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LBGR_to_Lab_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LBGR_to_Luv4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LBGR_to_Luv4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LBGR_to_Luv_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LBGR_to_Luv_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LBGRA_to_Lab4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LBGRA_to_Lab4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LBGRA_to_Lab_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LBGRA_to_Lab_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LBGRA_to_Luv4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LBGRA_to_Luv4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LBGRA_to_Luv_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LBGRA_to_Luv_(const SrcPtr& src);

__device__ __forceinline__ float1
log(const uchar1& a);

__device__ __forceinline__ float2
log(const uchar2& a);

__device__ __forceinline__ float3
log(const uchar3& a);

__device__ __forceinline__ float4
log(const uchar4& a);

__device__ __forceinline__ float1
log(const char1& a);

__device__ __forceinline__ float2
log(const char2& a);

__device__ __forceinline__ float3
log(const char3& a);

__device__ __forceinline__ float4
log(const char4& a);

__device__ __forceinline__ float1
log(const ushort1& a);

__device__ __forceinline__ float2
log(const ushort2& a);

__device__ __forceinline__ float3
log(const ushort3& a);

__device__ __forceinline__ float4
log(const ushort4& a);

__device__ __forceinline__ float1
log(const short1& a);

__device__ __forceinline__ float2
log(const short2& a);

__device__ __forceinline__ float3
log(const short3& a);

__device__ __forceinline__ float4
log(const short4& a);

__device__ __forceinline__ float1
log(const int1& a);

__device__ __forceinline__ float2
log(const int2& a);

__device__ __forceinline__ float3
log(const int3& a);

__device__ __forceinline__ float4
log(const int4& a);

__device__ __forceinline__ float1
log(const uint1& a);

__device__ __forceinline__ float2
log(const uint2& a);

__device__ __forceinline__ float3
log(const uint3& a);

__device__ __forceinline__ float4
log(const uint4& a);

__device__ __forceinline__ float1
log(const float1& a);

__device__ __forceinline__ float2
log(const float2& a);

__device__ __forceinline__ float3
log(const float3& a);

__device__ __forceinline__ float4
log(const float4& a);

__device__ __forceinline__ double1
log(const double1& a);

__device__ __forceinline__ double2
log(const double2& a);

__device__ __forceinline__ double3
log(const double3& a);

__device__ __forceinline__ double4
log(const double4& a);

__device__ __forceinline__ float1
log10(const uchar1& a);

__device__ __forceinline__ float2
log10(const uchar2& a);

__device__ __forceinline__ float3
log10(const uchar3& a);

__device__ __forceinline__ float4
log10(const uchar4& a);

__device__ __forceinline__ float1
log10(const char1& a);

__device__ __forceinline__ float2
log10(const char2& a);

__device__ __forceinline__ float3
log10(const char3& a);

__device__ __forceinline__ float4
log10(const char4& a);

__device__ __forceinline__ float1
log10(const ushort1& a);

__device__ __forceinline__ float2
log10(const ushort2& a);

__device__ __forceinline__ float3
log10(const ushort3& a);

__device__ __forceinline__ float4
log10(const ushort4& a);

__device__ __forceinline__ float1
log10(const short1& a);

__device__ __forceinline__ float2
log10(const short2& a);

__device__ __forceinline__ float3
log10(const short3& a);

__device__ __forceinline__ float4
log10(const short4& a);

__device__ __forceinline__ float1
log10(const int1& a);

__device__ __forceinline__ float2
log10(const int2& a);

__device__ __forceinline__ float3
log10(const int3& a);

__device__ __forceinline__ float4
log10(const int4& a);

__device__ __forceinline__ float1
log10(const uint1& a);

__device__ __forceinline__ float2
log10(const uint2& a);

__device__ __forceinline__ float3
log10(const uint3& a);

__device__ __forceinline__ float4
log10(const uint4& a);

__device__ __forceinline__ float1
log10(const float1& a);

__device__ __forceinline__ float2
log10(const float2& a);

__device__ __forceinline__ float3
log10(const float3& a);

__device__ __forceinline__ float4
log10(const float4& a);

__device__ __forceinline__ double1
log10(const double1& a);

__device__ __forceinline__ double2
log10(const double2& a);

__device__ __forceinline__ double3
log10(const double3& a);

__device__ __forceinline__ double4
log10(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, log10_func<typename PtrTraits<SrcPtr>::value_type>>>
log10_(const SrcPtr& src);

__device__ __forceinline__ float1
log2(const uchar1& a);

__device__ __forceinline__ float2
log2(const uchar2& a);

__device__ __forceinline__ float3
log2(const uchar3& a);

__device__ __forceinline__ float4
log2(const uchar4& a);

__device__ __forceinline__ float1
log2(const char1& a);

__device__ __forceinline__ float2
log2(const char2& a);

__device__ __forceinline__ float3
log2(const char3& a);

__device__ __forceinline__ float4
log2(const char4& a);

__device__ __forceinline__ float1
log2(const ushort1& a);

__device__ __forceinline__ float2
log2(const ushort2& a);

__device__ __forceinline__ float3
log2(const ushort3& a);

__device__ __forceinline__ float4
log2(const ushort4& a);

__device__ __forceinline__ float1
log2(const short1& a);

__device__ __forceinline__ float2
log2(const short2& a);

__device__ __forceinline__ float3
log2(const short3& a);

__device__ __forceinline__ float4
log2(const short4& a);

__device__ __forceinline__ float1
log2(const int1& a);

__device__ __forceinline__ float2
log2(const int2& a);

__device__ __forceinline__ float3
log2(const int3& a);

__device__ __forceinline__ float4
log2(const int4& a);

__device__ __forceinline__ float1
log2(const uint1& a);

__device__ __forceinline__ float2
log2(const uint2& a);

__device__ __forceinline__ float3
log2(const uint3& a);

__device__ __forceinline__ float4
log2(const uint4& a);

__device__ __forceinline__ float1
log2(const float1& a);

__device__ __forceinline__ float2
log2(const float2& a);

__device__ __forceinline__ float3
log2(const float3& a);

__device__ __forceinline__ float4
log2(const float4& a);

__device__ __forceinline__ double1
log2(const double1& a);

__device__ __forceinline__ double2
log2(const double2& a);

__device__ __forceinline__ double3
log2(const double3& a);

__device__ __forceinline__ double4
log2(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, log2_func<typename PtrTraits<SrcPtr>::value_type>>>
log2_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, log_func<typename PtrTraits<SrcPtr>::value_type>>>
log_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LRGB_to_Lab4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LRGB_to_Lab4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LRGB_to_Lab_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LRGB_to_Lab_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LRGB_to_Luv4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LRGB_to_Luv4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LRGB_to_Luv_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LRGB_to_Luv_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LRGBA_to_Lab4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LRGBA_to_Lab4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LRGBA_to_Lab_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LRGBA_to_Lab_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LRGBA_to_Luv4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LRGBA_to_Luv4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, LRGBA_to_Luv_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
LRGBA_to_Luv_(const SrcPtr& src);

template <
    class SrcPtr,
    class TablePtr
    >
__host__ Expr<LutPtrSz<typename PtrTraits<SrcPtr>::ptr_type, typename PtrTraits<TablePtr>::ptr_type>>
lut_(
    const SrcPtr& src,
    const TablePtr& tbl
    );

template <
    class SrcPtr,
    class TablePtr
    >
__host__ LutPtrSz<typename PtrTraits<SrcPtr>::ptr_type, typename PtrTraits<TablePtr>::ptr_type>
lutPtr(
    const SrcPtr& src,
    const TablePtr& tbl
    );

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv4_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv4_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv4_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv4_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv4_to_LBGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv4_to_LBGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv4_to_LBGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv4_to_LBGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv4_to_LRGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv4_to_LRGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv4_to_LRGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv4_to_LRGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv4_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv4_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv4_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv4_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv_to_LBGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv_to_LBGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv_to_LBGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv_to_LBGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv_to_LRGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv_to_LRGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv_to_LRGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv_to_LRGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Luv_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
Luv_to_RGBA_(const SrcPtr& src);

template <
    class SrcPtr1,
    class SrcPtr2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<SrcPtr1>::ptr_type, typename PtrTraits<SrcPtr2>::ptr_type, magnitude_func<typename LargerType<typename PtrTraits<SrcPtr1>::value_type, typename PtrTraits<SrcPtr2>::value_type>::type>>>
magnitude_(
    const SrcPtr1& src1,
    const SrcPtr2& src2
    );

template <class Body>
__host__ Expr<Body>
makeExpr(const Body& body);

__device__ __forceinline__ uchar1
max(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
max(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
max(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
max(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ char1
max(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ char2
max(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ char3
max(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ char4
max(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ ushort4
max(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ ushort1
max(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ ushort2
max(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ ushort3
max(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ short4
max(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ short1
max(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ short2
max(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ short3
max(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ uint4
max(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uint1
max(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uint2
max(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uint3
max(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ int4
max(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ int1
max(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ int2
max(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ int3
max(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ float4
max(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ float1
max(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ float2
max(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ float3
max(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ double4
max(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ double1
max(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ double2
max(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ double3
max(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ uchar1
max(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar1
max(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
max(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar2
max(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
max(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar3
max(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
max(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar4
max(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ float2
max(
    float s,
    const uchar2& b
    );

__device__ __forceinline__ float4
max(
    float s,
    const uchar4& b
    );

__device__ __forceinline__ float1
max(
    const uchar1& a,
    float s
    );

__device__ __forceinline__ float1
max(
    float s,
    const uchar1& b
    );

__device__ __forceinline__ float2
max(
    const uchar2& a,
    float s
    );

__device__ __forceinline__ float3
max(
    const uchar3& a,
    float s
    );

__device__ __forceinline__ float3
max(
    float s,
    const uchar3& b
    );

__device__ __forceinline__ float4
max(
    const uchar4& a,
    float s
    );

__device__ __forceinline__ double2
max(
    double s,
    const uchar2& b
    );

__device__ __forceinline__ double1
max(
    const uchar1& a,
    double s
    );

__device__ __forceinline__ double1
max(
    double s,
    const uchar1& b
    );

__device__ __forceinline__ double2
max(
    const uchar2& a,
    double s
    );

__device__ __forceinline__ double3
max(
    const uchar3& a,
    double s
    );

__device__ __forceinline__ double3
max(
    double s,
    const uchar3& b
    );

__device__ __forceinline__ double4
max(
    const uchar4& a,
    double s
    );

__device__ __forceinline__ double4
max(
    double s,
    const uchar4& b
    );

__device__ __forceinline__ char4
max(
    char s,
    const char4& b
    );

__device__ __forceinline__ char2
max(
    char s,
    const char2& b
    );

__device__ __forceinline__ char1
max(
    const char1& a,
    char s
    );

__device__ __forceinline__ char1
max(
    char s,
    const char1& b
    );

__device__ __forceinline__ char2
max(
    const char2& a,
    char s
    );

__device__ __forceinline__ char3
max(
    const char3& a,
    char s
    );

__device__ __forceinline__ char3
max(
    char s,
    const char3& b
    );

__device__ __forceinline__ char4
max(
    const char4& a,
    char s
    );

__device__ __forceinline__ float2
max(
    float s,
    const char2& b
    );

__device__ __forceinline__ float1
max(
    const char1& a,
    float s
    );

__device__ __forceinline__ float1
max(
    float s,
    const char1& b
    );

__device__ __forceinline__ float2
max(
    const char2& a,
    float s
    );

__device__ __forceinline__ float3
max(
    const char3& a,
    float s
    );

__device__ __forceinline__ float3
max(
    float s,
    const char3& b
    );

__device__ __forceinline__ float4
max(
    const char4& a,
    float s
    );

__device__ __forceinline__ float4
max(
    float s,
    const char4& b
    );

__device__ __forceinline__ double2
max(
    double s,
    const char2& b
    );

__device__ __forceinline__ double4
max(
    double s,
    const char4& b
    );

__device__ __forceinline__ double1
max(
    const char1& a,
    double s
    );

__device__ __forceinline__ double1
max(
    double s,
    const char1& b
    );

__device__ __forceinline__ double2
max(
    const char2& a,
    double s
    );

__device__ __forceinline__ double3
max(
    const char3& a,
    double s
    );

__device__ __forceinline__ double3
max(
    double s,
    const char3& b
    );

__device__ __forceinline__ double4
max(
    const char4& a,
    double s
    );

__device__ __forceinline__ ushort2
max(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ ushort1
max(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ ushort1
max(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ ushort2
max(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ ushort3
max(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ ushort3
max(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ ushort4
max(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ ushort4
max(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ float2
max(
    float s,
    const ushort2& b
    );

__device__ __forceinline__ float4
max(
    float s,
    const ushort4& b
    );

__device__ __forceinline__ float1
max(
    const ushort1& a,
    float s
    );

__device__ __forceinline__ float1
max(
    float s,
    const ushort1& b
    );

__device__ __forceinline__ float2
max(
    const ushort2& a,
    float s
    );

__device__ __forceinline__ float3
max(
    const ushort3& a,
    float s
    );

__device__ __forceinline__ float3
max(
    float s,
    const ushort3& b
    );

__device__ __forceinline__ float4
max(
    const ushort4& a,
    float s
    );

__device__ __forceinline__ double2
max(
    double s,
    const ushort2& b
    );

__device__ __forceinline__ double1
max(
    const ushort1& a,
    double s
    );

__device__ __forceinline__ double1
max(
    double s,
    const ushort1& b
    );

__device__ __forceinline__ double2
max(
    const ushort2& a,
    double s
    );

__device__ __forceinline__ double3
max(
    const ushort3& a,
    double s
    );

__device__ __forceinline__ double3
max(
    double s,
    const ushort3& b
    );

__device__ __forceinline__ double4
max(
    const ushort4& a,
    double s
    );

__device__ __forceinline__ double4
max(
    double s,
    const ushort4& b
    );

__device__ __forceinline__ short2
max(
    short s,
    const short2& b
    );

__device__ __forceinline__ short4
max(
    short s,
    const short4& b
    );

__device__ __forceinline__ short1
max(
    const short1& a,
    short s
    );

__device__ __forceinline__ short1
max(
    short s,
    const short1& b
    );

__device__ __forceinline__ short2
max(
    const short2& a,
    short s
    );

__device__ __forceinline__ short3
max(
    const short3& a,
    short s
    );

__device__ __forceinline__ short3
max(
    short s,
    const short3& b
    );

__device__ __forceinline__ short4
max(
    const short4& a,
    short s
    );

__device__ __forceinline__ float2
max(
    float s,
    const short2& b
    );

__device__ __forceinline__ float1
max(
    const short1& a,
    float s
    );

__device__ __forceinline__ float1
max(
    float s,
    const short1& b
    );

__device__ __forceinline__ float2
max(
    const short2& a,
    float s
    );

__device__ __forceinline__ float3
max(
    const short3& a,
    float s
    );

__device__ __forceinline__ float3
max(
    float s,
    const short3& b
    );

__device__ __forceinline__ float4
max(
    const short4& a,
    float s
    );

__device__ __forceinline__ float4
max(
    float s,
    const short4& b
    );

__device__ __forceinline__ double2
max(
    double s,
    const short2& b
    );

__device__ __forceinline__ double4
max(
    double s,
    const short4& b
    );

__device__ __forceinline__ double1
max(
    const short1& a,
    double s
    );

__device__ __forceinline__ double1
max(
    double s,
    const short1& b
    );

__device__ __forceinline__ double2
max(
    const short2& a,
    double s
    );

__device__ __forceinline__ double3
max(
    const short3& a,
    double s
    );

__device__ __forceinline__ double3
max(
    double s,
    const short3& b
    );

__device__ __forceinline__ double4
max(
    const short4& a,
    double s
    );

__device__ __forceinline__ uint2
max(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uint1
max(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uint1
max(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uint2
max(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uint3
max(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uint3
max(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uint4
max(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uint4
max(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ float2
max(
    float s,
    const uint2& b
    );

__device__ __forceinline__ float4
max(
    float s,
    const uint4& b
    );

__device__ __forceinline__ float1
max(
    const uint1& a,
    float s
    );

__device__ __forceinline__ float1
max(
    float s,
    const uint1& b
    );

__device__ __forceinline__ float2
max(
    const uint2& a,
    float s
    );

__device__ __forceinline__ float3
max(
    const uint3& a,
    float s
    );

__device__ __forceinline__ float3
max(
    float s,
    const uint3& b
    );

__device__ __forceinline__ float4
max(
    const uint4& a,
    float s
    );

__device__ __forceinline__ double2
max(
    double s,
    const uint2& b
    );

__device__ __forceinline__ double1
max(
    const uint1& a,
    double s
    );

__device__ __forceinline__ double1
max(
    double s,
    const uint1& b
    );

__device__ __forceinline__ double2
max(
    const uint2& a,
    double s
    );

__device__ __forceinline__ double3
max(
    const uint3& a,
    double s
    );

__device__ __forceinline__ double3
max(
    double s,
    const uint3& b
    );

__device__ __forceinline__ double4
max(
    const uint4& a,
    double s
    );

__device__ __forceinline__ double4
max(
    double s,
    const uint4& b
    );

__device__ __forceinline__ int2
max(
    int s,
    const int2& b
    );

__device__ __forceinline__ int4
max(
    int s,
    const int4& b
    );

__device__ __forceinline__ int1
max(
    const int1& a,
    int s
    );

__device__ __forceinline__ int1
max(
    int s,
    const int1& b
    );

__device__ __forceinline__ int2
max(
    const int2& a,
    int s
    );

__device__ __forceinline__ int3
max(
    const int3& a,
    int s
    );

__device__ __forceinline__ int3
max(
    int s,
    const int3& b
    );

__device__ __forceinline__ int4
max(
    const int4& a,
    int s
    );

__device__ __forceinline__ float2
max(
    float s,
    const int2& b
    );

__device__ __forceinline__ float1
max(
    const int1& a,
    float s
    );

__device__ __forceinline__ float1
max(
    float s,
    const int1& b
    );

__device__ __forceinline__ float2
max(
    const int2& a,
    float s
    );

__device__ __forceinline__ float3
max(
    const int3& a,
    float s
    );

__device__ __forceinline__ float3
max(
    float s,
    const int3& b
    );

__device__ __forceinline__ float4
max(
    const int4& a,
    float s
    );

__device__ __forceinline__ float4
max(
    float s,
    const int4& b
    );

__device__ __forceinline__ double4
max(
    double s,
    const int4& b
    );

__device__ __forceinline__ double2
max(
    double s,
    const int2& b
    );

__device__ __forceinline__ double1
max(
    const int1& a,
    double s
    );

__device__ __forceinline__ double1
max(
    double s,
    const int1& b
    );

__device__ __forceinline__ double2
max(
    const int2& a,
    double s
    );

__device__ __forceinline__ double3
max(
    const int3& a,
    double s
    );

__device__ __forceinline__ double3
max(
    double s,
    const int3& b
    );

__device__ __forceinline__ double4
max(
    const int4& a,
    double s
    );

__device__ __forceinline__ float2
max(
    float s,
    const float2& b
    );

__device__ __forceinline__ float1
max(
    const float1& a,
    float s
    );

__device__ __forceinline__ float1
max(
    float s,
    const float1& b
    );

__device__ __forceinline__ float2
max(
    const float2& a,
    float s
    );

__device__ __forceinline__ float3
max(
    const float3& a,
    float s
    );

__device__ __forceinline__ float3
max(
    float s,
    const float3& b
    );

__device__ __forceinline__ float4
max(
    const float4& a,
    float s
    );

__device__ __forceinline__ float4
max(
    float s,
    const float4& b
    );

__device__ __forceinline__ double2
max(
    double s,
    const float2& b
    );

__device__ __forceinline__ double4
max(
    double s,
    const float4& b
    );

__device__ __forceinline__ double1
max(
    const float1& a,
    double s
    );

__device__ __forceinline__ double1
max(
    double s,
    const float1& b
    );

__device__ __forceinline__ double2
max(
    const float2& a,
    double s
    );

__device__ __forceinline__ double3
max(
    const float3& a,
    double s
    );

__device__ __forceinline__ double3
max(
    double s,
    const float3& b
    );

__device__ __forceinline__ double4
max(
    const float4& a,
    double s
    );

__device__ __forceinline__ double1
max(
    const double1& a,
    double s
    );

__device__ __forceinline__ double1
max(
    double s,
    const double1& b
    );

__device__ __forceinline__ double2
max(
    const double2& a,
    double s
    );

__device__ __forceinline__ double3
max(
    const double3& a,
    double s
    );

__device__ __forceinline__ double3
max(
    double s,
    const double3& b
    );

__device__ __forceinline__ double4
max(
    const double4& a,
    double s
    );

__device__ __forceinline__ double4
max(
    double s,
    const double4& b
    );

__device__ __forceinline__ double2
max(
    double s,
    const double2& b
    );

template <
    class SrcPtr1,
    class SrcPtr2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<SrcPtr1>::ptr_type, typename PtrTraits<SrcPtr2>::ptr_type, maximum<typename LargerType<typename PtrTraits<SrcPtr1>::value_type, typename PtrTraits<SrcPtr2>::value_type>::type>>>
max_(
    const SrcPtr1& src1,
    const SrcPtr2& src2
    );

template <class SrcPtr>
__host__ Expr<FindMaxValExprBody<SrcPtr>>
maxVal_(const SrcPtr& src);

__device__ __forceinline__ uchar4
min(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
min(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
min(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
min(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ char4
min(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ char1
min(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ char2
min(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ char3
min(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ ushort4
min(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ ushort1
min(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ ushort2
min(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ ushort3
min(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ short4
min(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ short1
min(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ short2
min(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ short3
min(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ uint4
min(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uint1
min(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uint2
min(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uint3
min(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ int1
min(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ int2
min(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ int3
min(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ int4
min(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ float4
min(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ float1
min(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ float2
min(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ float3
min(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ double2
min(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ double3
min(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ double4
min(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ double1
min(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ uchar4
min(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar2
min(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar1
min(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar1
min(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
min(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar3
min(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar3
min(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
min(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ float2
min(
    float s,
    const uchar2& b
    );

__device__ __forceinline__ float1
min(
    const uchar1& a,
    float s
    );

__device__ __forceinline__ float1
min(
    float s,
    const uchar1& b
    );

__device__ __forceinline__ float2
min(
    const uchar2& a,
    float s
    );

__device__ __forceinline__ float3
min(
    const uchar3& a,
    float s
    );

__device__ __forceinline__ float3
min(
    float s,
    const uchar3& b
    );

__device__ __forceinline__ float4
min(
    const uchar4& a,
    float s
    );

__device__ __forceinline__ float4
min(
    float s,
    const uchar4& b
    );

__device__ __forceinline__ double2
min(
    double s,
    const uchar2& b
    );

__device__ __forceinline__ double4
min(
    double s,
    const uchar4& b
    );

__device__ __forceinline__ double1
min(
    const uchar1& a,
    double s
    );

__device__ __forceinline__ double1
min(
    double s,
    const uchar1& b
    );

__device__ __forceinline__ double2
min(
    const uchar2& a,
    double s
    );

__device__ __forceinline__ double3
min(
    const uchar3& a,
    double s
    );

__device__ __forceinline__ double3
min(
    double s,
    const uchar3& b
    );

__device__ __forceinline__ double4
min(
    const uchar4& a,
    double s
    );

__device__ __forceinline__ char2
min(
    char s,
    const char2& b
    );

__device__ __forceinline__ char1
min(
    const char1& a,
    char s
    );

__device__ __forceinline__ char1
min(
    char s,
    const char1& b
    );

__device__ __forceinline__ char2
min(
    const char2& a,
    char s
    );

__device__ __forceinline__ char3
min(
    const char3& a,
    char s
    );

__device__ __forceinline__ char3
min(
    char s,
    const char3& b
    );

__device__ __forceinline__ char4
min(
    const char4& a,
    char s
    );

__device__ __forceinline__ char4
min(
    char s,
    const char4& b
    );

__device__ __forceinline__ float4
min(
    float s,
    const char4& b
    );

__device__ __forceinline__ float2
min(
    float s,
    const char2& b
    );

__device__ __forceinline__ float1
min(
    const char1& a,
    float s
    );

__device__ __forceinline__ float1
min(
    float s,
    const char1& b
    );

__device__ __forceinline__ float2
min(
    const char2& a,
    float s
    );

__device__ __forceinline__ float3
min(
    const char3& a,
    float s
    );

__device__ __forceinline__ float3
min(
    float s,
    const char3& b
    );

__device__ __forceinline__ float4
min(
    const char4& a,
    float s
    );

__device__ __forceinline__ double2
min(
    double s,
    const char2& b
    );

__device__ __forceinline__ double1
min(
    const char1& a,
    double s
    );

__device__ __forceinline__ double1
min(
    double s,
    const char1& b
    );

__device__ __forceinline__ double2
min(
    const char2& a,
    double s
    );

__device__ __forceinline__ double3
min(
    const char3& a,
    double s
    );

__device__ __forceinline__ double3
min(
    double s,
    const char3& b
    );

__device__ __forceinline__ double4
min(
    const char4& a,
    double s
    );

__device__ __forceinline__ double4
min(
    double s,
    const char4& b
    );

__device__ __forceinline__ ushort4
min(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ ushort2
min(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ ushort1
min(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ ushort1
min(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ ushort2
min(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ ushort3
min(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ ushort3
min(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ ushort4
min(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ float4
min(
    float s,
    const ushort4& b
    );

__device__ __forceinline__ float2
min(
    float s,
    const ushort2& b
    );

__device__ __forceinline__ float1
min(
    const ushort1& a,
    float s
    );

__device__ __forceinline__ float1
min(
    float s,
    const ushort1& b
    );

__device__ __forceinline__ float2
min(
    const ushort2& a,
    float s
    );

__device__ __forceinline__ float3
min(
    const ushort3& a,
    float s
    );

__device__ __forceinline__ float3
min(
    float s,
    const ushort3& b
    );

__device__ __forceinline__ float4
min(
    const ushort4& a,
    float s
    );

__device__ __forceinline__ double4
min(
    double s,
    const ushort4& b
    );

__device__ __forceinline__ double2
min(
    double s,
    const ushort2& b
    );

__device__ __forceinline__ double1
min(
    const ushort1& a,
    double s
    );

__device__ __forceinline__ double1
min(
    double s,
    const ushort1& b
    );

__device__ __forceinline__ double2
min(
    const ushort2& a,
    double s
    );

__device__ __forceinline__ double3
min(
    const ushort3& a,
    double s
    );

__device__ __forceinline__ double3
min(
    double s,
    const ushort3& b
    );

__device__ __forceinline__ double4
min(
    const ushort4& a,
    double s
    );

__device__ __forceinline__ short2
min(
    short s,
    const short2& b
    );

__device__ __forceinline__ short1
min(
    const short1& a,
    short s
    );

__device__ __forceinline__ short1
min(
    short s,
    const short1& b
    );

__device__ __forceinline__ short2
min(
    const short2& a,
    short s
    );

__device__ __forceinline__ short3
min(
    const short3& a,
    short s
    );

__device__ __forceinline__ short3
min(
    short s,
    const short3& b
    );

__device__ __forceinline__ short4
min(
    const short4& a,
    short s
    );

__device__ __forceinline__ short4
min(
    short s,
    const short4& b
    );

__device__ __forceinline__ float4
min(
    float s,
    const short4& b
    );

__device__ __forceinline__ float2
min(
    float s,
    const short2& b
    );

__device__ __forceinline__ float1
min(
    const short1& a,
    float s
    );

__device__ __forceinline__ float1
min(
    float s,
    const short1& b
    );

__device__ __forceinline__ float2
min(
    const short2& a,
    float s
    );

__device__ __forceinline__ float3
min(
    const short3& a,
    float s
    );

__device__ __forceinline__ float3
min(
    float s,
    const short3& b
    );

__device__ __forceinline__ float4
min(
    const short4& a,
    float s
    );

__device__ __forceinline__ double2
min(
    double s,
    const short2& b
    );

__device__ __forceinline__ double1
min(
    const short1& a,
    double s
    );

__device__ __forceinline__ double1
min(
    double s,
    const short1& b
    );

__device__ __forceinline__ double2
min(
    const short2& a,
    double s
    );

__device__ __forceinline__ double3
min(
    const short3& a,
    double s
    );

__device__ __forceinline__ double3
min(
    double s,
    const short3& b
    );

__device__ __forceinline__ double4
min(
    const short4& a,
    double s
    );

__device__ __forceinline__ double4
min(
    double s,
    const short4& b
    );

__device__ __forceinline__ uint2
min(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uint4
min(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uint1
min(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uint1
min(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uint2
min(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uint3
min(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uint3
min(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uint4
min(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ float2
min(
    float s,
    const uint2& b
    );

__device__ __forceinline__ float1
min(
    const uint1& a,
    float s
    );

__device__ __forceinline__ float1
min(
    float s,
    const uint1& b
    );

__device__ __forceinline__ float2
min(
    const uint2& a,
    float s
    );

__device__ __forceinline__ float3
min(
    const uint3& a,
    float s
    );

__device__ __forceinline__ float3
min(
    float s,
    const uint3& b
    );

__device__ __forceinline__ float4
min(
    const uint4& a,
    float s
    );

__device__ __forceinline__ float4
min(
    float s,
    const uint4& b
    );

__device__ __forceinline__ double4
min(
    double s,
    const uint4& b
    );

__device__ __forceinline__ double2
min(
    double s,
    const uint2& b
    );

__device__ __forceinline__ double1
min(
    const uint1& a,
    double s
    );

__device__ __forceinline__ double1
min(
    double s,
    const uint1& b
    );

__device__ __forceinline__ double2
min(
    const uint2& a,
    double s
    );

__device__ __forceinline__ double3
min(
    const uint3& a,
    double s
    );

__device__ __forceinline__ double3
min(
    double s,
    const uint3& b
    );

__device__ __forceinline__ double4
min(
    const uint4& a,
    double s
    );

__device__ __forceinline__ int2
min(
    int s,
    const int2& b
    );

__device__ __forceinline__ int1
min(
    const int1& a,
    int s
    );

__device__ __forceinline__ int1
min(
    int s,
    const int1& b
    );

__device__ __forceinline__ int2
min(
    const int2& a,
    int s
    );

__device__ __forceinline__ int3
min(
    const int3& a,
    int s
    );

__device__ __forceinline__ int3
min(
    int s,
    const int3& b
    );

__device__ __forceinline__ int4
min(
    const int4& a,
    int s
    );

__device__ __forceinline__ int4
min(
    int s,
    const int4& b
    );

__device__ __forceinline__ float4
min(
    float s,
    const int4& b
    );

__device__ __forceinline__ float2
min(
    float s,
    const int2& b
    );

__device__ __forceinline__ float1
min(
    const int1& a,
    float s
    );

__device__ __forceinline__ float1
min(
    float s,
    const int1& b
    );

__device__ __forceinline__ float2
min(
    const int2& a,
    float s
    );

__device__ __forceinline__ float3
min(
    const int3& a,
    float s
    );

__device__ __forceinline__ float3
min(
    float s,
    const int3& b
    );

__device__ __forceinline__ float4
min(
    const int4& a,
    float s
    );

__device__ __forceinline__ double2
min(
    double s,
    const int2& b
    );

__device__ __forceinline__ double1
min(
    const int1& a,
    double s
    );

__device__ __forceinline__ double1
min(
    double s,
    const int1& b
    );

__device__ __forceinline__ double2
min(
    const int2& a,
    double s
    );

__device__ __forceinline__ double3
min(
    double s,
    const int3& b
    );

__device__ __forceinline__ double4
min(
    const int4& a,
    double s
    );

__device__ __forceinline__ double4
min(
    double s,
    const int4& b
    );

__device__ __forceinline__ double3
min(
    const int3& a,
    double s
    );

__device__ __forceinline__ float4
min(
    float s,
    const float4& b
    );

__device__ __forceinline__ float2
min(
    float s,
    const float2& b
    );

__device__ __forceinline__ float1
min(
    const float1& a,
    float s
    );

__device__ __forceinline__ float1
min(
    float s,
    const float1& b
    );

__device__ __forceinline__ float2
min(
    const float2& a,
    float s
    );

__device__ __forceinline__ float3
min(
    const float3& a,
    float s
    );

__device__ __forceinline__ float3
min(
    float s,
    const float3& b
    );

__device__ __forceinline__ float4
min(
    const float4& a,
    float s
    );

__device__ __forceinline__ double3
min(
    const float3& a,
    double s
    );

__device__ __forceinline__ double2
min(
    double s,
    const float2& b
    );

__device__ __forceinline__ double1
min(
    const float1& a,
    double s
    );

__device__ __forceinline__ double1
min(
    double s,
    const float1& b
    );

__device__ __forceinline__ double2
min(
    const float2& a,
    double s
    );

__device__ __forceinline__ double3
min(
    double s,
    const float3& b
    );

__device__ __forceinline__ double4
min(
    const float4& a,
    double s
    );

__device__ __forceinline__ double4
min(
    double s,
    const float4& b
    );

__device__ __forceinline__ double4
min(
    double s,
    const double4& b
    );

__device__ __forceinline__ double2
min(
    double s,
    const double2& b
    );

__device__ __forceinline__ double1
min(
    const double1& a,
    double s
    );

__device__ __forceinline__ double1
min(
    double s,
    const double1& b
    );

__device__ __forceinline__ double2
min(
    const double2& a,
    double s
    );

__device__ __forceinline__ double3
min(
    double s,
    const double3& b
    );

__device__ __forceinline__ double4
min(
    const double4& a,
    double s
    );

__device__ __forceinline__ double3
min(
    const double3& a,
    double s
    );

template <
    class SrcPtr1,
    class SrcPtr2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<SrcPtr1>::ptr_type, typename PtrTraits<SrcPtr2>::ptr_type, minimum<typename LargerType<typename PtrTraits<SrcPtr1>::value_type, typename PtrTraits<SrcPtr2>::value_type>::type>>>
min_(
    const SrcPtr1& src1,
    const SrcPtr2& src2
    );

template <class SrcPtr>
__host__ Expr<FindMinMaxValExprBody<SrcPtr>>
minMaxVal_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<FindMinValExprBody<SrcPtr>>
minVal_(const SrcPtr& src);

template <class Predicate>
__host__ __device__ UnaryNegate<Predicate>
not1(const Predicate& pred);

template <class Predicate>
__host__ __device__ BinaryNegate<Predicate>
not2(const Predicate& pred);

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, logical_not<T>>>
operator!(const GlobPtrSz<T>& src);

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, logical_not<T>>>
operator!(const Texture<T>& src);

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, logical_not<typename Body::value_type>>>
operator!(const Expr<Body>& src);

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, logical_not<T>>>
operator!(const GpuMat_<T>& src);

__device__ __forceinline__ uchar1
operator!(const uchar1& a);

__device__ __forceinline__ uchar3
operator!(const uchar3& a);

__device__ __forceinline__ uchar4
operator!(const uchar4& a);

__device__ __forceinline__ uchar2
operator!(const uchar2& a);

__device__ __forceinline__ uchar1
operator!(const char1& a);

__device__ __forceinline__ uchar2
operator!(const char2& a);

__device__ __forceinline__ uchar3
operator!(const char3& a);

__device__ __forceinline__ uchar4
operator!(const char4& a);

__device__ __forceinline__ uchar1
operator!(const ushort1& a);

__device__ __forceinline__ uchar2
operator!(const ushort2& a);

__device__ __forceinline__ uchar3
operator!(const ushort3& a);

__device__ __forceinline__ uchar4
operator!(const ushort4& a);

__device__ __forceinline__ uchar1
operator!(const short1& a);

__device__ __forceinline__ uchar2
operator!(const short2& a);

__device__ __forceinline__ uchar3
operator!(const short3& a);

__device__ __forceinline__ uchar4
operator!(const short4& a);

__device__ __forceinline__ uchar1
operator!(const int1& a);

__device__ __forceinline__ uchar2
operator!(const int2& a);

__device__ __forceinline__ uchar3
operator!(const int3& a);

__device__ __forceinline__ uchar4
operator!(const int4& a);

__device__ __forceinline__ uchar1
operator!(const uint1& a);

__device__ __forceinline__ uchar2
operator!(const uint2& a);

__device__ __forceinline__ uchar3
operator!(const uint3& a);

__device__ __forceinline__ uchar4
operator!(const uint4& a);

__device__ __forceinline__ uchar1
operator!(const float1& a);

__device__ __forceinline__ uchar2
operator!(const float2& a);

__device__ __forceinline__ uchar3
operator!(const float3& a);

__device__ __forceinline__ uchar4
operator!(const float4& a);

__device__ __forceinline__ uchar1
operator!(const double1& a);

__device__ __forceinline__ uchar2
operator!(const double2& a);

__device__ __forceinline__ uchar3
operator!(const double3& a);

__device__ __forceinline__ uchar4
operator!(const double4& a);

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, not_equal_to<T>>>
operator!=(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, not_equal_to<T>>>
operator!=(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, not_equal_to<T>>>
operator!=(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, not_equal_to<T>>>
operator!=(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, not_equal_to<T>>>
operator!=(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, not_equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator!=(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, not_equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator!=(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<not_equal_to<T>>>>
operator!=(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<not_equal_to<T>>>>
operator!=(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, not_equal_to<T>>>
operator!=(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, not_equal_to<T>>>
operator!=(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, not_equal_to<T>>>
operator!=(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, not_equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator!=(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<not_equal_to<T>>>>
operator!=(
    T val,
    const GlobPtrSz<T>& src
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, not_equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator!=(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<not_equal_to<T>>>>
operator!=(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, not_equal_to<T>>>
operator!=(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, not_equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator!=(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, not_equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator!=(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<not_equal_to<T>>>>
operator!=(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<not_equal_to<T>>>>
operator!=(
    T val,
    const Texture<T>& src
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, not_equal_to<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator!=(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<not_equal_to<typename Body::value_type>>>>
operator!=(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<not_equal_to<typename Body::value_type>>>>
operator!=(
    typename Body::value_type val,
    const Expr<Body>& a
    );

__device__ __forceinline__ uchar2
operator!=(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar3
operator!=(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ uchar3
operator!=(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ uchar3
operator!=(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ uchar3
operator!=(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ uchar3
operator!=(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uchar3
operator!=(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ uchar3
operator!=(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ uchar3
operator!=(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ uchar4
operator!=(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar1
operator!=(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator!=(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator!=(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar2
operator!=(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const char1& a,
    char s
    );

__device__ __forceinline__ uchar1
operator!=(
    char s,
    const char1& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const char2& a,
    char s
    );

__device__ __forceinline__ uchar3
operator!=(
    const char3& a,
    char s
    );

__device__ __forceinline__ uchar3
operator!=(
    char s,
    const char3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const char4& a,
    char s
    );

__device__ __forceinline__ uchar4
operator!=(
    char s,
    const char4& b
    );

__device__ __forceinline__ uchar2
operator!=(
    char s,
    const char2& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ uchar1
operator!=(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator!=(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator!=(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ uchar4
operator!=(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ uchar2
operator!=(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ uchar4
operator!=(
    short s,
    const short4& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const short1& a,
    short s
    );

__device__ __forceinline__ uchar1
operator!=(
    short s,
    const short1& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const short2& a,
    short s
    );

__device__ __forceinline__ uchar3
operator!=(
    const short3& a,
    short s
    );

__device__ __forceinline__ uchar3
operator!=(
    short s,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const short4& a,
    short s
    );

__device__ __forceinline__ uchar2
operator!=(
    short s,
    const short2& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const int1& a,
    int s
    );

__device__ __forceinline__ uchar1
operator!=(
    int s,
    const int1& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const int2& a,
    int s
    );

__device__ __forceinline__ uchar3
operator!=(
    const int3& a,
    int s
    );

__device__ __forceinline__ uchar3
operator!=(
    int s,
    const int3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const int4& a,
    int s
    );

__device__ __forceinline__ uchar4
operator!=(
    int s,
    const int4& b
    );

__device__ __forceinline__ uchar2
operator!=(
    int s,
    const int2& b
    );

__device__ __forceinline__ uchar4
operator!=(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uchar1
operator!=(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uchar3
operator!=(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uchar3
operator!=(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uchar2
operator!=(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const float1& a,
    float s
    );

__device__ __forceinline__ uchar1
operator!=(
    float s,
    const float1& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const float2& a,
    float s
    );

__device__ __forceinline__ uchar3
operator!=(
    const float3& a,
    float s
    );

__device__ __forceinline__ uchar3
operator!=(
    float s,
    const float3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const float4& a,
    float s
    );

__device__ __forceinline__ uchar4
operator!=(
    float s,
    const float4& b
    );

__device__ __forceinline__ uchar2
operator!=(
    float s,
    const float2& b
    );

__device__ __forceinline__ uchar1
operator!=(
    const double1& a,
    double s
    );

__device__ __forceinline__ uchar1
operator!=(
    double s,
    const double1& b
    );

__device__ __forceinline__ uchar2
operator!=(
    const double2& a,
    double s
    );

__device__ __forceinline__ uchar3
operator!=(
    const double3& a,
    double s
    );

__device__ __forceinline__ uchar3
operator!=(
    double s,
    const double3& b
    );

__device__ __forceinline__ uchar4
operator!=(
    const double4& a,
    double s
    );

__device__ __forceinline__ uchar4
operator!=(
    double s,
    const double4& b
    );

__device__ __forceinline__ uchar2
operator!=(
    double s,
    const double2& b
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<modulus<T>>>>
operator%(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, modulus<T>>>
operator%(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<modulus<T>>>>
operator%(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, modulus<T>>>
operator%(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, modulus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator%(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<modulus<T>>>>
operator%(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<modulus<T>>>>
operator%(
    T val,
    const Texture<T>& src
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<modulus<typename Body::value_type>>>>
operator%(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, modulus<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator%(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<modulus<typename Body::value_type>>>>
operator%(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, modulus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator%(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, modulus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator%(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, modulus<T>>>
operator%(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, modulus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator%(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, modulus<T>>>
operator%(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, modulus<T>>>
operator%(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, modulus<T>>>
operator%(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, modulus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator%(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, modulus<T>>>
operator%(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<modulus<T>>>>
operator%(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<modulus<T>>>>
operator%(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, modulus<T>>>
operator%(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, modulus<T>>>
operator%(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, modulus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator%(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_and<T>>>
operator&(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_and<T>>>
operator&(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_and<T>>>
operator&(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_and<T>>>
operator&(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_and<T>>>
operator&(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<bit_and<T>>>>
operator&(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<bit_and<T>>>>
operator&(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_and<T>>>
operator&(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_and<T>>>
operator&(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_and<T>>>
operator&(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<bit_and<T>>>>
operator&(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<bit_and<T>>>>
operator&(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_and<T>>>
operator&(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<bit_and<T>>>>
operator&(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<bit_and<T>>>>
operator&(
    T val,
    const Texture<T>& src
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<bit_and<typename Body::value_type>>>>
operator&(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, bit_and<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator&(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<bit_and<typename Body::value_type>>>>
operator&(
    typename Body::value_type val,
    const Expr<Body>& a
    );

__device__ __forceinline__ uchar1
operator&(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator&(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator&(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator&(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ char1
operator&(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ char2
operator&(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ char3
operator&(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ char4
operator&(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ ushort1
operator&(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ ushort2
operator&(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ ushort3
operator&(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ ushort4
operator&(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ short1
operator&(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ short2
operator&(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ short3
operator&(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ short4
operator&(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ int1
operator&(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ int2
operator&(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ int3
operator&(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ int4
operator&(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ uint1
operator&(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uint2
operator&(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uint3
operator&(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uint4
operator&(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uchar1
operator&(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar1
operator&(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator&(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar2
operator&(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator&(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator&(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator&(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator&(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ char2
operator&(
    char s,
    const char2& b
    );

__device__ __forceinline__ char4
operator&(
    char s,
    const char4& b
    );

__device__ __forceinline__ char1
operator&(
    const char1& a,
    char s
    );

__device__ __forceinline__ char1
operator&(
    char s,
    const char1& b
    );

__device__ __forceinline__ char2
operator&(
    const char2& a,
    char s
    );

__device__ __forceinline__ char3
operator&(
    const char3& a,
    char s
    );

__device__ __forceinline__ char3
operator&(
    char s,
    const char3& b
    );

__device__ __forceinline__ char4
operator&(
    const char4& a,
    char s
    );

__device__ __forceinline__ ushort1
operator&(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ ushort1
operator&(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ ushort2
operator&(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ ushort3
operator&(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ ushort3
operator&(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ ushort4
operator&(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ ushort4
operator&(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ ushort2
operator&(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ short4
operator&(
    short s,
    const short4& b
    );

__device__ __forceinline__ short1
operator&(
    const short1& a,
    short s
    );

__device__ __forceinline__ short1
operator&(
    short s,
    const short1& b
    );

__device__ __forceinline__ short2
operator&(
    const short2& a,
    short s
    );

__device__ __forceinline__ short3
operator&(
    const short3& a,
    short s
    );

__device__ __forceinline__ short3
operator&(
    short s,
    const short3& b
    );

__device__ __forceinline__ short4
operator&(
    const short4& a,
    short s
    );

__device__ __forceinline__ short2
operator&(
    short s,
    const short2& b
    );

__device__ __forceinline__ int1
operator&(
    const int1& a,
    int s
    );

__device__ __forceinline__ int1
operator&(
    int s,
    const int1& b
    );

__device__ __forceinline__ int2
operator&(
    const int2& a,
    int s
    );

__device__ __forceinline__ int3
operator&(
    const int3& a,
    int s
    );

__device__ __forceinline__ int3
operator&(
    int s,
    const int3& b
    );

__device__ __forceinline__ int4
operator&(
    const int4& a,
    int s
    );

__device__ __forceinline__ int4
operator&(
    int s,
    const int4& b
    );

__device__ __forceinline__ int2
operator&(
    int s,
    const int2& b
    );

__device__ __forceinline__ uint2
operator&(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uint4
operator&(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uint1
operator&(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uint1
operator&(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uint2
operator&(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uint3
operator&(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uint3
operator&(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uint4
operator&(
    const uint4& a,
    uint s
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, logical_and<T>>>
operator&&(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, logical_and<T>>>
operator&&(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, logical_and<T>>>
operator&&(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, logical_and<T>>>
operator&&(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, logical_and<T>>>
operator&&(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, logical_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&&(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, logical_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&&(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<logical_and<T>>>>
operator&&(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<logical_and<T>>>>
operator&&(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, logical_and<T>>>
operator&&(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, logical_and<T>>>
operator&&(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, logical_and<T>>>
operator&&(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, logical_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&&(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<logical_and<T>>>>
operator&&(
    const GlobPtrSz<T>& src,
    T val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, logical_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&&(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<logical_and<T>>>>
operator&&(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, logical_and<T>>>
operator&&(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, logical_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&&(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, logical_and<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator&&(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<logical_and<T>>>>
operator&&(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<logical_and<T>>>>
operator&&(
    T val,
    const Texture<T>& src
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<logical_and<typename Body::value_type>>>>
operator&&(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<logical_and<typename Body::value_type>>>>
operator&&(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, logical_and<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator&&(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ uchar3
operator&&(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ uchar3
operator&&(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ uchar3
operator&&(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ uchar3
operator&&(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ uchar3
operator&&(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uchar3
operator&&(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ uchar3
operator&&(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ uchar3
operator&&(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar1
operator&&(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar2
operator&&(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator&&(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator&&(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator&&(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const char1& a,
    char s
    );

__device__ __forceinline__ uchar1
operator&&(
    char s,
    const char1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const char2& a,
    char s
    );

__device__ __forceinline__ uchar3
operator&&(
    const char3& a,
    char s
    );

__device__ __forceinline__ uchar3
operator&&(
    char s,
    const char3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const char4& a,
    char s
    );

__device__ __forceinline__ uchar2
operator&&(
    char s,
    const char2& b
    );

__device__ __forceinline__ uchar4
operator&&(
    char s,
    const char4& b
    );

__device__ __forceinline__ uchar2
operator&&(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ uchar1
operator&&(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator&&(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator&&(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ uchar4
operator&&(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ uchar4
operator&&(
    short s,
    const short4& b
    );

__device__ __forceinline__ uchar2
operator&&(
    short s,
    const short2& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const short1& a,
    short s
    );

__device__ __forceinline__ uchar1
operator&&(
    short s,
    const short1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const short2& a,
    short s
    );

__device__ __forceinline__ uchar3
operator&&(
    const short3& a,
    short s
    );

__device__ __forceinline__ uchar3
operator&&(
    short s,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const short4& a,
    short s
    );

__device__ __forceinline__ uchar1
operator&&(
    const int1& a,
    int s
    );

__device__ __forceinline__ uchar1
operator&&(
    int s,
    const int1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const int2& a,
    int s
    );

__device__ __forceinline__ uchar3
operator&&(
    const int3& a,
    int s
    );

__device__ __forceinline__ uchar3
operator&&(
    int s,
    const int3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const int4& a,
    int s
    );

__device__ __forceinline__ uchar4
operator&&(
    int s,
    const int4& b
    );

__device__ __forceinline__ uchar2
operator&&(
    int s,
    const int2& b
    );

__device__ __forceinline__ uchar4
operator&&(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uchar1
operator&&(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uchar3
operator&&(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uchar3
operator&&(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uchar2
operator&&(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const float1& a,
    float s
    );

__device__ __forceinline__ uchar1
operator&&(
    float s,
    const float1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const float2& a,
    float s
    );

__device__ __forceinline__ uchar3
operator&&(
    const float3& a,
    float s
    );

__device__ __forceinline__ uchar3
operator&&(
    float s,
    const float3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const float4& a,
    float s
    );

__device__ __forceinline__ uchar4
operator&&(
    float s,
    const float4& b
    );

__device__ __forceinline__ uchar2
operator&&(
    float s,
    const float2& b
    );

__device__ __forceinline__ uchar4
operator&&(
    double s,
    const double4& b
    );

__device__ __forceinline__ uchar1
operator&&(
    const double1& a,
    double s
    );

__device__ __forceinline__ uchar1
operator&&(
    double s,
    const double1& b
    );

__device__ __forceinline__ uchar2
operator&&(
    const double2& a,
    double s
    );

__device__ __forceinline__ uchar3
operator&&(
    const double3& a,
    double s
    );

__device__ __forceinline__ uchar3
operator&&(
    double s,
    const double3& b
    );

__device__ __forceinline__ uchar4
operator&&(
    const double4& a,
    double s
    );

__device__ __forceinline__ uchar2
operator&&(
    double s,
    const double2& b
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, multiplies<T>>>
operator*(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, multiplies<T>>>
operator*(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, multiplies<T>>>
operator*(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, multiplies<T>>>
operator*(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, multiplies<T>>>
operator*(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, multiplies<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator*(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, multiplies<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator*(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<multiplies<T>>>>
operator*(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<multiplies<T>>>>
operator*(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, multiplies<T>>>
operator*(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, multiplies<T>>>
operator*(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, multiplies<T>>>
operator*(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, multiplies<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator*(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, multiplies<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator*(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<multiplies<T>>>>
operator*(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<multiplies<T>>>>
operator*(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, multiplies<T>>>
operator*(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, multiplies<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator*(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, multiplies<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator*(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<multiplies<T>>>>
operator*(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<multiplies<T>>>>
operator*(
    T val,
    const Texture<T>& src
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, multiplies<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator*(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<multiplies<typename Body::value_type>>>>
operator*(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<multiplies<typename Body::value_type>>>>
operator*(
    typename Body::value_type val,
    const Expr<Body>& a
    );

__device__ __forceinline__ int4
operator*(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ int2
operator*(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ int1
operator*(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ int3
operator*(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ int1
operator*(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ int2
operator*(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ int3
operator*(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ int4
operator*(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ int1
operator*(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ int2
operator*(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ int3
operator*(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ int4
operator*(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ int1
operator*(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ int2
operator*(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ int3
operator*(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ int4
operator*(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ int4
operator*(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ int3
operator*(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ int1
operator*(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ int2
operator*(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ uint3
operator*(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uint4
operator*(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uint1
operator*(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uint2
operator*(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ float4
operator*(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ float3
operator*(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ float2
operator*(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ float1
operator*(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ double3
operator*(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ double4
operator*(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ double1
operator*(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ double2
operator*(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ int2
operator*(
    int s,
    const uchar2& b
    );

__device__ __forceinline__ int1
operator*(
    const uchar1& a,
    int s
    );

__device__ __forceinline__ int1
operator*(
    int s,
    const uchar1& b
    );

__device__ __forceinline__ int2
operator*(
    const uchar2& a,
    int s
    );

__device__ __forceinline__ int3
operator*(
    const uchar3& a,
    int s
    );

__device__ __forceinline__ int3
operator*(
    int s,
    const uchar3& b
    );

__device__ __forceinline__ int4
operator*(
    const uchar4& a,
    int s
    );

__device__ __forceinline__ int4
operator*(
    int s,
    const uchar4& b
    );

__device__ __forceinline__ float4
operator*(
    float s,
    const uchar4& b
    );

__device__ __forceinline__ float2
operator*(
    float s,
    const uchar2& b
    );

__device__ __forceinline__ float1
operator*(
    const uchar1& a,
    float s
    );

__device__ __forceinline__ float1
operator*(
    float s,
    const uchar1& b
    );

__device__ __forceinline__ float2
operator*(
    const uchar2& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    const uchar3& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    float s,
    const uchar3& b
    );

__device__ __forceinline__ float4
operator*(
    const uchar4& a,
    float s
    );

__device__ __forceinline__ double1
operator*(
    const uchar1& a,
    double s
    );

__device__ __forceinline__ double1
operator*(
    double s,
    const uchar1& b
    );

__device__ __forceinline__ double2
operator*(
    const uchar2& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    const uchar3& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    double s,
    const uchar3& b
    );

__device__ __forceinline__ double4
operator*(
    const uchar4& a,
    double s
    );

__device__ __forceinline__ double4
operator*(
    double s,
    const uchar4& b
    );

__device__ __forceinline__ double2
operator*(
    double s,
    const uchar2& b
    );

__device__ __forceinline__ int1
operator*(
    const char1& a,
    int s
    );

__device__ __forceinline__ int1
operator*(
    int s,
    const char1& b
    );

__device__ __forceinline__ int2
operator*(
    const char2& a,
    int s
    );

__device__ __forceinline__ int3
operator*(
    const char3& a,
    int s
    );

__device__ __forceinline__ int3
operator*(
    int s,
    const char3& b
    );

__device__ __forceinline__ int4
operator*(
    const char4& a,
    int s
    );

__device__ __forceinline__ int2
operator*(
    int s,
    const char2& b
    );

__device__ __forceinline__ int4
operator*(
    int s,
    const char4& b
    );

__device__ __forceinline__ float1
operator*(
    const char1& a,
    float s
    );

__device__ __forceinline__ float1
operator*(
    float s,
    const char1& b
    );

__device__ __forceinline__ float2
operator*(
    const char2& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    const char3& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    float s,
    const char3& b
    );

__device__ __forceinline__ float4
operator*(
    const char4& a,
    float s
    );

__device__ __forceinline__ float4
operator*(
    float s,
    const char4& b
    );

__device__ __forceinline__ float2
operator*(
    float s,
    const char2& b
    );

__device__ __forceinline__ double1
operator*(
    const char1& a,
    double s
    );

__device__ __forceinline__ double1
operator*(
    double s,
    const char1& b
    );

__device__ __forceinline__ double2
operator*(
    const char2& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    const char3& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    double s,
    const char3& b
    );

__device__ __forceinline__ double4
operator*(
    const char4& a,
    double s
    );

__device__ __forceinline__ double2
operator*(
    double s,
    const char2& b
    );

__device__ __forceinline__ double4
operator*(
    double s,
    const char4& b
    );

__device__ __forceinline__ int1
operator*(
    const ushort1& a,
    int s
    );

__device__ __forceinline__ int1
operator*(
    int s,
    const ushort1& b
    );

__device__ __forceinline__ int2
operator*(
    const ushort2& a,
    int s
    );

__device__ __forceinline__ int3
operator*(
    const ushort3& a,
    int s
    );

__device__ __forceinline__ int3
operator*(
    int s,
    const ushort3& b
    );

__device__ __forceinline__ int4
operator*(
    const ushort4& a,
    int s
    );

__device__ __forceinline__ int4
operator*(
    int s,
    const ushort4& b
    );

__device__ __forceinline__ int2
operator*(
    int s,
    const ushort2& b
    );

__device__ __forceinline__ float1
operator*(
    const ushort1& a,
    float s
    );

__device__ __forceinline__ float1
operator*(
    float s,
    const ushort1& b
    );

__device__ __forceinline__ float2
operator*(
    const ushort2& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    const ushort3& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    float s,
    const ushort3& b
    );

__device__ __forceinline__ float4
operator*(
    const ushort4& a,
    float s
    );

__device__ __forceinline__ float2
operator*(
    float s,
    const ushort2& b
    );

__device__ __forceinline__ float4
operator*(
    float s,
    const ushort4& b
    );

__device__ __forceinline__ double1
operator*(
    const ushort1& a,
    double s
    );

__device__ __forceinline__ double1
operator*(
    double s,
    const ushort1& b
    );

__device__ __forceinline__ double2
operator*(
    const ushort2& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    const ushort3& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    double s,
    const ushort3& b
    );

__device__ __forceinline__ double4
operator*(
    const ushort4& a,
    double s
    );

__device__ __forceinline__ double4
operator*(
    double s,
    const ushort4& b
    );

__device__ __forceinline__ double2
operator*(
    double s,
    const ushort2& b
    );

__device__ __forceinline__ int1
operator*(
    const short1& a,
    int s
    );

__device__ __forceinline__ int1
operator*(
    int s,
    const short1& b
    );

__device__ __forceinline__ int2
operator*(
    const short2& a,
    int s
    );

__device__ __forceinline__ int3
operator*(
    const short3& a,
    int s
    );

__device__ __forceinline__ int3
operator*(
    int s,
    const short3& b
    );

__device__ __forceinline__ int4
operator*(
    const short4& a,
    int s
    );

__device__ __forceinline__ int2
operator*(
    int s,
    const short2& b
    );

__device__ __forceinline__ int4
operator*(
    int s,
    const short4& b
    );

__device__ __forceinline__ float1
operator*(
    const short1& a,
    float s
    );

__device__ __forceinline__ float1
operator*(
    float s,
    const short1& b
    );

__device__ __forceinline__ float2
operator*(
    const short2& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    const short3& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    float s,
    const short3& b
    );

__device__ __forceinline__ float4
operator*(
    const short4& a,
    float s
    );

__device__ __forceinline__ float4
operator*(
    float s,
    const short4& b
    );

__device__ __forceinline__ float2
operator*(
    float s,
    const short2& b
    );

__device__ __forceinline__ double2
operator*(
    double s,
    const short2& b
    );

__device__ __forceinline__ double1
operator*(
    const short1& a,
    double s
    );

__device__ __forceinline__ double1
operator*(
    double s,
    const short1& b
    );

__device__ __forceinline__ double2
operator*(
    const short2& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    const short3& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    double s,
    const short3& b
    );

__device__ __forceinline__ double4
operator*(
    const short4& a,
    double s
    );

__device__ __forceinline__ double4
operator*(
    double s,
    const short4& b
    );

__device__ __forceinline__ int1
operator*(
    const int1& a,
    int s
    );

__device__ __forceinline__ int1
operator*(
    int s,
    const int1& b
    );

__device__ __forceinline__ int2
operator*(
    const int2& a,
    int s
    );

__device__ __forceinline__ int3
operator*(
    const int3& a,
    int s
    );

__device__ __forceinline__ int3
operator*(
    int s,
    const int3& b
    );

__device__ __forceinline__ int4
operator*(
    const int4& a,
    int s
    );

__device__ __forceinline__ int4
operator*(
    int s,
    const int4& b
    );

__device__ __forceinline__ int2
operator*(
    int s,
    const int2& b
    );

__device__ __forceinline__ float1
operator*(
    const int1& a,
    float s
    );

__device__ __forceinline__ float1
operator*(
    float s,
    const int1& b
    );

__device__ __forceinline__ float2
operator*(
    const int2& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    const int3& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    float s,
    const int3& b
    );

__device__ __forceinline__ float4
operator*(
    const int4& a,
    float s
    );

__device__ __forceinline__ float4
operator*(
    float s,
    const int4& b
    );

__device__ __forceinline__ float2
operator*(
    float s,
    const int2& b
    );

__device__ __forceinline__ double1
operator*(
    const int1& a,
    double s
    );

__device__ __forceinline__ double1
operator*(
    double s,
    const int1& b
    );

__device__ __forceinline__ double2
operator*(
    const int2& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    const int3& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    double s,
    const int3& b
    );

__device__ __forceinline__ double4
operator*(
    const int4& a,
    double s
    );

__device__ __forceinline__ double2
operator*(
    double s,
    const int2& b
    );

__device__ __forceinline__ double4
operator*(
    double s,
    const int4& b
    );

__device__ __forceinline__ uint1
operator*(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uint1
operator*(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uint2
operator*(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uint3
operator*(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uint3
operator*(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uint4
operator*(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uint2
operator*(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uint4
operator*(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ float4
operator*(
    float s,
    const uint4& b
    );

__device__ __forceinline__ float1
operator*(
    const uint1& a,
    float s
    );

__device__ __forceinline__ float1
operator*(
    float s,
    const uint1& b
    );

__device__ __forceinline__ float2
operator*(
    const uint2& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    const uint3& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    float s,
    const uint3& b
    );

__device__ __forceinline__ float4
operator*(
    const uint4& a,
    float s
    );

__device__ __forceinline__ float2
operator*(
    float s,
    const uint2& b
    );

__device__ __forceinline__ double4
operator*(
    double s,
    const uint4& b
    );

__device__ __forceinline__ double2
operator*(
    double s,
    const uint2& b
    );

__device__ __forceinline__ double1
operator*(
    const uint1& a,
    double s
    );

__device__ __forceinline__ double1
operator*(
    double s,
    const uint1& b
    );

__device__ __forceinline__ double2
operator*(
    const uint2& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    const uint3& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    double s,
    const uint3& b
    );

__device__ __forceinline__ double4
operator*(
    const uint4& a,
    double s
    );

__device__ __forceinline__ float4
operator*(
    float s,
    const float4& b
    );

__device__ __forceinline__ float2
operator*(
    float s,
    const float2& b
    );

__device__ __forceinline__ float1
operator*(
    const float1& a,
    float s
    );

__device__ __forceinline__ float1
operator*(
    float s,
    const float1& b
    );

__device__ __forceinline__ float2
operator*(
    const float2& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    const float3& a,
    float s
    );

__device__ __forceinline__ float3
operator*(
    float s,
    const float3& b
    );

__device__ __forceinline__ float4
operator*(
    const float4& a,
    float s
    );

__device__ __forceinline__ double4
operator*(
    double s,
    const float4& b
    );

__device__ __forceinline__ double2
operator*(
    double s,
    const float2& b
    );

__device__ __forceinline__ double1
operator*(
    const float1& a,
    double s
    );

__device__ __forceinline__ double1
operator*(
    double s,
    const float1& b
    );

__device__ __forceinline__ double2
operator*(
    const float2& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    const float3& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    double s,
    const float3& b
    );

__device__ __forceinline__ double4
operator*(
    const float4& a,
    double s
    );

__device__ __forceinline__ double1
operator*(
    const double1& a,
    double s
    );

__device__ __forceinline__ double1
operator*(
    double s,
    const double1& b
    );

__device__ __forceinline__ double2
operator*(
    const double2& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    const double3& a,
    double s
    );

__device__ __forceinline__ double3
operator*(
    double s,
    const double3& b
    );

__device__ __forceinline__ double4
operator*(
    const double4& a,
    double s
    );

__device__ __forceinline__ double2
operator*(
    double s,
    const double2& b
    );

__device__ __forceinline__ double4
operator*(
    double s,
    const double4& b
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<plus<T>>>>
operator+(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<plus<T>>>>
operator+(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, plus<T>>>
operator+(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, plus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator+(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, plus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator+(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<plus<T>>>>
operator+(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, plus<T>>>
operator+(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<plus<T>>>>
operator+(
    T val,
    const Texture<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, plus<T>>>
operator+(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, plus<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator+(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<plus<typename Body::value_type>>>>
operator+(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, plus<T>>>
operator+(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, plus<T>>>
operator+(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, plus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator+(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, plus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator+(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<plus<T>>>>
operator+(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, plus<T>>>
operator+(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<plus<T>>>>
operator+(
    T val,
    const GpuMat_<T>& src
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<plus<typename Body::value_type>>>>
operator+(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, plus<T>>>
operator+(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, plus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator+(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, plus<T>>>
operator+(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, plus<T>>>
operator+(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, plus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator+(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

__device__ __forceinline__ int1
operator+(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ int2
operator+(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ int3
operator+(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ int4
operator+(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ int1
operator+(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ int2
operator+(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ int3
operator+(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ int4
operator+(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ int1
operator+(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ int2
operator+(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ int3
operator+(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ int4
operator+(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ int1
operator+(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ int2
operator+(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ int3
operator+(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ int4
operator+(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ int4
operator+(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ int1
operator+(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ int2
operator+(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ int3
operator+(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uint3
operator+(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uint2
operator+(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uint1
operator+(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uint4
operator+(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ float3
operator+(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ float2
operator+(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ float4
operator+(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ float1
operator+(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ double4
operator+(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ double3
operator+(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ double2
operator+(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ double1
operator+(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ int1
operator+(
    const uchar1& a,
    int s
    );

__device__ __forceinline__ int1
operator+(
    int s,
    const uchar1& b
    );

__device__ __forceinline__ int2
operator+(
    const uchar2& a,
    int s
    );

__device__ __forceinline__ int2
operator+(
    int s,
    const uchar2& b
    );

__device__ __forceinline__ int3
operator+(
    const uchar3& a,
    int s
    );

__device__ __forceinline__ int3
operator+(
    int s,
    const uchar3& b
    );

__device__ __forceinline__ int4
operator+(
    const uchar4& a,
    int s
    );

__device__ __forceinline__ int4
operator+(
    int s,
    const uchar4& b
    );

__device__ __forceinline__ float1
operator+(
    const uchar1& a,
    float s
    );

__device__ __forceinline__ float1
operator+(
    float s,
    const uchar1& b
    );

__device__ __forceinline__ float2
operator+(
    const uchar2& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    const uchar3& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    float s,
    const uchar3& b
    );

__device__ __forceinline__ float4
operator+(
    const uchar4& a,
    float s
    );

__device__ __forceinline__ float2
operator+(
    float s,
    const uchar2& b
    );

__device__ __forceinline__ float4
operator+(
    float s,
    const uchar4& b
    );

__device__ __forceinline__ double1
operator+(
    const uchar1& a,
    double s
    );

__device__ __forceinline__ double1
operator+(
    double s,
    const uchar1& b
    );

__device__ __forceinline__ double2
operator+(
    const uchar2& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    const uchar3& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    double s,
    const uchar3& b
    );

__device__ __forceinline__ double4
operator+(
    const uchar4& a,
    double s
    );

__device__ __forceinline__ double4
operator+(
    double s,
    const uchar4& b
    );

__device__ __forceinline__ double2
operator+(
    double s,
    const uchar2& b
    );

__device__ __forceinline__ int1
operator+(
    const char1& a,
    int s
    );

__device__ __forceinline__ int1
operator+(
    int s,
    const char1& b
    );

__device__ __forceinline__ int2
operator+(
    const char2& a,
    int s
    );

__device__ __forceinline__ int3
operator+(
    const char3& a,
    int s
    );

__device__ __forceinline__ int3
operator+(
    int s,
    const char3& b
    );

__device__ __forceinline__ int4
operator+(
    const char4& a,
    int s
    );

__device__ __forceinline__ int2
operator+(
    int s,
    const char2& b
    );

__device__ __forceinline__ int4
operator+(
    int s,
    const char4& b
    );

__device__ __forceinline__ float2
operator+(
    float s,
    const char2& b
    );

__device__ __forceinline__ float1
operator+(
    const char1& a,
    float s
    );

__device__ __forceinline__ float1
operator+(
    float s,
    const char1& b
    );

__device__ __forceinline__ float2
operator+(
    const char2& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    const char3& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    float s,
    const char3& b
    );

__device__ __forceinline__ float4
operator+(
    const char4& a,
    float s
    );

__device__ __forceinline__ float4
operator+(
    float s,
    const char4& b
    );

__device__ __forceinline__ double1
operator+(
    const char1& a,
    double s
    );

__device__ __forceinline__ double1
operator+(
    double s,
    const char1& b
    );

__device__ __forceinline__ double2
operator+(
    const char2& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    const char3& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    double s,
    const char3& b
    );

__device__ __forceinline__ double4
operator+(
    const char4& a,
    double s
    );

__device__ __forceinline__ double4
operator+(
    double s,
    const char4& b
    );

__device__ __forceinline__ double2
operator+(
    double s,
    const char2& b
    );

__device__ __forceinline__ int1
operator+(
    const ushort1& a,
    int s
    );

__device__ __forceinline__ int1
operator+(
    int s,
    const ushort1& b
    );

__device__ __forceinline__ int2
operator+(
    const ushort2& a,
    int s
    );

__device__ __forceinline__ int3
operator+(
    const ushort3& a,
    int s
    );

__device__ __forceinline__ int3
operator+(
    int s,
    const ushort3& b
    );

__device__ __forceinline__ int4
operator+(
    const ushort4& a,
    int s
    );

__device__ __forceinline__ int4
operator+(
    int s,
    const ushort4& b
    );

__device__ __forceinline__ int2
operator+(
    int s,
    const ushort2& b
    );

__device__ __forceinline__ float1
operator+(
    const ushort1& a,
    float s
    );

__device__ __forceinline__ float1
operator+(
    float s,
    const ushort1& b
    );

__device__ __forceinline__ float2
operator+(
    const ushort2& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    const ushort3& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    float s,
    const ushort3& b
    );

__device__ __forceinline__ float4
operator+(
    const ushort4& a,
    float s
    );

__device__ __forceinline__ float2
operator+(
    float s,
    const ushort2& b
    );

__device__ __forceinline__ float4
operator+(
    float s,
    const ushort4& b
    );

__device__ __forceinline__ double1
operator+(
    const ushort1& a,
    double s
    );

__device__ __forceinline__ double1
operator+(
    double s,
    const ushort1& b
    );

__device__ __forceinline__ double2
operator+(
    const ushort2& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    const ushort3& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    double s,
    const ushort3& b
    );

__device__ __forceinline__ double4
operator+(
    const ushort4& a,
    double s
    );

__device__ __forceinline__ double4
operator+(
    double s,
    const ushort4& b
    );

__device__ __forceinline__ double2
operator+(
    double s,
    const ushort2& b
    );

__device__ __forceinline__ int1
operator+(
    const short1& a,
    int s
    );

__device__ __forceinline__ int1
operator+(
    int s,
    const short1& b
    );

__device__ __forceinline__ int2
operator+(
    const short2& a,
    int s
    );

__device__ __forceinline__ int3
operator+(
    const short3& a,
    int s
    );

__device__ __forceinline__ int3
operator+(
    int s,
    const short3& b
    );

__device__ __forceinline__ int4
operator+(
    const short4& a,
    int s
    );

__device__ __forceinline__ int4
operator+(
    int s,
    const short4& b
    );

__device__ __forceinline__ int2
operator+(
    int s,
    const short2& b
    );

__device__ __forceinline__ float1
operator+(
    const short1& a,
    float s
    );

__device__ __forceinline__ float1
operator+(
    float s,
    const short1& b
    );

__device__ __forceinline__ float2
operator+(
    const short2& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    const short3& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    float s,
    const short3& b
    );

__device__ __forceinline__ float4
operator+(
    const short4& a,
    float s
    );

__device__ __forceinline__ float4
operator+(
    float s,
    const short4& b
    );

__device__ __forceinline__ float2
operator+(
    float s,
    const short2& b
    );

__device__ __forceinline__ double1
operator+(
    const short1& a,
    double s
    );

__device__ __forceinline__ double1
operator+(
    double s,
    const short1& b
    );

__device__ __forceinline__ double2
operator+(
    const short2& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    const short3& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    double s,
    const short3& b
    );

__device__ __forceinline__ double4
operator+(
    const short4& a,
    double s
    );

__device__ __forceinline__ double4
operator+(
    double s,
    const short4& b
    );

__device__ __forceinline__ double2
operator+(
    double s,
    const short2& b
    );

__device__ __forceinline__ int1
operator+(
    const int1& a,
    int s
    );

__device__ __forceinline__ int1
operator+(
    int s,
    const int1& b
    );

__device__ __forceinline__ int2
operator+(
    const int2& a,
    int s
    );

__device__ __forceinline__ int3
operator+(
    const int3& a,
    int s
    );

__device__ __forceinline__ int3
operator+(
    int s,
    const int3& b
    );

__device__ __forceinline__ int4
operator+(
    const int4& a,
    int s
    );

__device__ __forceinline__ int4
operator+(
    int s,
    const int4& b
    );

__device__ __forceinline__ int2
operator+(
    int s,
    const int2& b
    );

__device__ __forceinline__ float2
operator+(
    float s,
    const int2& b
    );

__device__ __forceinline__ float1
operator+(
    const int1& a,
    float s
    );

__device__ __forceinline__ float1
operator+(
    float s,
    const int1& b
    );

__device__ __forceinline__ float2
operator+(
    const int2& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    const int3& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    float s,
    const int3& b
    );

__device__ __forceinline__ float4
operator+(
    const int4& a,
    float s
    );

__device__ __forceinline__ float4
operator+(
    float s,
    const int4& b
    );

__device__ __forceinline__ double1
operator+(
    const int1& a,
    double s
    );

__device__ __forceinline__ double1
operator+(
    double s,
    const int1& b
    );

__device__ __forceinline__ double2
operator+(
    const int2& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    const int3& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    double s,
    const int3& b
    );

__device__ __forceinline__ double4
operator+(
    const int4& a,
    double s
    );

__device__ __forceinline__ double4
operator+(
    double s,
    const int4& b
    );

__device__ __forceinline__ double2
operator+(
    double s,
    const int2& b
    );

__device__ __forceinline__ uint1
operator+(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uint1
operator+(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uint2
operator+(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uint3
operator+(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uint3
operator+(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uint4
operator+(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uint4
operator+(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uint2
operator+(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ float1
operator+(
    const uint1& a,
    float s
    );

__device__ __forceinline__ float1
operator+(
    float s,
    const uint1& b
    );

__device__ __forceinline__ float2
operator+(
    const uint2& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    const uint3& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    float s,
    const uint3& b
    );

__device__ __forceinline__ float4
operator+(
    const uint4& a,
    float s
    );

__device__ __forceinline__ float4
operator+(
    float s,
    const uint4& b
    );

__device__ __forceinline__ float2
operator+(
    float s,
    const uint2& b
    );

__device__ __forceinline__ double1
operator+(
    const uint1& a,
    double s
    );

__device__ __forceinline__ double1
operator+(
    double s,
    const uint1& b
    );

__device__ __forceinline__ double2
operator+(
    const uint2& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    const uint3& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    double s,
    const uint3& b
    );

__device__ __forceinline__ double4
operator+(
    const uint4& a,
    double s
    );

__device__ __forceinline__ double4
operator+(
    double s,
    const uint4& b
    );

__device__ __forceinline__ double2
operator+(
    double s,
    const uint2& b
    );

__device__ __forceinline__ float1
operator+(
    const float1& a,
    float s
    );

__device__ __forceinline__ float1
operator+(
    float s,
    const float1& b
    );

__device__ __forceinline__ float2
operator+(
    const float2& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    const float3& a,
    float s
    );

__device__ __forceinline__ float3
operator+(
    float s,
    const float3& b
    );

__device__ __forceinline__ float4
operator+(
    const float4& a,
    float s
    );

__device__ __forceinline__ float4
operator+(
    float s,
    const float4& b
    );

__device__ __forceinline__ float2
operator+(
    float s,
    const float2& b
    );

__device__ __forceinline__ double1
operator+(
    const float1& a,
    double s
    );

__device__ __forceinline__ double1
operator+(
    double s,
    const float1& b
    );

__device__ __forceinline__ double2
operator+(
    const float2& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    const float3& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    double s,
    const float3& b
    );

__device__ __forceinline__ double4
operator+(
    const float4& a,
    double s
    );

__device__ __forceinline__ double2
operator+(
    double s,
    const float2& b
    );

__device__ __forceinline__ double4
operator+(
    double s,
    const float4& b
    );

__device__ __forceinline__ double1
operator+(
    const double1& a,
    double s
    );

__device__ __forceinline__ double1
operator+(
    double s,
    const double1& b
    );

__device__ __forceinline__ double2
operator+(
    const double2& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    const double3& a,
    double s
    );

__device__ __forceinline__ double3
operator+(
    double s,
    const double3& b
    );

__device__ __forceinline__ double4
operator+(
    const double4& a,
    double s
    );

__device__ __forceinline__ double4
operator+(
    double s,
    const double4& b
    );

__device__ __forceinline__ double2
operator+(
    double s,
    const double2& b
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, negate<T>>>
operator-(const GpuMat_<T>& src);

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, negate<T>>>
operator-(const GlobPtrSz<T>& src);

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, negate<T>>>
operator-(const Texture<T>& src);

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, negate<typename Body::value_type>>>
operator-(const Expr<Body>& src);

__device__ __forceinline__ char1
operator-(const char1& a);

__device__ __forceinline__ char3
operator-(const char3& a);

__device__ __forceinline__ char2
operator-(const char2& a);

__device__ __forceinline__ char4
operator-(const char4& a);

__device__ __forceinline__ short4
operator-(const short4& a);

__device__ __forceinline__ short1
operator-(const short1& a);

__device__ __forceinline__ short2
operator-(const short2& a);

__device__ __forceinline__ short3
operator-(const short3& a);

__device__ __forceinline__ int2
operator-(const int2& a);

__device__ __forceinline__ int1
operator-(const int1& a);

__device__ __forceinline__ int3
operator-(const int3& a);

__device__ __forceinline__ int4
operator-(const int4& a);

__device__ __forceinline__ float3
operator-(const float3& a);

__device__ __forceinline__ float4
operator-(const float4& a);

__device__ __forceinline__ float1
operator-(const float1& a);

__device__ __forceinline__ float2
operator-(const float2& a);

__device__ __forceinline__ double1
operator-(const double1& a);

__device__ __forceinline__ double4
operator-(const double4& a);

__device__ __forceinline__ double3
operator-(const double3& a);

__device__ __forceinline__ double2
operator-(const double2& a);

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<minus<T>>>>
operator-(
    const Texture<T>& src,
    T val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, minus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator-(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, minus<T>>>
operator-(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, minus<T>>>
operator-(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, minus<T>>>
operator-(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, minus<T>>>
operator-(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, minus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator-(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, minus<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator-(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, minus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator-(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<minus<T>>>>
operator-(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<minus<T>>>>
operator-(
    T val,
    const GlobPtrSz<T>& src
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, minus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator-(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, minus<T>>>
operator-(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, minus<T>>>
operator-(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<minus<T>>>>
operator-(
    T val,
    const GpuMat_<T>& src
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, minus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator-(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, minus<T>>>
operator-(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<minus<typename Body::value_type>>>>
operator-(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<minus<typename Body::value_type>>>>
operator-(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<minus<T>>>>
operator-(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, minus<T>>>
operator-(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, minus<T>>>
operator-(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, minus<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator-(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<minus<T>>>>
operator-(
    T val,
    const Texture<T>& src
    );

__device__ __forceinline__ int3
operator-(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ int4
operator-(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ int1
operator-(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ int2
operator-(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ int4
operator-(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ int2
operator-(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ int3
operator-(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ int1
operator-(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ int3
operator-(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ int4
operator-(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ int2
operator-(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ int1
operator-(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ int3
operator-(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ int4
operator-(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ int2
operator-(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ int1
operator-(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ int1
operator-(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ int2
operator-(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ int4
operator-(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ int3
operator-(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uint4
operator-(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uint1
operator-(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uint3
operator-(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uint2
operator-(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ float3
operator-(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ float2
operator-(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ float4
operator-(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ float1
operator-(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ double4
operator-(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ double2
operator-(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ double3
operator-(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ double1
operator-(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ int1
operator-(
    const uchar1& a,
    int s
    );

__device__ __forceinline__ int1
operator-(
    int s,
    const uchar1& b
    );

__device__ __forceinline__ int2
operator-(
    const uchar2& a,
    int s
    );

__device__ __forceinline__ int3
operator-(
    const uchar3& a,
    int s
    );

__device__ __forceinline__ int3
operator-(
    int s,
    const uchar3& b
    );

__device__ __forceinline__ int4
operator-(
    const uchar4& a,
    int s
    );

__device__ __forceinline__ int4
operator-(
    int s,
    const uchar4& b
    );

__device__ __forceinline__ int2
operator-(
    int s,
    const uchar2& b
    );

__device__ __forceinline__ float1
operator-(
    const uchar1& a,
    float s
    );

__device__ __forceinline__ float1
operator-(
    float s,
    const uchar1& b
    );

__device__ __forceinline__ float2
operator-(
    const uchar2& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    const uchar3& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    float s,
    const uchar3& b
    );

__device__ __forceinline__ float4
operator-(
    const uchar4& a,
    float s
    );

__device__ __forceinline__ float4
operator-(
    float s,
    const uchar4& b
    );

__device__ __forceinline__ float2
operator-(
    float s,
    const uchar2& b
    );

__device__ __forceinline__ double4
operator-(
    double s,
    const uchar4& b
    );

__device__ __forceinline__ double1
operator-(
    const uchar1& a,
    double s
    );

__device__ __forceinline__ double1
operator-(
    double s,
    const uchar1& b
    );

__device__ __forceinline__ double2
operator-(
    const uchar2& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    const uchar3& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    double s,
    const uchar3& b
    );

__device__ __forceinline__ double4
operator-(
    const uchar4& a,
    double s
    );

__device__ __forceinline__ double2
operator-(
    double s,
    const uchar2& b
    );

__device__ __forceinline__ int2
operator-(
    int s,
    const char2& b
    );

__device__ __forceinline__ int1
operator-(
    const char1& a,
    int s
    );

__device__ __forceinline__ int1
operator-(
    int s,
    const char1& b
    );

__device__ __forceinline__ int2
operator-(
    const char2& a,
    int s
    );

__device__ __forceinline__ int3
operator-(
    const char3& a,
    int s
    );

__device__ __forceinline__ int3
operator-(
    int s,
    const char3& b
    );

__device__ __forceinline__ int4
operator-(
    const char4& a,
    int s
    );

__device__ __forceinline__ int4
operator-(
    int s,
    const char4& b
    );

__device__ __forceinline__ float1
operator-(
    const char1& a,
    float s
    );

__device__ __forceinline__ float1
operator-(
    float s,
    const char1& b
    );

__device__ __forceinline__ float2
operator-(
    const char2& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    const char3& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    float s,
    const char3& b
    );

__device__ __forceinline__ float4
operator-(
    const char4& a,
    float s
    );

__device__ __forceinline__ float4
operator-(
    float s,
    const char4& b
    );

__device__ __forceinline__ float2
operator-(
    float s,
    const char2& b
    );

__device__ __forceinline__ double1
operator-(
    const char1& a,
    double s
    );

__device__ __forceinline__ double1
operator-(
    double s,
    const char1& b
    );

__device__ __forceinline__ double2
operator-(
    const char2& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    const char3& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    double s,
    const char3& b
    );

__device__ __forceinline__ double4
operator-(
    const char4& a,
    double s
    );

__device__ __forceinline__ double4
operator-(
    double s,
    const char4& b
    );

__device__ __forceinline__ double2
operator-(
    double s,
    const char2& b
    );

__device__ __forceinline__ int4
operator-(
    int s,
    const ushort4& b
    );

__device__ __forceinline__ int2
operator-(
    int s,
    const ushort2& b
    );

__device__ __forceinline__ int1
operator-(
    const ushort1& a,
    int s
    );

__device__ __forceinline__ int1
operator-(
    int s,
    const ushort1& b
    );

__device__ __forceinline__ int2
operator-(
    const ushort2& a,
    int s
    );

__device__ __forceinline__ int3
operator-(
    const ushort3& a,
    int s
    );

__device__ __forceinline__ int3
operator-(
    int s,
    const ushort3& b
    );

__device__ __forceinline__ int4
operator-(
    const ushort4& a,
    int s
    );

__device__ __forceinline__ float2
operator-(
    float s,
    const ushort2& b
    );

__device__ __forceinline__ float1
operator-(
    const ushort1& a,
    float s
    );

__device__ __forceinline__ float1
operator-(
    float s,
    const ushort1& b
    );

__device__ __forceinline__ float2
operator-(
    const ushort2& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    const ushort3& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    float s,
    const ushort3& b
    );

__device__ __forceinline__ float4
operator-(
    const ushort4& a,
    float s
    );

__device__ __forceinline__ float4
operator-(
    float s,
    const ushort4& b
    );

__device__ __forceinline__ double2
operator-(
    double s,
    const ushort2& b
    );

__device__ __forceinline__ double1
operator-(
    const ushort1& a,
    double s
    );

__device__ __forceinline__ double1
operator-(
    double s,
    const ushort1& b
    );

__device__ __forceinline__ double2
operator-(
    const ushort2& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    const ushort3& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    double s,
    const ushort3& b
    );

__device__ __forceinline__ double4
operator-(
    const ushort4& a,
    double s
    );

__device__ __forceinline__ double4
operator-(
    double s,
    const ushort4& b
    );

__device__ __forceinline__ int1
operator-(
    const short1& a,
    int s
    );

__device__ __forceinline__ int1
operator-(
    int s,
    const short1& b
    );

__device__ __forceinline__ int2
operator-(
    const short2& a,
    int s
    );

__device__ __forceinline__ int3
operator-(
    const short3& a,
    int s
    );

__device__ __forceinline__ int3
operator-(
    int s,
    const short3& b
    );

__device__ __forceinline__ int4
operator-(
    const short4& a,
    int s
    );

__device__ __forceinline__ int4
operator-(
    int s,
    const short4& b
    );

__device__ __forceinline__ int2
operator-(
    int s,
    const short2& b
    );

__device__ __forceinline__ float1
operator-(
    const short1& a,
    float s
    );

__device__ __forceinline__ float1
operator-(
    float s,
    const short1& b
    );

__device__ __forceinline__ float2
operator-(
    const short2& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    const short3& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    float s,
    const short3& b
    );

__device__ __forceinline__ float4
operator-(
    const short4& a,
    float s
    );

__device__ __forceinline__ float2
operator-(
    float s,
    const short2& b
    );

__device__ __forceinline__ float4
operator-(
    float s,
    const short4& b
    );

__device__ __forceinline__ double1
operator-(
    const short1& a,
    double s
    );

__device__ __forceinline__ double1
operator-(
    double s,
    const short1& b
    );

__device__ __forceinline__ double2
operator-(
    const short2& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    const short3& a,
    double s
    );

__device__ __forceinline__ double4
operator-(
    const short4& a,
    double s
    );

__device__ __forceinline__ double4
operator-(
    double s,
    const short4& b
    );

__device__ __forceinline__ double2
operator-(
    double s,
    const short2& b
    );

__device__ __forceinline__ double3
operator-(
    double s,
    const short3& b
    );

__device__ __forceinline__ int2
operator-(
    int s,
    const int2& b
    );

__device__ __forceinline__ int1
operator-(
    const int1& a,
    int s
    );

__device__ __forceinline__ int1
operator-(
    int s,
    const int1& b
    );

__device__ __forceinline__ int2
operator-(
    const int2& a,
    int s
    );

__device__ __forceinline__ int3
operator-(
    const int3& a,
    int s
    );

__device__ __forceinline__ int3
operator-(
    int s,
    const int3& b
    );

__device__ __forceinline__ int4
operator-(
    const int4& a,
    int s
    );

__device__ __forceinline__ int4
operator-(
    int s,
    const int4& b
    );

__device__ __forceinline__ float4
operator-(
    float s,
    const int4& b
    );

__device__ __forceinline__ float1
operator-(
    const int1& a,
    float s
    );

__device__ __forceinline__ float1
operator-(
    float s,
    const int1& b
    );

__device__ __forceinline__ float2
operator-(
    const int2& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    const int3& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    float s,
    const int3& b
    );

__device__ __forceinline__ float4
operator-(
    const int4& a,
    float s
    );

__device__ __forceinline__ float2
operator-(
    float s,
    const int2& b
    );

__device__ __forceinline__ double2
operator-(
    double s,
    const int2& b
    );

__device__ __forceinline__ double4
operator-(
    double s,
    const int4& b
    );

__device__ __forceinline__ double1
operator-(
    const int1& a,
    double s
    );

__device__ __forceinline__ double1
operator-(
    double s,
    const int1& b
    );

__device__ __forceinline__ double2
operator-(
    const int2& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    const int3& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    double s,
    const int3& b
    );

__device__ __forceinline__ double4
operator-(
    const int4& a,
    double s
    );

__device__ __forceinline__ uint4
operator-(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uint1
operator-(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uint2
operator-(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uint1
operator-(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uint2
operator-(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uint3
operator-(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uint3
operator-(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uint4
operator-(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ float2
operator-(
    float s,
    const uint2& b
    );

__device__ __forceinline__ float1
operator-(
    const uint1& a,
    float s
    );

__device__ __forceinline__ float1
operator-(
    float s,
    const uint1& b
    );

__device__ __forceinline__ float2
operator-(
    const uint2& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    const uint3& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    float s,
    const uint3& b
    );

__device__ __forceinline__ float4
operator-(
    const uint4& a,
    float s
    );

__device__ __forceinline__ float4
operator-(
    float s,
    const uint4& b
    );

__device__ __forceinline__ double1
operator-(
    const uint1& a,
    double s
    );

__device__ __forceinline__ double1
operator-(
    double s,
    const uint1& b
    );

__device__ __forceinline__ double2
operator-(
    const uint2& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    const uint3& a,
    double s
    );

__device__ __forceinline__ double4
operator-(
    const uint4& a,
    double s
    );

__device__ __forceinline__ double2
operator-(
    double s,
    const uint2& b
    );

__device__ __forceinline__ double3
operator-(
    double s,
    const uint3& b
    );

__device__ __forceinline__ double4
operator-(
    double s,
    const uint4& b
    );

__device__ __forceinline__ float1
operator-(
    const float1& a,
    float s
    );

__device__ __forceinline__ float1
operator-(
    float s,
    const float1& b
    );

__device__ __forceinline__ float2
operator-(
    const float2& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    const float3& a,
    float s
    );

__device__ __forceinline__ float3
operator-(
    float s,
    const float3& b
    );

__device__ __forceinline__ float4
operator-(
    const float4& a,
    float s
    );

__device__ __forceinline__ float4
operator-(
    float s,
    const float4& b
    );

__device__ __forceinline__ float2
operator-(
    float s,
    const float2& b
    );

__device__ __forceinline__ double1
operator-(
    const float1& a,
    double s
    );

__device__ __forceinline__ double2
operator-(
    const float2& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    const float3& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    double s,
    const float3& b
    );

__device__ __forceinline__ double4
operator-(
    const float4& a,
    double s
    );

__device__ __forceinline__ double2
operator-(
    double s,
    const float2& b
    );

__device__ __forceinline__ double1
operator-(
    double s,
    const float1& b
    );

__device__ __forceinline__ double4
operator-(
    double s,
    const float4& b
    );

__device__ __forceinline__ double1
operator-(
    const double1& a,
    double s
    );

__device__ __forceinline__ double1
operator-(
    double s,
    const double1& b
    );

__device__ __forceinline__ double2
operator-(
    const double2& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    const double3& a,
    double s
    );

__device__ __forceinline__ double3
operator-(
    double s,
    const double3& b
    );

__device__ __forceinline__ double4
operator-(
    const double4& a,
    double s
    );

__device__ __forceinline__ double4
operator-(
    double s,
    const double4& b
    );

__device__ __forceinline__ double2
operator-(
    double s,
    const double2& b
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<divides<typename Body::value_type>>>>
operator/(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<divides<typename Body::value_type>>>>
operator/(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, divides<T>>>
operator/(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, divides<T>>>
operator/(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<divides<T>>>>
operator/(
    T val,
    const Texture<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, divides<T>>>
operator/(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, divides<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator/(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, divides<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator/(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, divides<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator/(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<divides<T>>>>
operator/(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<divides<T>>>>
operator/(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, divides<T>>>
operator/(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, divides<T>>>
operator/(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, divides<T>>>
operator/(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, divides<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator/(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, divides<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator/(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<divides<T>>>>
operator/(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<divides<T>>>>
operator/(
    T val,
    const GlobPtrSz<T>& src
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, divides<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator/(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, divides<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator/(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<divides<T>>>>
operator/(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, divides<T>>>
operator/(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, divides<T>>>
operator/(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, divides<T>>>
operator/(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

__device__ __forceinline__ int2
operator/(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ int1
operator/(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ int4
operator/(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ int3
operator/(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ int3
operator/(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ int2
operator/(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ int4
operator/(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ int1
operator/(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ int2
operator/(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ int3
operator/(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ int4
operator/(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ int1
operator/(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ int4
operator/(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ int1
operator/(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ int2
operator/(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ int3
operator/(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ int2
operator/(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ int3
operator/(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ int4
operator/(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ int1
operator/(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ uint2
operator/(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uint4
operator/(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uint3
operator/(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uint1
operator/(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ float3
operator/(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ float4
operator/(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ float2
operator/(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ float1
operator/(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ double3
operator/(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ double4
operator/(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ double2
operator/(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ double1
operator/(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ int1
operator/(
    const uchar1& a,
    int s
    );

__device__ __forceinline__ int1
operator/(
    int s,
    const uchar1& b
    );

__device__ __forceinline__ int2
operator/(
    const uchar2& a,
    int s
    );

__device__ __forceinline__ int3
operator/(
    const uchar3& a,
    int s
    );

__device__ __forceinline__ int3
operator/(
    int s,
    const uchar3& b
    );

__device__ __forceinline__ int4
operator/(
    const uchar4& a,
    int s
    );

__device__ __forceinline__ int2
operator/(
    int s,
    const uchar2& b
    );

__device__ __forceinline__ int4
operator/(
    int s,
    const uchar4& b
    );

__device__ __forceinline__ float1
operator/(
    const uchar1& a,
    float s
    );

__device__ __forceinline__ float1
operator/(
    float s,
    const uchar1& b
    );

__device__ __forceinline__ float2
operator/(
    const uchar2& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    const uchar3& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    float s,
    const uchar3& b
    );

__device__ __forceinline__ float4
operator/(
    const uchar4& a,
    float s
    );

__device__ __forceinline__ float2
operator/(
    float s,
    const uchar2& b
    );

__device__ __forceinline__ float4
operator/(
    float s,
    const uchar4& b
    );

__device__ __forceinline__ double1
operator/(
    const uchar1& a,
    double s
    );

__device__ __forceinline__ double1
operator/(
    double s,
    const uchar1& b
    );

__device__ __forceinline__ double2
operator/(
    const uchar2& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    const uchar3& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    double s,
    const uchar3& b
    );

__device__ __forceinline__ double4
operator/(
    const uchar4& a,
    double s
    );

__device__ __forceinline__ double2
operator/(
    double s,
    const uchar2& b
    );

__device__ __forceinline__ double4
operator/(
    double s,
    const uchar4& b
    );

__device__ __forceinline__ int1
operator/(
    const char1& a,
    int s
    );

__device__ __forceinline__ int1
operator/(
    int s,
    const char1& b
    );

__device__ __forceinline__ int2
operator/(
    const char2& a,
    int s
    );

__device__ __forceinline__ int3
operator/(
    const char3& a,
    int s
    );

__device__ __forceinline__ int3
operator/(
    int s,
    const char3& b
    );

__device__ __forceinline__ int4
operator/(
    const char4& a,
    int s
    );

__device__ __forceinline__ int2
operator/(
    int s,
    const char2& b
    );

__device__ __forceinline__ int4
operator/(
    int s,
    const char4& b
    );

__device__ __forceinline__ float1
operator/(
    const char1& a,
    float s
    );

__device__ __forceinline__ float2
operator/(
    const char2& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    const char3& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    float s,
    const char3& b
    );

__device__ __forceinline__ float4
operator/(
    const char4& a,
    float s
    );

__device__ __forceinline__ float4
operator/(
    float s,
    const char4& b
    );

__device__ __forceinline__ float2
operator/(
    float s,
    const char2& b
    );

__device__ __forceinline__ float1
operator/(
    float s,
    const char1& b
    );

__device__ __forceinline__ double3
operator/(
    double s,
    const char3& b
    );

__device__ __forceinline__ double1
operator/(
    const char1& a,
    double s
    );

__device__ __forceinline__ double2
operator/(
    const char2& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    const char3& a,
    double s
    );

__device__ __forceinline__ double4
operator/(
    const char4& a,
    double s
    );

__device__ __forceinline__ double1
operator/(
    double s,
    const char1& b
    );

__device__ __forceinline__ double2
operator/(
    double s,
    const char2& b
    );

__device__ __forceinline__ double4
operator/(
    double s,
    const char4& b
    );

__device__ __forceinline__ int3
operator/(
    int s,
    const ushort3& b
    );

__device__ __forceinline__ int1
operator/(
    const ushort1& a,
    int s
    );

__device__ __forceinline__ int2
operator/(
    const ushort2& a,
    int s
    );

__device__ __forceinline__ int3
operator/(
    const ushort3& a,
    int s
    );

__device__ __forceinline__ int4
operator/(
    const ushort4& a,
    int s
    );

__device__ __forceinline__ int4
operator/(
    int s,
    const ushort4& b
    );

__device__ __forceinline__ int2
operator/(
    int s,
    const ushort2& b
    );

__device__ __forceinline__ int1
operator/(
    int s,
    const ushort1& b
    );

__device__ __forceinline__ float3
operator/(
    float s,
    const ushort3& b
    );

__device__ __forceinline__ float1
operator/(
    const ushort1& a,
    float s
    );

__device__ __forceinline__ float2
operator/(
    const ushort2& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    const ushort3& a,
    float s
    );

__device__ __forceinline__ float4
operator/(
    const ushort4& a,
    float s
    );

__device__ __forceinline__ float1
operator/(
    float s,
    const ushort1& b
    );

__device__ __forceinline__ float2
operator/(
    float s,
    const ushort2& b
    );

__device__ __forceinline__ float4
operator/(
    float s,
    const ushort4& b
    );

__device__ __forceinline__ double1
operator/(
    const ushort1& a,
    double s
    );

__device__ __forceinline__ double2
operator/(
    const ushort2& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    const ushort3& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    double s,
    const ushort3& b
    );

__device__ __forceinline__ double4
operator/(
    const ushort4& a,
    double s
    );

__device__ __forceinline__ double4
operator/(
    double s,
    const ushort4& b
    );

__device__ __forceinline__ double2
operator/(
    double s,
    const ushort2& b
    );

__device__ __forceinline__ double1
operator/(
    double s,
    const ushort1& b
    );

__device__ __forceinline__ int1
operator/(
    const short1& a,
    int s
    );

__device__ __forceinline__ int1
operator/(
    int s,
    const short1& b
    );

__device__ __forceinline__ int2
operator/(
    const short2& a,
    int s
    );

__device__ __forceinline__ int3
operator/(
    const short3& a,
    int s
    );

__device__ __forceinline__ int3
operator/(
    int s,
    const short3& b
    );

__device__ __forceinline__ int4
operator/(
    const short4& a,
    int s
    );

__device__ __forceinline__ int2
operator/(
    int s,
    const short2& b
    );

__device__ __forceinline__ int4
operator/(
    int s,
    const short4& b
    );

__device__ __forceinline__ float3
operator/(
    float s,
    const short3& b
    );

__device__ __forceinline__ float1
operator/(
    const short1& a,
    float s
    );

__device__ __forceinline__ float1
operator/(
    float s,
    const short1& b
    );

__device__ __forceinline__ float2
operator/(
    const short2& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    const short3& a,
    float s
    );

__device__ __forceinline__ float4
operator/(
    const short4& a,
    float s
    );

__device__ __forceinline__ float4
operator/(
    float s,
    const short4& b
    );

__device__ __forceinline__ float2
operator/(
    float s,
    const short2& b
    );

__device__ __forceinline__ double1
operator/(
    const short1& a,
    double s
    );

__device__ __forceinline__ double1
operator/(
    double s,
    const short1& b
    );

__device__ __forceinline__ double2
operator/(
    const short2& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    const short3& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    double s,
    const short3& b
    );

__device__ __forceinline__ double4
operator/(
    const short4& a,
    double s
    );

__device__ __forceinline__ double2
operator/(
    double s,
    const short2& b
    );

__device__ __forceinline__ double4
operator/(
    double s,
    const short4& b
    );

__device__ __forceinline__ int1
operator/(
    const int1& a,
    int s
    );

__device__ __forceinline__ int1
operator/(
    int s,
    const int1& b
    );

__device__ __forceinline__ int2
operator/(
    const int2& a,
    int s
    );

__device__ __forceinline__ int3
operator/(
    const int3& a,
    int s
    );

__device__ __forceinline__ int3
operator/(
    int s,
    const int3& b
    );

__device__ __forceinline__ int4
operator/(
    const int4& a,
    int s
    );

__device__ __forceinline__ int4
operator/(
    int s,
    const int4& b
    );

__device__ __forceinline__ int2
operator/(
    int s,
    const int2& b
    );

__device__ __forceinline__ float1
operator/(
    const int1& a,
    float s
    );

__device__ __forceinline__ float1
operator/(
    float s,
    const int1& b
    );

__device__ __forceinline__ float2
operator/(
    const int2& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    const int3& a,
    float s
    );

__device__ __forceinline__ float4
operator/(
    const int4& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    float s,
    const int3& b
    );

__device__ __forceinline__ float2
operator/(
    float s,
    const int2& b
    );

__device__ __forceinline__ float4
operator/(
    float s,
    const int4& b
    );

__device__ __forceinline__ double1
operator/(
    const int1& a,
    double s
    );

__device__ __forceinline__ double1
operator/(
    double s,
    const int1& b
    );

__device__ __forceinline__ double2
operator/(
    const int2& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    const int3& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    double s,
    const int3& b
    );

__device__ __forceinline__ double4
operator/(
    const int4& a,
    double s
    );

__device__ __forceinline__ double2
operator/(
    double s,
    const int2& b
    );

__device__ __forceinline__ double4
operator/(
    double s,
    const int4& b
    );

__device__ __forceinline__ uint1
operator/(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uint1
operator/(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uint2
operator/(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uint3
operator/(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uint4
operator/(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uint3
operator/(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uint2
operator/(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uint4
operator/(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ float1
operator/(
    const uint1& a,
    float s
    );

__device__ __forceinline__ float1
operator/(
    float s,
    const uint1& b
    );

__device__ __forceinline__ float2
operator/(
    const uint2& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    const uint3& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    float s,
    const uint3& b
    );

__device__ __forceinline__ float4
operator/(
    const uint4& a,
    float s
    );

__device__ __forceinline__ float4
operator/(
    float s,
    const uint4& b
    );

__device__ __forceinline__ float2
operator/(
    float s,
    const uint2& b
    );

__device__ __forceinline__ double1
operator/(
    const uint1& a,
    double s
    );

__device__ __forceinline__ double1
operator/(
    double s,
    const uint1& b
    );

__device__ __forceinline__ double2
operator/(
    const uint2& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    const uint3& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    double s,
    const uint3& b
    );

__device__ __forceinline__ double4
operator/(
    const uint4& a,
    double s
    );

__device__ __forceinline__ double4
operator/(
    double s,
    const uint4& b
    );

__device__ __forceinline__ double2
operator/(
    double s,
    const uint2& b
    );

__device__ __forceinline__ float4
operator/(
    const float4& a,
    float s
    );

__device__ __forceinline__ float1
operator/(
    const float1& a,
    float s
    );

__device__ __forceinline__ float2
operator/(
    const float2& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    const float3& a,
    float s
    );

__device__ __forceinline__ float3
operator/(
    float s,
    const float3& b
    );

__device__ __forceinline__ float4
operator/(
    float s,
    const float4& b
    );

__device__ __forceinline__ float2
operator/(
    float s,
    const float2& b
    );

__device__ __forceinline__ float1
operator/(
    float s,
    const float1& b
    );

__device__ __forceinline__ double1
operator/(
    double s,
    const float1& b
    );

__device__ __forceinline__ double2
operator/(
    const float2& a,
    double s
    );

__device__ __forceinline__ double1
operator/(
    const float1& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    const float3& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    double s,
    const float3& b
    );

__device__ __forceinline__ double4
operator/(
    const float4& a,
    double s
    );

__device__ __forceinline__ double2
operator/(
    double s,
    const float2& b
    );

__device__ __forceinline__ double4
operator/(
    double s,
    const float4& b
    );

__device__ __forceinline__ double4
operator/(
    const double4& a,
    double s
    );

__device__ __forceinline__ double1
operator/(
    const double1& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    const double3& a,
    double s
    );

__device__ __forceinline__ double3
operator/(
    double s,
    const double3& b
    );

__device__ __forceinline__ double1
operator/(
    double s,
    const double1& b
    );

__device__ __forceinline__ double4
operator/(
    double s,
    const double4& b
    );

__device__ __forceinline__ double2
operator/(
    double s,
    const double2& b
    );

__device__ __forceinline__ double2
operator/(
    const double2& a,
    double s
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<less<T>>>>
operator<(
    const Texture<T>& src,
    T val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, less<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<less<T>>>>
operator<(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, less<T>>>
operator<(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, less<T>>>
operator<(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, less<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, less<T>>>
operator<(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, less<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, less<T>>>
operator<(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<less<typename Body::value_type>>>>
operator<(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<less<typename Body::value_type>>>>
operator<(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, less<T>>>
operator<(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, less<T>>>
operator<(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, less<T>>>
operator<(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, less<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, less<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<less<T>>>>
operator<(
    const GpuMat_<T>& src,
    T val
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, less<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator<(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<less<T>>>>
operator<(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, less<T>>>
operator<(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<less<T>>>>
operator<(
    T val,
    const Texture<T>& src
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, less<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<less<T>>>>
operator<(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, less<T>>>
operator<(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

__device__ __forceinline__ uchar3
operator<(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator<(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator<(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator<(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar1
operator<(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ uchar4
operator<(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ uchar3
operator<(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ uchar2
operator<(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ uchar2
operator<(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ uchar3
operator<(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ uchar4
operator<(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ uchar1
operator<(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ uchar1
operator<(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ uchar4
operator<(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ uchar3
operator<(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ uchar2
operator<(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ uchar4
operator<(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ uchar2
operator<(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ uchar1
operator<(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ uchar3
operator<(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uchar2
operator<(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uchar4
operator<(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uchar3
operator<(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uchar1
operator<(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uchar2
operator<(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ uchar4
operator<(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ uchar3
operator<(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ uchar1
operator<(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ uchar2
operator<(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ uchar3
operator<(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ uchar4
operator<(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ uchar1
operator<(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ uchar1
operator<(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar2
operator<(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator<(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator<(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator<(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar2
operator<(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator<(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar1
operator<(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar4
operator<(
    const char4& a,
    char s
    );

__device__ __forceinline__ uchar1
operator<(
    const char1& a,
    char s
    );

__device__ __forceinline__ uchar1
operator<(
    char s,
    const char1& b
    );

__device__ __forceinline__ uchar2
operator<(
    const char2& a,
    char s
    );

__device__ __forceinline__ uchar3
operator<(
    const char3& a,
    char s
    );

__device__ __forceinline__ uchar3
operator<(
    char s,
    const char3& b
    );

__device__ __forceinline__ uchar4
operator<(
    char s,
    const char4& b
    );

__device__ __forceinline__ uchar2
operator<(
    char s,
    const char2& b
    );

__device__ __forceinline__ uchar1
operator<(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ uchar2
operator<(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ uchar1
operator<(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator<(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator<(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ uchar4
operator<(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ uchar2
operator<(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ uchar4
operator<(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ uchar4
operator<(
    const short4& a,
    short s
    );

__device__ __forceinline__ uchar2
operator<(
    const short2& a,
    short s
    );

__device__ __forceinline__ uchar1
operator<(
    const short1& a,
    short s
    );

__device__ __forceinline__ uchar3
operator<(
    const short3& a,
    short s
    );

__device__ __forceinline__ uchar3
operator<(
    short s,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator<(
    short s,
    const short4& b
    );

__device__ __forceinline__ uchar2
operator<(
    short s,
    const short2& b
    );

__device__ __forceinline__ uchar1
operator<(
    short s,
    const short1& b
    );

__device__ __forceinline__ uchar2
operator<(
    const int2& a,
    int s
    );

__device__ __forceinline__ uchar4
operator<(
    int s,
    const int4& b
    );

__device__ __forceinline__ uchar1
operator<(
    const int1& a,
    int s
    );

__device__ __forceinline__ uchar3
operator<(
    const int3& a,
    int s
    );

__device__ __forceinline__ uchar3
operator<(
    int s,
    const int3& b
    );

__device__ __forceinline__ uchar4
operator<(
    const int4& a,
    int s
    );

__device__ __forceinline__ uchar1
operator<(
    int s,
    const int1& b
    );

__device__ __forceinline__ uchar2
operator<(
    int s,
    const int2& b
    );

__device__ __forceinline__ uchar1
operator<(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uchar4
operator<(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uchar2
operator<(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uchar1
operator<(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uchar3
operator<(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uchar3
operator<(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uchar4
operator<(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uchar2
operator<(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uchar1
operator<(
    float s,
    const float1& b
    );

__device__ __forceinline__ uchar2
operator<(
    const float2& a,
    float s
    );

__device__ __forceinline__ uchar1
operator<(
    const float1& a,
    float s
    );

__device__ __forceinline__ uchar3
operator<(
    const float3& a,
    float s
    );

__device__ __forceinline__ uchar3
operator<(
    float s,
    const float3& b
    );

__device__ __forceinline__ uchar4
operator<(
    const float4& a,
    float s
    );

__device__ __forceinline__ uchar2
operator<(
    float s,
    const float2& b
    );

__device__ __forceinline__ uchar4
operator<(
    float s,
    const float4& b
    );

__device__ __forceinline__ uchar4
operator<(
    double s,
    const double4& b
    );

__device__ __forceinline__ uchar1
operator<(
    const double1& a,
    double s
    );

__device__ __forceinline__ uchar3
operator<(
    const double3& a,
    double s
    );

__device__ __forceinline__ uchar3
operator<(
    double s,
    const double3& b
    );

__device__ __forceinline__ uchar4
operator<(
    const double4& a,
    double s
    );

__device__ __forceinline__ uchar2
operator<(
    const double2& a,
    double s
    );

__device__ __forceinline__ uchar1
operator<(
    double s,
    const double1& b
    );

__device__ __forceinline__ uchar2
operator<(
    double s,
    const double2& b
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<bit_lshift<T>>>>
operator<<(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_lshift<T>>>
operator<<(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_lshift<T>>>
operator<<(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_lshift<T>>>
operator<<(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_lshift<T>>>
operator<<(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_lshift<T>>>
operator<<(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<bit_lshift<T>>>>
operator<<(
    T val,
    const GpuMat_<T>& src
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_lshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<<(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_lshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<<(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<bit_lshift<T>>>>
operator<<(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_lshift<T>>>
operator<<(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<bit_lshift<T>>>>
operator<<(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_lshift<T>>>
operator<<(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_lshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<<(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_lshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<<(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<bit_lshift<T>>>>
operator<<(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<bit_lshift<T>>>>
operator<<(
    T val,
    const Texture<T>& src
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, bit_lshift<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator<<(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<bit_lshift<typename Body::value_type>>>>
operator<<(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_lshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<<(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_lshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<<(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<bit_lshift<typename Body::value_type>>>>
operator<<(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_lshift<T>>>
operator<<(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_lshift<T>>>
operator<<(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, less_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<=(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<less_equal<T>>>>
operator<=(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<less_equal<T>>>>
operator<=(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, less_equal<T>>>
operator<=(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, less_equal<T>>>
operator<=(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, less_equal<T>>>
operator<=(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, less_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<=(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, less_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<=(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<less_equal<T>>>>
operator<=(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<less_equal<T>>>>
operator<=(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, less_equal<T>>>
operator<=(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, less_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<=(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<less_equal<T>>>>
operator<=(
    T val,
    const Texture<T>& src
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<less_equal<typename Body::value_type>>>>
operator<=(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<less_equal<typename Body::value_type>>>>
operator<=(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, less_equal<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator<=(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, less_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<=(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, less_equal<T>>>
operator<=(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<less_equal<T>>>>
operator<=(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, less_equal<T>>>
operator<=(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, less_equal<T>>>
operator<=(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, less_equal<T>>>
operator<=(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, less_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator<=(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, less_equal<T>>>
operator<=(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

__device__ __forceinline__ uchar1
operator<=(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar3
operator<=(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator<=(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ uchar3
operator<=(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ uchar3
operator<=(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ uchar3
operator<=(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uchar3
operator<=(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ uchar3
operator<=(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ uchar3
operator<=(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ uchar2
operator<=(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator<=(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar1
operator<=(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar3
operator<=(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator<=(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar2
operator<=(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator<=(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator<=(
    char s,
    const char1& b
    );

__device__ __forceinline__ uchar3
operator<=(
    char s,
    const char3& b
    );

__device__ __forceinline__ uchar4
operator<=(
    char s,
    const char4& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const char1& a,
    char s
    );

__device__ __forceinline__ uchar3
operator<=(
    const char3& a,
    char s
    );

__device__ __forceinline__ uchar4
operator<=(
    const char4& a,
    char s
    );

__device__ __forceinline__ uchar2
operator<=(
    const char2& a,
    char s
    );

__device__ __forceinline__ uchar2
operator<=(
    char s,
    const char2& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ uchar1
operator<=(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ uchar2
operator<=(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ uchar4
operator<=(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ uchar1
operator<=(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator<=(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator<=(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const short2& a,
    short s
    );

__device__ __forceinline__ uchar1
operator<=(
    short s,
    const short1& b
    );

__device__ __forceinline__ uchar2
operator<=(
    short s,
    const short2& b
    );

__device__ __forceinline__ uchar3
operator<=(
    short s,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator<=(
    short s,
    const short4& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const short4& a,
    short s
    );

__device__ __forceinline__ uchar1
operator<=(
    const short1& a,
    short s
    );

__device__ __forceinline__ uchar3
operator<=(
    const short3& a,
    short s
    );

__device__ __forceinline__ uchar4
operator<=(
    int s,
    const int4& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const int1& a,
    int s
    );

__device__ __forceinline__ uchar2
operator<=(
    int s,
    const int2& b
    );

__device__ __forceinline__ uchar1
operator<=(
    int s,
    const int1& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const int2& a,
    int s
    );

__device__ __forceinline__ uchar4
operator<=(
    const int4& a,
    int s
    );

__device__ __forceinline__ uchar3
operator<=(
    const int3& a,
    int s
    );

__device__ __forceinline__ uchar3
operator<=(
    int s,
    const int3& b
    );

__device__ __forceinline__ uchar4
operator<=(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uchar3
operator<=(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uchar1
operator<=(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uchar2
operator<=(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uchar3
operator<=(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uchar1
operator<=(
    float s,
    const float1& b
    );

__device__ __forceinline__ uchar2
operator<=(
    const float2& a,
    float s
    );

__device__ __forceinline__ uchar1
operator<=(
    const float1& a,
    float s
    );

__device__ __forceinline__ uchar3
operator<=(
    const float3& a,
    float s
    );

__device__ __forceinline__ uchar3
operator<=(
    float s,
    const float3& b
    );

__device__ __forceinline__ uchar2
operator<=(
    float s,
    const float2& b
    );

__device__ __forceinline__ uchar4
operator<=(
    float s,
    const float4& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const float4& a,
    float s
    );

__device__ __forceinline__ uchar3
operator<=(
    double s,
    const double3& b
    );

__device__ __forceinline__ uchar4
operator<=(
    const double4& a,
    double s
    );

__device__ __forceinline__ uchar2
operator<=(
    const double2& a,
    double s
    );

__device__ __forceinline__ uchar1
operator<=(
    double s,
    const double1& b
    );

__device__ __forceinline__ uchar1
operator<=(
    const double1& a,
    double s
    );

__device__ __forceinline__ uchar3
operator<=(
    const double3& a,
    double s
    );

__device__ __forceinline__ uchar2
operator<=(
    double s,
    const double2& b
    );

__device__ __forceinline__ uchar4
operator<=(
    double s,
    const double4& b
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, equal_to<T>>>
operator==(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<equal_to<T>>>>
operator==(
    T val,
    const Texture<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, equal_to<T>>>
operator==(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, equal_to<T>>>
operator==(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, equal_to<T>>>
operator==(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, equal_to<T>>>
operator==(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, equal_to<T>>>
operator==(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator==(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator==(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<equal_to<T>>>>
operator==(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<equal_to<T>>>>
operator==(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, equal_to<T>>>
operator==(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, equal_to<T>>>
operator==(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, equal_to<T>>>
operator==(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator==(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<equal_to<T>>>>
operator==(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<equal_to<T>>>>
operator==(
    T val,
    const GlobPtrSz<T>& src
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator==(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<equal_to<typename Body::value_type>>>>
operator==(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator==(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<equal_to<typename Body::value_type>>>>
operator==(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, equal_to<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator==(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, equal_to<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator==(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<equal_to<T>>>>
operator==(
    const Texture<T>& src,
    T val
    );

__device__ __forceinline__ uchar2
operator==(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator==(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator==(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator==(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar1
operator==(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ uchar2
operator==(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ uchar4
operator==(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ uchar3
operator==(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ uchar2
operator==(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ uchar1
operator==(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ uchar4
operator==(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ uchar3
operator==(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ uchar4
operator==(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ uchar2
operator==(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ uchar1
operator==(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ uchar3
operator==(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator==(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ uchar1
operator==(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ uchar2
operator==(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ uchar3
operator==(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uchar3
operator==(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uchar4
operator==(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uchar2
operator==(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uchar1
operator==(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uchar2
operator==(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ uchar4
operator==(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ uchar3
operator==(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ uchar1
operator==(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ uchar3
operator==(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ uchar2
operator==(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ uchar1
operator==(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ uchar4
operator==(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ uchar1
operator==(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator==(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar1
operator==(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator==(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator==(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator==(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar2
operator==(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar4
operator==(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar2
operator==(
    const char2& a,
    char s
    );

__device__ __forceinline__ uchar1
operator==(
    const char1& a,
    char s
    );

__device__ __forceinline__ uchar3
operator==(
    const char3& a,
    char s
    );

__device__ __forceinline__ uchar3
operator==(
    char s,
    const char3& b
    );

__device__ __forceinline__ uchar2
operator==(
    char s,
    const char2& b
    );

__device__ __forceinline__ uchar4
operator==(
    char s,
    const char4& b
    );

__device__ __forceinline__ uchar1
operator==(
    char s,
    const char1& b
    );

__device__ __forceinline__ uchar4
operator==(
    const char4& a,
    char s
    );

__device__ __forceinline__ uchar1
operator==(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ uchar2
operator==(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ uchar1
operator==(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator==(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator==(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ uchar4
operator==(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ uchar2
operator==(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ uchar4
operator==(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ uchar4
operator==(
    const short4& a,
    short s
    );

__device__ __forceinline__ uchar1
operator==(
    const short1& a,
    short s
    );

__device__ __forceinline__ uchar3
operator==(
    const short3& a,
    short s
    );

__device__ __forceinline__ uchar3
operator==(
    short s,
    const short3& b
    );

__device__ __forceinline__ uchar2
operator==(
    short s,
    const short2& b
    );

__device__ __forceinline__ uchar4
operator==(
    short s,
    const short4& b
    );

__device__ __forceinline__ uchar1
operator==(
    short s,
    const short1& b
    );

__device__ __forceinline__ uchar2
operator==(
    const short2& a,
    short s
    );

__device__ __forceinline__ uchar2
operator==(
    const int2& a,
    int s
    );

__device__ __forceinline__ uchar1
operator==(
    const int1& a,
    int s
    );

__device__ __forceinline__ uchar3
operator==(
    const int3& a,
    int s
    );

__device__ __forceinline__ uchar3
operator==(
    int s,
    const int3& b
    );

__device__ __forceinline__ uchar4
operator==(
    int s,
    const int4& b
    );

__device__ __forceinline__ uchar2
operator==(
    int s,
    const int2& b
    );

__device__ __forceinline__ uchar4
operator==(
    const int4& a,
    int s
    );

__device__ __forceinline__ uchar1
operator==(
    int s,
    const int1& b
    );

__device__ __forceinline__ uchar2
operator==(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uchar1
operator==(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uchar3
operator==(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uchar4
operator==(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uchar1
operator==(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uchar2
operator==(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uchar3
operator==(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uchar4
operator==(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uchar1
operator==(
    const float1& a,
    float s
    );

__device__ __forceinline__ uchar3
operator==(
    const float3& a,
    float s
    );

__device__ __forceinline__ uchar2
operator==(
    const float2& a,
    float s
    );

__device__ __forceinline__ uchar2
operator==(
    float s,
    const float2& b
    );

__device__ __forceinline__ uchar3
operator==(
    float s,
    const float3& b
    );

__device__ __forceinline__ uchar4
operator==(
    const float4& a,
    float s
    );

__device__ __forceinline__ uchar1
operator==(
    float s,
    const float1& b
    );

__device__ __forceinline__ uchar4
operator==(
    float s,
    const float4& b
    );

__device__ __forceinline__ uchar2
operator==(
    double s,
    const double2& b
    );

__device__ __forceinline__ uchar1
operator==(
    const double1& a,
    double s
    );

__device__ __forceinline__ uchar4
operator==(
    const double4& a,
    double s
    );

__device__ __forceinline__ uchar2
operator==(
    const double2& a,
    double s
    );

__device__ __forceinline__ uchar3
operator==(
    const double3& a,
    double s
    );

__device__ __forceinline__ uchar4
operator==(
    double s,
    const double4& b
    );

__device__ __forceinline__ uchar3
operator==(
    double s,
    const double3& b
    );

__device__ __forceinline__ uchar1
operator==(
    double s,
    const double1& b
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, greater<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<greater<T>>>>
operator>(
    const Texture<T>& src,
    T val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, greater<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, greater<T>>>
operator>(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<greater<T>>>>
operator>(
    const GpuMat_<T>& src,
    T val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, greater<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, greater<T>>>
operator>(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, greater<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<greater<T>>>>
operator>(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, greater<T>>>
operator>(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, greater<T>>>
operator>(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, greater<T>>>
operator>(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, greater<T>>>
operator>(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, greater<T>>>
operator>(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, greater<T>>>
operator>(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<greater<T>>>>
operator>(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<greater<T>>>>
operator>(
    T val,
    const Texture<T>& src
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, greater<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator>(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<greater<typename Body::value_type>>>>
operator>(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<greater<typename Body::value_type>>>>
operator>(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<greater<T>>>>
operator>(
    T val,
    const GpuMat_<T>& src
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, greater<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, greater<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, greater<T>>>
operator>(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

__device__ __forceinline__ uchar3
operator>(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator>(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator>(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator>(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator>(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ uchar4
operator>(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ uchar2
operator>(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ uchar1
operator>(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ uchar2
operator>(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ uchar3
operator>(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ uchar4
operator>(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ uchar1
operator>(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ uchar1
operator>(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ uchar2
operator>(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ uchar4
operator>(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ uchar3
operator>(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ uchar2
operator>(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ uchar4
operator>(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ uchar3
operator>(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uchar1
operator>(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ uchar1
operator>(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uchar3
operator>(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uchar4
operator>(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uchar2
operator>(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uchar4
operator>(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ uchar2
operator>(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ uchar3
operator>(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ uchar1
operator>(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ uchar1
operator>(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ uchar4
operator>(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ uchar3
operator>(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ uchar2
operator>(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ uchar4
operator>(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar2
operator>(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator>(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar1
operator>(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator>(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator>(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator>(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator>(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar1
operator>(
    char s,
    const char1& b
    );

__device__ __forceinline__ uchar1
operator>(
    const char1& a,
    char s
    );

__device__ __forceinline__ uchar4
operator>(
    const char4& a,
    char s
    );

__device__ __forceinline__ uchar4
operator>(
    char s,
    const char4& b
    );

__device__ __forceinline__ uchar2
operator>(
    const char2& a,
    char s
    );

__device__ __forceinline__ uchar3
operator>(
    const char3& a,
    char s
    );

__device__ __forceinline__ uchar3
operator>(
    char s,
    const char3& b
    );

__device__ __forceinline__ uchar2
operator>(
    char s,
    const char2& b
    );

__device__ __forceinline__ uchar4
operator>(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ uchar3
operator>(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ uchar2
operator>(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ uchar1
operator>(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator>(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ uchar2
operator>(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ uchar1
operator>(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ uchar4
operator>(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ uchar1
operator>(
    const short1& a,
    short s
    );

__device__ __forceinline__ uchar4
operator>(
    const short4& a,
    short s
    );

__device__ __forceinline__ uchar3
operator>(
    const short3& a,
    short s
    );

__device__ __forceinline__ uchar3
operator>(
    short s,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator>(
    short s,
    const short4& b
    );

__device__ __forceinline__ uchar2
operator>(
    short s,
    const short2& b
    );

__device__ __forceinline__ uchar1
operator>(
    short s,
    const short1& b
    );

__device__ __forceinline__ uchar2
operator>(
    const short2& a,
    short s
    );

__device__ __forceinline__ uchar4
operator>(
    const int4& a,
    int s
    );

__device__ __forceinline__ uchar1
operator>(
    int s,
    const int1& b
    );

__device__ __forceinline__ uchar1
operator>(
    const int1& a,
    int s
    );

__device__ __forceinline__ uchar3
operator>(
    const int3& a,
    int s
    );

__device__ __forceinline__ uchar4
operator>(
    int s,
    const int4& b
    );

__device__ __forceinline__ uchar2
operator>(
    const int2& a,
    int s
    );

__device__ __forceinline__ uchar2
operator>(
    int s,
    const int2& b
    );

__device__ __forceinline__ uchar3
operator>(
    int s,
    const int3& b
    );

__device__ __forceinline__ uchar3
operator>(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uchar4
operator>(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uchar4
operator>(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uchar1
operator>(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uchar1
operator>(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uchar3
operator>(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uchar2
operator>(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uchar2
operator>(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uchar4
operator>(
    float s,
    const float4& b
    );

__device__ __forceinline__ uchar3
operator>(
    const float3& a,
    float s
    );

__device__ __forceinline__ uchar2
operator>(
    const float2& a,
    float s
    );

__device__ __forceinline__ uchar1
operator>(
    const float1& a,
    float s
    );

__device__ __forceinline__ uchar2
operator>(
    float s,
    const float2& b
    );

__device__ __forceinline__ uchar3
operator>(
    float s,
    const float3& b
    );

__device__ __forceinline__ uchar1
operator>(
    float s,
    const float1& b
    );

__device__ __forceinline__ uchar4
operator>(
    const float4& a,
    float s
    );

__device__ __forceinline__ uchar4
operator>(
    double s,
    const double4& b
    );

__device__ __forceinline__ uchar2
operator>(
    const double2& a,
    double s
    );

__device__ __forceinline__ uchar3
operator>(
    double s,
    const double3& b
    );

__device__ __forceinline__ uchar3
operator>(
    const double3& a,
    double s
    );

__device__ __forceinline__ uchar4
operator>(
    const double4& a,
    double s
    );

__device__ __forceinline__ uchar2
operator>(
    double s,
    const double2& b
    );

__device__ __forceinline__ uchar1
operator>(
    const double1& a,
    double s
    );

__device__ __forceinline__ uchar1
operator>(
    double s,
    const double1& b
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<greater_equal<T>>>>
operator>=(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<greater_equal<T>>>>
operator>=(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, greater_equal<T>>>
operator>=(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, greater_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>=(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, greater_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>=(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, greater_equal<T>>>
operator>=(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, greater_equal<T>>>
operator>=(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, greater_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>=(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, greater_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>=(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, greater_equal<T>>>
operator>=(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, greater_equal<T>>>
operator>=(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, greater_equal<T>>>
operator>=(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, greater_equal<T>>>
operator>=(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<greater_equal<typename Body::value_type>>>>
operator>=(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<greater_equal<typename Body::value_type>>>>
operator>=(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, greater_equal<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator>=(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<greater_equal<T>>>>
operator>=(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, greater_equal<T>>>
operator>=(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<greater_equal<T>>>>
operator>=(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<greater_equal<T>>>>
operator>=(
    const Texture<T>& src,
    T val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, greater_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>=(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, greater_equal<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>=(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<greater_equal<T>>>>
operator>=(
    T val,
    const Texture<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, greater_equal<T>>>
operator>=(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

__device__ __forceinline__ uchar2
operator>=(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar4
operator>=(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar3
operator>=(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ uchar4
operator>=(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ uchar3
operator>=(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ uchar4
operator>=(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ uchar3
operator>=(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ uchar3
operator>=(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator>=(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ uchar4
operator>=(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ uchar3
operator>=(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uchar4
operator>=(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uchar3
operator>=(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ uchar4
operator>=(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ uchar3
operator>=(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ uchar4
operator>=(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ uchar3
operator>=(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ uchar4
operator>=(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator>=(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator>=(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar1
operator>=(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator>=(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator>=(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator>=(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator>=(
    char s,
    const char4& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const char1& a,
    char s
    );

__device__ __forceinline__ uchar3
operator>=(
    const char3& a,
    char s
    );

__device__ __forceinline__ uchar3
operator>=(
    char s,
    const char3& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const char2& a,
    char s
    );

__device__ __forceinline__ uchar4
operator>=(
    const char4& a,
    char s
    );

__device__ __forceinline__ uchar1
operator>=(
    char s,
    const char1& b
    );

__device__ __forceinline__ uchar2
operator>=(
    char s,
    const char2& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ uchar2
operator>=(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ uchar3
operator>=(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ uchar4
operator>=(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator>=(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ uchar4
operator>=(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ uchar1
operator>=(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ uchar2
operator>=(
    short s,
    const short2& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const short1& a,
    short s
    );

__device__ __forceinline__ uchar3
operator>=(
    const short3& a,
    short s
    );

__device__ __forceinline__ uchar3
operator>=(
    short s,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator>=(
    const short4& a,
    short s
    );

__device__ __forceinline__ uchar4
operator>=(
    short s,
    const short4& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const short2& a,
    short s
    );

__device__ __forceinline__ uchar1
operator>=(
    short s,
    const short1& b
    );

__device__ __forceinline__ uchar4
operator>=(
    int s,
    const int4& b
    );

__device__ __forceinline__ uchar3
operator>=(
    int s,
    const int3& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const int1& a,
    int s
    );

__device__ __forceinline__ uchar3
operator>=(
    const int3& a,
    int s
    );

__device__ __forceinline__ uchar2
operator>=(
    const int2& a,
    int s
    );

__device__ __forceinline__ uchar4
operator>=(
    const int4& a,
    int s
    );

__device__ __forceinline__ uchar2
operator>=(
    int s,
    const int2& b
    );

__device__ __forceinline__ uchar1
operator>=(
    int s,
    const int1& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uchar1
operator>=(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uchar3
operator>=(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uchar3
operator>=(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uchar4
operator>=(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uchar1
operator>=(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uchar4
operator>=(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uchar2
operator>=(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uchar2
operator>=(
    float s,
    const float2& b
    );

__device__ __forceinline__ uchar3
operator>=(
    float s,
    const float3& b
    );

__device__ __forceinline__ uchar4
operator>=(
    float s,
    const float4& b
    );

__device__ __forceinline__ uchar2
operator>=(
    const float2& a,
    float s
    );

__device__ __forceinline__ uchar1
operator>=(
    const float1& a,
    float s
    );

__device__ __forceinline__ uchar3
operator>=(
    const float3& a,
    float s
    );

__device__ __forceinline__ uchar4
operator>=(
    const float4& a,
    float s
    );

__device__ __forceinline__ uchar1
operator>=(
    float s,
    const float1& b
    );

__device__ __forceinline__ uchar2
operator>=(
    double s,
    const double2& b
    );

__device__ __forceinline__ uchar4
operator>=(
    double s,
    const double4& b
    );

__device__ __forceinline__ uchar3
operator>=(
    const double3& a,
    double s
    );

__device__ __forceinline__ uchar3
operator>=(
    double s,
    const double3& b
    );

__device__ __forceinline__ uchar1
operator>=(
    const double1& a,
    double s
    );

__device__ __forceinline__ uchar4
operator>=(
    const double4& a,
    double s
    );

__device__ __forceinline__ uchar2
operator>=(
    const double2& a,
    double s
    );

__device__ __forceinline__ uchar1
operator>=(
    double s,
    const double1& b
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<bit_rshift<T>>>>
operator>>(
    T val,
    const GlobPtrSz<T>& src
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, bit_rshift<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator>>(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_rshift<T>>>
operator>>(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_rshift<T>>>
operator>>(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_rshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>>(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_rshift<T>>>
operator>>(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<bit_rshift<T>>>>
operator>>(
    T val,
    const Texture<T>& src
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<bit_rshift<T>>>>
operator>>(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_rshift<T>>>
operator>>(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_rshift<T>>>
operator>>(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_rshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>>(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_rshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>>(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<bit_rshift<T>>>>
operator>>(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_rshift<T>>>
operator>>(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_rshift<T>>>
operator>>(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_rshift<T>>>
operator>>(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_rshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>>(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_rshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>>(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<bit_rshift<T>>>>
operator>>(
    const GlobPtrSz<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_rshift<T>>>
operator>>(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<bit_rshift<T>>>>
operator>>(
    const Texture<T>& src,
    T val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_rshift<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator>>(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<bit_rshift<typename Body::value_type>>>>
operator>>(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<bit_rshift<typename Body::value_type>>>>
operator>>(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_xor<T>>>
operator^(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<bit_xor<typename Body::value_type>>>>
operator^(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_xor<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator^(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_xor<T>>>
operator^(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<bit_xor<T>>>>
operator^(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_xor<T>>>
operator^(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_xor<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator^(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, bit_xor<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator^(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_xor<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator^(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<bit_xor<T>>>>
operator^(
    const GpuMat_<T>& src,
    T val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_xor<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator^(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<bit_xor<T>>>>
operator^(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<bit_xor<T>>>>
operator^(
    const GlobPtrSz<T>& src,
    T val
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<bit_xor<typename Body::value_type>>>>
operator^(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_xor<T>>>
operator^(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_xor<T>>>
operator^(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_xor<T>>>
operator^(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_xor<T>>>
operator^(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_xor<T>>>
operator^(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<bit_xor<T>>>>
operator^(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_xor<T>>>
operator^(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_xor<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator^(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_xor<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator^(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<bit_xor<T>>>>
operator^(
    T val,
    const Texture<T>& src
    );

__device__ __forceinline__ uchar1
operator^(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator^(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator^(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator^(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ char1
operator^(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ char2
operator^(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ char4
operator^(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ char3
operator^(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ ushort1
operator^(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ ushort4
operator^(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ ushort2
operator^(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ ushort3
operator^(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ short1
operator^(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ short2
operator^(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ short4
operator^(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ short3
operator^(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ int1
operator^(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ int4
operator^(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ int2
operator^(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ int3
operator^(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uint1
operator^(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uint3
operator^(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uint2
operator^(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uint4
operator^(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uchar3
operator^(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar3
operator^(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator^(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator^(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar2
operator^(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar2
operator^(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar1
operator^(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator^(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ char3
operator^(
    const char3& a,
    char s
    );

__device__ __forceinline__ char1
operator^(
    const char1& a,
    char s
    );

__device__ __forceinline__ char1
operator^(
    char s,
    const char1& b
    );

__device__ __forceinline__ char2
operator^(
    char s,
    const char2& b
    );

__device__ __forceinline__ char4
operator^(
    char s,
    const char4& b
    );

__device__ __forceinline__ char3
operator^(
    char s,
    const char3& b
    );

__device__ __forceinline__ char2
operator^(
    const char2& a,
    char s
    );

__device__ __forceinline__ char4
operator^(
    const char4& a,
    char s
    );

__device__ __forceinline__ ushort1
operator^(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ ushort3
operator^(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ ushort4
operator^(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ ushort4
operator^(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ ushort2
operator^(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ ushort3
operator^(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ ushort2
operator^(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ ushort1
operator^(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ short2
operator^(
    const short2& a,
    short s
    );

__device__ __forceinline__ short2
operator^(
    short s,
    const short2& b
    );

__device__ __forceinline__ short1
operator^(
    short s,
    const short1& b
    );

__device__ __forceinline__ short3
operator^(
    short s,
    const short3& b
    );

__device__ __forceinline__ short3
operator^(
    const short3& a,
    short s
    );

__device__ __forceinline__ short4
operator^(
    const short4& a,
    short s
    );

__device__ __forceinline__ short4
operator^(
    short s,
    const short4& b
    );

__device__ __forceinline__ short1
operator^(
    const short1& a,
    short s
    );

__device__ __forceinline__ int4
operator^(
    int s,
    const int4& b
    );

__device__ __forceinline__ int1
operator^(
    int s,
    const int1& b
    );

__device__ __forceinline__ int2
operator^(
    int s,
    const int2& b
    );

__device__ __forceinline__ int3
operator^(
    const int3& a,
    int s
    );

__device__ __forceinline__ int3
operator^(
    int s,
    const int3& b
    );

__device__ __forceinline__ int2
operator^(
    const int2& a,
    int s
    );

__device__ __forceinline__ int1
operator^(
    const int1& a,
    int s
    );

__device__ __forceinline__ int4
operator^(
    const int4& a,
    int s
    );

__device__ __forceinline__ uint4
operator^(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uint1
operator^(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uint2
operator^(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uint2
operator^(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uint3
operator^(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uint1
operator^(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uint3
operator^(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uint4
operator^(
    uint s,
    const uint4& b
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<bit_or<T>>>>
operator|(
    const GlobPtrSz<T>& src,
    T val
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<bit_or<typename Body::value_type>>>>
operator|(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_or<T>>>
operator|(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<bit_or<T>>>>
operator|(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_or<T>>>
operator|(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, bit_or<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator|(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_or<T>>>
operator|(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator|(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator|(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator|(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_or<T>>>
operator|(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<bit_or<typename Body::value_type>>>>
operator|(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<bit_or<T>>>>
operator|(
    const GpuMat_<T>& src,
    T val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator|(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator|(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_or<T>>>
operator|(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<bit_or<T>>>>
operator|(
    T val,
    const GlobPtrSz<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_or<T>>>
operator|(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<bit_or<T>>>>
operator|(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, bit_or<T>>>
operator|(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, bit_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator|(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<bit_or<T>>>>
operator|(
    T val,
    const Texture<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, bit_or<T>>>
operator|(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_or<T>>>
operator|(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

__device__ __forceinline__ uchar1
operator|(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar3
operator|(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar4
operator|(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ uchar2
operator|(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ char1
operator|(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ char2
operator|(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ char4
operator|(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ char3
operator|(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ ushort3
operator|(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ ushort2
operator|(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ ushort4
operator|(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ ushort1
operator|(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ short1
operator|(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ short2
operator|(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ short4
operator|(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ short3
operator|(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ int1
operator|(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ int4
operator|(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ int2
operator|(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ int3
operator|(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uint1
operator|(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uint4
operator|(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uint3
operator|(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uint2
operator|(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uchar1
operator|(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator|(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar2
operator|(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar2
operator|(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar4
operator|(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar1
operator|(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar4
operator|(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar3
operator|(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ char3
operator|(
    const char3& a,
    char s
    );

__device__ __forceinline__ char4
operator|(
    const char4& a,
    char s
    );

__device__ __forceinline__ char3
operator|(
    char s,
    const char3& b
    );

__device__ __forceinline__ char2
operator|(
    char s,
    const char2& b
    );

__device__ __forceinline__ char4
operator|(
    char s,
    const char4& b
    );

__device__ __forceinline__ char1
operator|(
    const char1& a,
    char s
    );

__device__ __forceinline__ char2
operator|(
    const char2& a,
    char s
    );

__device__ __forceinline__ char1
operator|(
    char s,
    const char1& b
    );

__device__ __forceinline__ ushort3
operator|(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ ushort4
operator|(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ ushort4
operator|(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ ushort1
operator|(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ ushort3
operator|(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ ushort2
operator|(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ ushort2
operator|(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ ushort1
operator|(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ short4
operator|(
    short s,
    const short4& b
    );

__device__ __forceinline__ short2
operator|(
    const short2& a,
    short s
    );

__device__ __forceinline__ short3
operator|(
    short s,
    const short3& b
    );

__device__ __forceinline__ short4
operator|(
    const short4& a,
    short s
    );

__device__ __forceinline__ short2
operator|(
    short s,
    const short2& b
    );

__device__ __forceinline__ short1
operator|(
    short s,
    const short1& b
    );

__device__ __forceinline__ short3
operator|(
    const short3& a,
    short s
    );

__device__ __forceinline__ short1
operator|(
    const short1& a,
    short s
    );

__device__ __forceinline__ int2
operator|(
    const int2& a,
    int s
    );

__device__ __forceinline__ int2
operator|(
    int s,
    const int2& b
    );

__device__ __forceinline__ int3
operator|(
    const int3& a,
    int s
    );

__device__ __forceinline__ int1
operator|(
    const int1& a,
    int s
    );

__device__ __forceinline__ int4
operator|(
    const int4& a,
    int s
    );

__device__ __forceinline__ int3
operator|(
    int s,
    const int3& b
    );

__device__ __forceinline__ int1
operator|(
    int s,
    const int1& b
    );

__device__ __forceinline__ int4
operator|(
    int s,
    const int4& b
    );

__device__ __forceinline__ uint1
operator|(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uint4
operator|(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uint4
operator|(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uint3
operator|(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uint1
operator|(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uint2
operator|(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uint2
operator|(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uint3
operator|(
    const uint3& a,
    uint s
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, logical_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator||(
    const Expr<Body>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, logical_or<T>>>
operator||(
    const GlobPtrSz<T>& src1,
    const Texture<T>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder2nd<logical_or<typename Body::value_type>>>>
operator||(
    const Expr<Body>& a,
    typename Body::value_type val
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, logical_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator||(
    const Expr<Body>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, logical_or<T>>>
operator||(
    const GlobPtrSz<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, logical_or<T>>>
operator||(
    const GpuMat_<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, logical_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator||(
    const GlobPtrSz<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, logical_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator||(
    const Texture<T>& src1,
    const Expr<Body>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, logical_or<T>>>
operator||(
    const Texture<T>& src1,
    const GpuMat_<T>& src2
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, Binder1st<logical_or<typename Body::value_type>>>>
operator||(
    typename Body::value_type val,
    const Expr<Body>& a
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder2nd<logical_or<T>>>>
operator||(
    const Texture<T>& src,
    T val
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder2nd<logical_or<T>>>>
operator||(
    const GpuMat_<T>& src,
    T val
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, logical_or<T>>>
operator||(
    const GpuMat_<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, Binder1st<logical_or<T>>>>
operator||(
    T val,
    const Texture<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, logical_or<T>>>
operator||(
    const Texture<T>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder1st<logical_or<T>>>>
operator||(
    T val,
    const GlobPtrSz<T>& src
    );

template <
    class Body1,
    class Body2
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body1>::ptr_type, typename PtrTraits<Body2>::ptr_type, logical_or<typename LargerType<typename PtrTraits<Body1>::value_type, typename PtrTraits<Body2>::value_type>::type>>>
operator||(
    const Expr<Body1>& a,
    const Expr<Body2>& b
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Body>::ptr_type, logical_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator||(
    const GpuMat_<T>& src1,
    const Expr<Body>& src2
    );

template <
    typename T,
    class Body
    >
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, typename PtrTraits<GlobPtrSz<T>>::ptr_type, logical_or<typename LargerType<T, typename PtrTraits<Body>::value_type>::type>>>
operator||(
    const Expr<Body>& src1,
    const GlobPtrSz<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, Binder1st<logical_or<T>>>>
operator||(
    T val,
    const GpuMat_<T>& src
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, typename PtrTraits<GpuMat_<T>>::ptr_type, logical_or<T>>>
operator||(
    const GlobPtrSz<T>& src1,
    const GpuMat_<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, logical_or<T>>>
operator||(
    const Texture<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<BinaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, typename PtrTraits<Texture<T>>::ptr_type, logical_or<T>>>
operator||(
    const GpuMat_<T>& src1,
    const Texture<T>& src2
    );

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, Binder2nd<logical_or<T>>>>
operator||(
    const GlobPtrSz<T>& src,
    T val
    );

__device__ __forceinline__ uchar3
operator||(
    const uchar3& a,
    const uchar3& b
    );

__device__ __forceinline__ uchar1
operator||(
    const uchar1& a,
    const uchar1& b
    );

__device__ __forceinline__ uchar4
operator||(
    const uchar4& a,
    const uchar4& b
    );

__device__ __forceinline__ uchar2
operator||(
    const uchar2& a,
    const uchar2& b
    );

__device__ __forceinline__ uchar2
operator||(
    const char2& a,
    const char2& b
    );

__device__ __forceinline__ uchar1
operator||(
    const char1& a,
    const char1& b
    );

__device__ __forceinline__ uchar3
operator||(
    const char3& a,
    const char3& b
    );

__device__ __forceinline__ uchar4
operator||(
    const char4& a,
    const char4& b
    );

__device__ __forceinline__ uchar4
operator||(
    const ushort4& a,
    const ushort4& b
    );

__device__ __forceinline__ uchar2
operator||(
    const ushort2& a,
    const ushort2& b
    );

__device__ __forceinline__ uchar1
operator||(
    const ushort1& a,
    const ushort1& b
    );

__device__ __forceinline__ uchar3
operator||(
    const ushort3& a,
    const ushort3& b
    );

__device__ __forceinline__ uchar1
operator||(
    const short1& a,
    const short1& b
    );

__device__ __forceinline__ uchar4
operator||(
    const short4& a,
    const short4& b
    );

__device__ __forceinline__ uchar2
operator||(
    const short2& a,
    const short2& b
    );

__device__ __forceinline__ uchar3
operator||(
    const short3& a,
    const short3& b
    );

__device__ __forceinline__ uchar4
operator||(
    const int4& a,
    const int4& b
    );

__device__ __forceinline__ uchar1
operator||(
    const int1& a,
    const int1& b
    );

__device__ __forceinline__ uchar2
operator||(
    const int2& a,
    const int2& b
    );

__device__ __forceinline__ uchar3
operator||(
    const int3& a,
    const int3& b
    );

__device__ __forceinline__ uchar1
operator||(
    const uint1& a,
    const uint1& b
    );

__device__ __forceinline__ uchar3
operator||(
    const uint3& a,
    const uint3& b
    );

__device__ __forceinline__ uchar4
operator||(
    const uint4& a,
    const uint4& b
    );

__device__ __forceinline__ uchar2
operator||(
    const uint2& a,
    const uint2& b
    );

__device__ __forceinline__ uchar4
operator||(
    const float4& a,
    const float4& b
    );

__device__ __forceinline__ uchar2
operator||(
    const float2& a,
    const float2& b
    );

__device__ __forceinline__ uchar3
operator||(
    const float3& a,
    const float3& b
    );

__device__ __forceinline__ uchar1
operator||(
    const float1& a,
    const float1& b
    );

__device__ __forceinline__ uchar1
operator||(
    const double1& a,
    const double1& b
    );

__device__ __forceinline__ uchar2
operator||(
    const double2& a,
    const double2& b
    );

__device__ __forceinline__ uchar4
operator||(
    const double4& a,
    const double4& b
    );

__device__ __forceinline__ uchar3
operator||(
    const double3& a,
    const double3& b
    );

__device__ __forceinline__ uchar1
operator||(
    const uchar1& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator||(
    const uchar4& a,
    uchar s
    );

__device__ __forceinline__ uchar4
operator||(
    uchar s,
    const uchar4& b
    );

__device__ __forceinline__ uchar2
operator||(
    uchar s,
    const uchar2& b
    );

__device__ __forceinline__ uchar3
operator||(
    const uchar3& a,
    uchar s
    );

__device__ __forceinline__ uchar1
operator||(
    uchar s,
    const uchar1& b
    );

__device__ __forceinline__ uchar3
operator||(
    uchar s,
    const uchar3& b
    );

__device__ __forceinline__ uchar2
operator||(
    const uchar2& a,
    uchar s
    );

__device__ __forceinline__ uchar1
operator||(
    char s,
    const char1& b
    );

__device__ __forceinline__ uchar1
operator||(
    const char1& a,
    char s
    );

__device__ __forceinline__ uchar4
operator||(
    char s,
    const char4& b
    );

__device__ __forceinline__ uchar3
operator||(
    char s,
    const char3& b
    );

__device__ __forceinline__ uchar3
operator||(
    const char3& a,
    char s
    );

__device__ __forceinline__ uchar4
operator||(
    const char4& a,
    char s
    );

__device__ __forceinline__ uchar2
operator||(
    const char2& a,
    char s
    );

__device__ __forceinline__ uchar2
operator||(
    char s,
    const char2& b
    );

__device__ __forceinline__ uchar2
operator||(
    ushort s,
    const ushort2& b
    );

__device__ __forceinline__ uchar2
operator||(
    const ushort2& a,
    ushort s
    );

__device__ __forceinline__ uchar4
operator||(
    ushort s,
    const ushort4& b
    );

__device__ __forceinline__ uchar3
operator||(
    const ushort3& a,
    ushort s
    );

__device__ __forceinline__ uchar3
operator||(
    ushort s,
    const ushort3& b
    );

__device__ __forceinline__ uchar1
operator||(
    const ushort1& a,
    ushort s
    );

__device__ __forceinline__ uchar1
operator||(
    ushort s,
    const ushort1& b
    );

__device__ __forceinline__ uchar4
operator||(
    const ushort4& a,
    ushort s
    );

__device__ __forceinline__ uchar4
operator||(
    const short4& a,
    short s
    );

__device__ __forceinline__ uchar4
operator||(
    short s,
    const short4& b
    );

__device__ __forceinline__ uchar3
operator||(
    const short3& a,
    short s
    );

__device__ __forceinline__ uchar2
operator||(
    const short2& a,
    short s
    );

__device__ __forceinline__ uchar1
operator||(
    const short1& a,
    short s
    );

__device__ __forceinline__ uchar1
operator||(
    short s,
    const short1& b
    );

__device__ __forceinline__ uchar2
operator||(
    short s,
    const short2& b
    );

__device__ __forceinline__ uchar3
operator||(
    short s,
    const short3& b
    );

__device__ __forceinline__ uchar3
operator||(
    const int3& a,
    int s
    );

__device__ __forceinline__ uchar1
operator||(
    const int1& a,
    int s
    );

__device__ __forceinline__ uchar4
operator||(
    int s,
    const int4& b
    );

__device__ __forceinline__ uchar3
operator||(
    int s,
    const int3& b
    );

__device__ __forceinline__ uchar2
operator||(
    int s,
    const int2& b
    );

__device__ __forceinline__ uchar1
operator||(
    int s,
    const int1& b
    );

__device__ __forceinline__ uchar2
operator||(
    const int2& a,
    int s
    );

__device__ __forceinline__ uchar4
operator||(
    const int4& a,
    int s
    );

__device__ __forceinline__ uchar4
operator||(
    uint s,
    const uint4& b
    );

__device__ __forceinline__ uchar1
operator||(
    const uint1& a,
    uint s
    );

__device__ __forceinline__ uchar3
operator||(
    uint s,
    const uint3& b
    );

__device__ __forceinline__ uchar3
operator||(
    const uint3& a,
    uint s
    );

__device__ __forceinline__ uchar4
operator||(
    const uint4& a,
    uint s
    );

__device__ __forceinline__ uchar2
operator||(
    const uint2& a,
    uint s
    );

__device__ __forceinline__ uchar2
operator||(
    uint s,
    const uint2& b
    );

__device__ __forceinline__ uchar1
operator||(
    uint s,
    const uint1& b
    );

__device__ __forceinline__ uchar4
operator||(
    float s,
    const float4& b
    );

__device__ __forceinline__ uchar1
operator||(
    float s,
    const float1& b
    );

__device__ __forceinline__ uchar4
operator||(
    const float4& a,
    float s
    );

__device__ __forceinline__ uchar2
operator||(
    const float2& a,
    float s
    );

__device__ __forceinline__ uchar3
operator||(
    float s,
    const float3& b
    );

__device__ __forceinline__ uchar3
operator||(
    const float3& a,
    float s
    );

__device__ __forceinline__ uchar1
operator||(
    const float1& a,
    float s
    );

__device__ __forceinline__ uchar2
operator||(
    float s,
    const float2& b
    );

__device__ __forceinline__ uchar3
operator||(
    const double3& a,
    double s
    );

__device__ __forceinline__ uchar2
operator||(
    double s,
    const double2& b
    );

__device__ __forceinline__ uchar3
operator||(
    double s,
    const double3& b
    );

__device__ __forceinline__ uchar1
operator||(
    const double1& a,
    double s
    );

__device__ __forceinline__ uchar4
operator||(
    const double4& a,
    double s
    );

__device__ __forceinline__ uchar1
operator||(
    double s,
    const double1& b
    );

__device__ __forceinline__ uchar4
operator||(
    double s,
    const double4& b
    );

__device__ __forceinline__ uchar2
operator||(
    const double2& a,
    double s
    );

template <class Body>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Body>::ptr_type, bit_not<typename Body::value_type>>>
operator~(const Expr<Body>& src);

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GlobPtrSz<T>>::ptr_type, bit_not<T>>>
operator~(const GlobPtrSz<T>& src);

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<Texture<T>>::ptr_type, bit_not<T>>>
operator~(const Texture<T>& src);

template <typename T>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<GpuMat_<T>>::ptr_type, bit_not<T>>>
operator~(const GpuMat_<T>& src);

__device__ __forceinline__ uchar1
operator~(const uchar1& a);

__device__ __forceinline__ uchar4
operator~(const uchar4& a);

__device__ __forceinline__ uchar2
operator~(const uchar2& a);

__device__ __forceinline__ uchar3
operator~(const uchar3& a);

__device__ __forceinline__ char3
operator~(const char3& a);

__device__ __forceinline__ char2
operator~(const char2& a);

__device__ __forceinline__ char4
operator~(const char4& a);

__device__ __forceinline__ char1
operator~(const char1& a);

__device__ __forceinline__ ushort2
operator~(const ushort2& a);

__device__ __forceinline__ ushort1
operator~(const ushort1& a);

__device__ __forceinline__ ushort3
operator~(const ushort3& a);

__device__ __forceinline__ ushort4
operator~(const ushort4& a);

__device__ __forceinline__ short4
operator~(const short4& a);

__device__ __forceinline__ short2
operator~(const short2& a);

__device__ __forceinline__ short3
operator~(const short3& a);

__device__ __forceinline__ short1
operator~(const short1& a);

__device__ __forceinline__ int4
operator~(const int4& a);

__device__ __forceinline__ int2
operator~(const int2& a);

__device__ __forceinline__ int1
operator~(const int1& a);

__device__ __forceinline__ int3
operator~(const int3& a);

__device__ __forceinline__ uint3
operator~(const uint3& a);

__device__ __forceinline__ uint4
operator~(const uint4& a);

__device__ __forceinline__ uint2
operator~(const uint2& a);

__device__ __forceinline__ uint1
operator~(const uint1& a);

static
__host__ PerspectiveMapPtrSz
perspectiveMap(
    Size dstSize,
    const GpuMat_<float>& warpMat
    );

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Binder2nd<pow_func<typename PtrTraits<SrcPtr>::value_type>>>>
pow_(
    const SrcPtr& src,
    float power
    );

template <class SrcPtr>
__host__ Expr<PyrDownBody<SrcPtr>>
pyrDown_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<PyrUpBody<SrcPtr>>
pyrUp_(const SrcPtr& src);

template <
    class Reductor,
    class SrcPtr
    >
__host__ Expr<ReduceToColumnBody<Reductor, SrcPtr>>
reduceToColumn_(const SrcPtr& src);

template <
    class Reductor,
    class SrcPtr
    >
__host__ Expr<ReduceToRowBody<Reductor, SrcPtr>>
reduceToRow_(const SrcPtr& src);

template <
    class SrcPtr,
    class MapPtr
    >
__host__ Expr<RemapPtr1Sz<typename PtrTraits<SrcPtr>::ptr_type, typename PtrTraits<MapPtr>::ptr_type>>
remap_(
    const SrcPtr& src,
    const MapPtr& map
    );

template <
    class SrcPtr,
    class MapXPtr,
    class MapYPtr
    >
__host__ Expr<RemapPtr2Sz<typename PtrTraits<SrcPtr>::ptr_type, typename PtrTraits<MapXPtr>::ptr_type, typename PtrTraits<MapYPtr>::ptr_type>>
remap_(
    const SrcPtr& src,
    const MapXPtr& mapx,
    const MapYPtr& mapy
    );

template <
    class SrcPtr,
    class MapPtr
    >
__host__ RemapPtr1Sz<typename PtrTraits<SrcPtr>::ptr_type, typename PtrTraits<MapPtr>::ptr_type>
remapPtr(
    const SrcPtr& src,
    const MapPtr& map
    );

template <
    class SrcPtr,
    class MapXPtr,
    class MapYPtr
    >
__host__ RemapPtr2Sz<typename PtrTraits<SrcPtr>::ptr_type, typename PtrTraits<MapXPtr>::ptr_type, typename PtrTraits<MapYPtr>::ptr_type>
remapPtr(
    const SrcPtr& src,
    const MapXPtr& mapx,
    const MapYPtr& mapy
    );

template <
    int cn,
    typename T
    >
__host__ GpuMat_<typename MakeVec<typename VecTraits<T>::elem_type, cn>::type>
reshape_(
    const GpuMat_<T>& mat,
    int rows = 0
    );

template <class SrcPtr>
__host__ Expr<ResizePtrSz<typename PtrTraits<SrcPtr>::ptr_type>>
resize_(
    const SrcPtr& src,
    float fx,
    float fy
    );

template <class SrcPtr>
__host__ ResizePtrSz<typename PtrTraits<SrcPtr>::ptr_type>
resizePtr(
    const SrcPtr& src,
    float fx,
    float fy
    );

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_GRAY_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_GRAY_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_HLS4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_HLS4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_HLS4_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_HLS4_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_HLS_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_HLS_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_HLS_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_HLS_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_HSV4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_HSV4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_HSV4_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_HSV4_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_HSV_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_HSV_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_HSV_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_HSV_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_Lab4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_Lab4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_Lab_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_Lab_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_Luv4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_Luv4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_Luv_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_Luv_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_XYZ4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_XYZ4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_XYZ_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_XYZ_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_YCrCb4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_YCrCb4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_YCrCb_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_YCrCb_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_YUV4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_YUV4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGB_to_YUV_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGB_to_YUV_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_GRAY_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_GRAY_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_HLS4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_HLS4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_HLS4_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_HLS4_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_HLS_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_HLS_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_HLS_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_HLS_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_HSV4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_HSV4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_HSV4_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_HSV4_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_HSV_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_HSV_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_HSV_FULL_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_HSV_FULL_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_Lab4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_Lab4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_Lab_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_Lab_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_Luv4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_Luv4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_Luv_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_Luv_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_XYZ4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_XYZ4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_XYZ_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_XYZ_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_YCrCb4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_YCrCb4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_YCrCb_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_YCrCb_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_YUV4_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_YUV4_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, RGBA_to_YUV_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
RGBA_to_YUV_(const SrcPtr& src);

template <typename T>
__device__ __forceinline__ T
saturate_cast(uchar v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(schar v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(ushort v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(short v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(uint v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(int v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(float v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(double v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const uchar1& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const char1& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const ushort1& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const short1& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const uint1& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const int1& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const float1& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const double1& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const uchar2& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const char2& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const ushort2& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const short2& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const uint2& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const int2& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const float2& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const double2& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const uchar3& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const char3& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const ushort3& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const short3& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const uint3& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const int3& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const float3& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const double3& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const uchar4& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const char4& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const ushort4& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const short4& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const uint4& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const int4& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const float4& v);

template <typename T>
__device__ __forceinline__ T
saturate_cast(const double4& v);

__device__ __forceinline__ schar
saturate_cast< schar >(uchar v);

__device__ __forceinline__ schar
saturate_cast< schar >(short v);

__device__ __forceinline__ schar
saturate_cast< schar >(ushort v);

__device__ __forceinline__ schar
saturate_cast< schar >(int v);

__device__ __forceinline__ schar
saturate_cast< schar >(uint v);

__device__ __forceinline__ schar
saturate_cast< schar >(float v);

__device__ __forceinline__ schar
saturate_cast< schar >(double v);

__device__ __forceinline__ short
saturate_cast< short >(ushort v);

__device__ __forceinline__ short
saturate_cast< short >(int v);

__device__ __forceinline__ short
saturate_cast< short >(uint v);

__device__ __forceinline__ short
saturate_cast< short >(float v);

__device__ __forceinline__ short
saturate_cast< short >(double v);

__device__ __forceinline__ uchar
saturate_cast< uchar >(schar v);

__device__ __forceinline__ uchar
saturate_cast< uchar >(short v);

__device__ __forceinline__ uchar
saturate_cast< uchar >(ushort v);

__device__ __forceinline__ uchar
saturate_cast< uchar >(int v);

__device__ __forceinline__ uchar
saturate_cast< uchar >(uint v);

__device__ __forceinline__ uchar
saturate_cast< uchar >(float v);

__device__ __forceinline__ uchar
saturate_cast< uchar >(double v);

__device__ __forceinline__ uint
saturate_cast< uint >(schar v);

__device__ __forceinline__ uint
saturate_cast< uint >(short v);

__device__ __forceinline__ uint
saturate_cast< uint >(int v);

__device__ __forceinline__ uint
saturate_cast< uint >(float v);

__device__ __forceinline__ uint
saturate_cast< uint >(double v);

__device__ __forceinline__ ushort
saturate_cast< ushort >(schar v);

__device__ __forceinline__ ushort
saturate_cast< ushort >(short v);

__device__ __forceinline__ ushort
saturate_cast< ushort >(int v);

__device__ __forceinline__ ushort
saturate_cast< ushort >(uint v);

__device__ __forceinline__ ushort
saturate_cast< ushort >(float v);

__device__ __forceinline__ ushort
saturate_cast< ushort >(double v);

template <class SrcPtr>
__host__ Expr<ScharrXPtrSz<typename PtrTraits<SrcPtr>::ptr_type>>
scharrX_(const SrcPtr& src);

template <class SrcPtr>
__host__ ScharrXPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
scharrXPtr(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<ScharrYPtrSz<typename PtrTraits<SrcPtr>::ptr_type>>
scharrY_(const SrcPtr& src);

template <class SrcPtr>
__host__ ScharrYPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
scharrYPtr(const SrcPtr& src);

template <class Ptr2DSz>
__host__ PtrTraits<Ptr2DSz>::ptr_type
shrinkPtr(const Ptr2DSz& ptr);

__device__ __forceinline__ float2
sin(const uchar2& a);

__device__ __forceinline__ float3
sin(const uchar3& a);

__device__ __forceinline__ float4
sin(const uchar4& a);

__device__ __forceinline__ float1
sin(const uchar1& a);

__device__ __forceinline__ float1
sin(const char1& a);

__device__ __forceinline__ float3
sin(const char3& a);

__device__ __forceinline__ float2
sin(const char2& a);

__device__ __forceinline__ float4
sin(const char4& a);

__device__ __forceinline__ float4
sin(const ushort4& a);

__device__ __forceinline__ float1
sin(const ushort1& a);

__device__ __forceinline__ float2
sin(const ushort2& a);

__device__ __forceinline__ float3
sin(const ushort3& a);

__device__ __forceinline__ float1
sin(const short1& a);

__device__ __forceinline__ float3
sin(const short3& a);

__device__ __forceinline__ float4
sin(const short4& a);

__device__ __forceinline__ float2
sin(const short2& a);

__device__ __forceinline__ float2
sin(const int2& a);

__device__ __forceinline__ float3
sin(const int3& a);

__device__ __forceinline__ float4
sin(const int4& a);

__device__ __forceinline__ float1
sin(const int1& a);

__device__ __forceinline__ float3
sin(const uint3& a);

__device__ __forceinline__ float2
sin(const uint2& a);

__device__ __forceinline__ float4
sin(const uint4& a);

__device__ __forceinline__ float1
sin(const uint1& a);

__device__ __forceinline__ float2
sin(const float2& a);

__device__ __forceinline__ float4
sin(const float4& a);

__device__ __forceinline__ float1
sin(const float1& a);

__device__ __forceinline__ float3
sin(const float3& a);

__device__ __forceinline__ double3
sin(const double3& a);

__device__ __forceinline__ double1
sin(const double1& a);

__device__ __forceinline__ double4
sin(const double4& a);

__device__ __forceinline__ double2
sin(const double2& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, sin_func<typename PtrTraits<SrcPtr>::value_type>>>
sin_(const SrcPtr& src);

template <class MaskPtr>
__host__ SingleMaskChannelsSz<typename PtrTraits<MaskPtr>::ptr_type>
singleMaskChannels(
    const MaskPtr& mask,
    int channels
    );

__device__ __forceinline__ float2
sinh(const uchar2& a);

__device__ __forceinline__ float3
sinh(const uchar3& a);

__device__ __forceinline__ float1
sinh(const uchar1& a);

__device__ __forceinline__ float4
sinh(const uchar4& a);

__device__ __forceinline__ float1
sinh(const char1& a);

__device__ __forceinline__ float4
sinh(const char4& a);

__device__ __forceinline__ float2
sinh(const char2& a);

__device__ __forceinline__ float3
sinh(const char3& a);

__device__ __forceinline__ float4
sinh(const ushort4& a);

__device__ __forceinline__ float3
sinh(const ushort3& a);

__device__ __forceinline__ float2
sinh(const ushort2& a);

__device__ __forceinline__ float1
sinh(const ushort1& a);

__device__ __forceinline__ float3
sinh(const short3& a);

__device__ __forceinline__ float1
sinh(const short1& a);

__device__ __forceinline__ float4
sinh(const short4& a);

__device__ __forceinline__ float2
sinh(const short2& a);

__device__ __forceinline__ float1
sinh(const int1& a);

__device__ __forceinline__ float2
sinh(const int2& a);

__device__ __forceinline__ float3
sinh(const int3& a);

__device__ __forceinline__ float4
sinh(const int4& a);

__device__ __forceinline__ float1
sinh(const uint1& a);

__device__ __forceinline__ float2
sinh(const uint2& a);

__device__ __forceinline__ float4
sinh(const uint4& a);

__device__ __forceinline__ float3
sinh(const uint3& a);

__device__ __forceinline__ float4
sinh(const float4& a);

__device__ __forceinline__ float1
sinh(const float1& a);

__device__ __forceinline__ float3
sinh(const float3& a);

__device__ __forceinline__ float2
sinh(const float2& a);

__device__ __forceinline__ double3
sinh(const double3& a);

__device__ __forceinline__ double1
sinh(const double1& a);

__device__ __forceinline__ double2
sinh(const double2& a);

__device__ __forceinline__ double4
sinh(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, sinh_func<typename PtrTraits<SrcPtr>::value_type>>>
sinh_(const SrcPtr& src);

template <typename T0>
__device__ __forceinline__ tuple<volatile T0*>
smem_tuple(T0* t0);

template <
    typename T0,
    typename T1
    >
__device__ __forceinline__ tuple<volatile T0*, volatile T1*>
smem_tuple(
    T0* t0,
    T1* t1
    );

template <
    typename T0,
    typename T1,
    typename T2
    >
__device__ __forceinline__ tuple<volatile T0*, volatile T1*, volatile T2*>
smem_tuple(
    T0* t0,
    T1* t1,
    T2* t2
    );

template <
    typename T0,
    typename T1,
    typename T2,
    typename T3
    >
__device__ __forceinline__ tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*>
smem_tuple(
    T0* t0,
    T1* t1,
    T2* t2,
    T3* t3
    );

template <
    typename T0,
    typename T1,
    typename T2,
    typename T3,
    typename T4
    >
__device__ __forceinline__ tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*>
smem_tuple(
    T0* t0,
    T1* t1,
    T2* t2,
    T3* t3,
    T4* t4
    );

template <
    typename T0,
    typename T1,
    typename T2,
    typename T3,
    typename T4,
    typename T5
    >
__device__ __forceinline__ tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*, volatile T5*>
smem_tuple(
    T0* t0,
    T1* t1,
    T2* t2,
    T3* t3,
    T4* t4,
    T5* t5
    );

template <
    typename T0,
    typename T1,
    typename T2,
    typename T3,
    typename T4,
    typename T5,
    typename T6
    >
__device__ __forceinline__ tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*, volatile T5*, volatile T6*>
smem_tuple(
    T0* t0,
    T1* t1,
    T2* t2,
    T3* t3,
    T4* t4,
    T5* t5,
    T6* t6
    );

template <
    typename T0,
    typename T1,
    typename T2,
    typename T3,
    typename T4,
    typename T5,
    typename T6,
    typename T7
    >
__device__ __forceinline__ tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*, volatile T5*, volatile T6*, volatile T7*>
smem_tuple(
    T0* t0,
    T1* t1,
    T2* t2,
    T3* t3,
    T4* t4,
    T5* t5,
    T6* t6,
    T7* t7
    );

template <
    typename T0,
    typename T1,
    typename T2,
    typename T3,
    typename T4,
    typename T5,
    typename T6,
    typename T7,
    typename T8
    >
__device__ __forceinline__ tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*, volatile T5*, volatile T6*, volatile T7*, volatile T8*>
smem_tuple(
    T0* t0,
    T1* t1,
    T2* t2,
    T3* t3,
    T4* t4,
    T5* t5,
    T6* t6,
    T7* t7,
    T8* t8
    );

template <
    typename T0,
    typename T1,
    typename T2,
    typename T3,
    typename T4,
    typename T5,
    typename T6,
    typename T7,
    typename T8,
    typename T9
    >
__device__ __forceinline__ tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*, volatile T5*, volatile T6*, volatile T7*, volatile T8*, volatile T9*>
smem_tuple(
    T0* t0,
    T1* t1,
    T2* t2,
    T3* t3,
    T4* t4,
    T5* t5,
    T6* t6,
    T7* t7,
    T8* t8,
    T9* t9
    );

template <class SrcPtr>
__host__ Expr<SobelXPtrSz<typename PtrTraits<SrcPtr>::ptr_type>>
sobelX_(const SrcPtr& src);

template <class SrcPtr>
__host__ SobelXPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
sobelXPtr(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<SobelYPtrSz<typename PtrTraits<SrcPtr>::ptr_type>>
sobelY_(const SrcPtr& src);

template <class SrcPtr>
__host__ SobelYPtrSz<typename PtrTraits<SrcPtr>::ptr_type>
sobelYPtr(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, sqr_func<typename PtrTraits<SrcPtr>::value_type>>>
sqr_(const SrcPtr& src);

__device__ __forceinline__ float4
sqrt(const uchar4& a);

__device__ __forceinline__ float3
sqrt(const uchar3& a);

__device__ __forceinline__ float2
sqrt(const uchar2& a);

__device__ __forceinline__ float1
sqrt(const uchar1& a);

__device__ __forceinline__ float4
sqrt(const char4& a);

__device__ __forceinline__ float2
sqrt(const char2& a);

__device__ __forceinline__ float1
sqrt(const char1& a);

__device__ __forceinline__ float3
sqrt(const char3& a);

__device__ __forceinline__ float2
sqrt(const ushort2& a);

__device__ __forceinline__ float3
sqrt(const ushort3& a);

__device__ __forceinline__ float4
sqrt(const ushort4& a);

__device__ __forceinline__ float1
sqrt(const ushort1& a);

__device__ __forceinline__ float1
sqrt(const short1& a);

__device__ __forceinline__ float3
sqrt(const short3& a);

__device__ __forceinline__ float4
sqrt(const short4& a);

__device__ __forceinline__ float2
sqrt(const short2& a);

__device__ __forceinline__ float1
sqrt(const int1& a);

__device__ __forceinline__ float4
sqrt(const int4& a);

__device__ __forceinline__ float2
sqrt(const int2& a);

__device__ __forceinline__ float3
sqrt(const int3& a);

__device__ __forceinline__ float3
sqrt(const uint3& a);

__device__ __forceinline__ float1
sqrt(const uint1& a);

__device__ __forceinline__ float4
sqrt(const uint4& a);

__device__ __forceinline__ float2
sqrt(const uint2& a);

__device__ __forceinline__ float3
sqrt(const float3& a);

__device__ __forceinline__ float1
sqrt(const float1& a);

__device__ __forceinline__ float2
sqrt(const float2& a);

__device__ __forceinline__ float4
sqrt(const float4& a);

__device__ __forceinline__ double4
sqrt(const double4& a);

__device__ __forceinline__ double2
sqrt(const double2& a);

__device__ __forceinline__ double1
sqrt(const double1& a);

__device__ __forceinline__ double3
sqrt(const double3& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, sqrt_func<typename PtrTraits<SrcPtr>::value_type>>>
sqrt_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<SumExprBody<SrcPtr>>
sum_(const SrcPtr& src);

__device__ __forceinline__ float4
tan(const uchar4& a);

__device__ __forceinline__ float3
tan(const uchar3& a);

__device__ __forceinline__ float2
tan(const uchar2& a);

__device__ __forceinline__ float1
tan(const uchar1& a);

__device__ __forceinline__ float3
tan(const char3& a);

__device__ __forceinline__ float1
tan(const char1& a);

__device__ __forceinline__ float4
tan(const char4& a);

__device__ __forceinline__ float2
tan(const char2& a);

__device__ __forceinline__ float4
tan(const ushort4& a);

__device__ __forceinline__ float3
tan(const ushort3& a);

__device__ __forceinline__ float2
tan(const ushort2& a);

__device__ __forceinline__ float1
tan(const ushort1& a);

__device__ __forceinline__ float4
tan(const short4& a);

__device__ __forceinline__ float3
tan(const short3& a);

__device__ __forceinline__ float1
tan(const short1& a);

__device__ __forceinline__ float2
tan(const short2& a);

__device__ __forceinline__ float1
tan(const int1& a);

__device__ __forceinline__ float4
tan(const int4& a);

__device__ __forceinline__ float2
tan(const int2& a);

__device__ __forceinline__ float3
tan(const int3& a);

__device__ __forceinline__ float4
tan(const uint4& a);

__device__ __forceinline__ float3
tan(const uint3& a);

__device__ __forceinline__ float1
tan(const uint1& a);

__device__ __forceinline__ float2
tan(const uint2& a);

__device__ __forceinline__ float3
tan(const float3& a);

__device__ __forceinline__ float4
tan(const float4& a);

__device__ __forceinline__ float1
tan(const float1& a);

__device__ __forceinline__ float2
tan(const float2& a);

__device__ __forceinline__ double3
tan(const double3& a);

__device__ __forceinline__ double4
tan(const double4& a);

__device__ __forceinline__ double2
tan(const double2& a);

__device__ __forceinline__ double1
tan(const double1& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, tan_func<typename PtrTraits<SrcPtr>::value_type>>>
tan_(const SrcPtr& src);

__device__ __forceinline__ float1
tanh(const uchar1& a);

__device__ __forceinline__ float3
tanh(const uchar3& a);

__device__ __forceinline__ float2
tanh(const uchar2& a);

__device__ __forceinline__ float4
tanh(const uchar4& a);

__device__ __forceinline__ float2
tanh(const char2& a);

__device__ __forceinline__ float1
tanh(const char1& a);

__device__ __forceinline__ float4
tanh(const char4& a);

__device__ __forceinline__ float3
tanh(const char3& a);

__device__ __forceinline__ float1
tanh(const ushort1& a);

__device__ __forceinline__ float4
tanh(const ushort4& a);

__device__ __forceinline__ float2
tanh(const ushort2& a);

__device__ __forceinline__ float3
tanh(const ushort3& a);

__device__ __forceinline__ float4
tanh(const short4& a);

__device__ __forceinline__ float1
tanh(const short1& a);

__device__ __forceinline__ float3
tanh(const short3& a);

__device__ __forceinline__ float2
tanh(const short2& a);

__device__ __forceinline__ float3
tanh(const int3& a);

__device__ __forceinline__ float2
tanh(const int2& a);

__device__ __forceinline__ float1
tanh(const int1& a);

__device__ __forceinline__ float4
tanh(const int4& a);

__device__ __forceinline__ float1
tanh(const uint1& a);

__device__ __forceinline__ float3
tanh(const uint3& a);

__device__ __forceinline__ float2
tanh(const uint2& a);

__device__ __forceinline__ float4
tanh(const uint4& a);

__device__ __forceinline__ float2
tanh(const float2& a);

__device__ __forceinline__ float1
tanh(const float1& a);

__device__ __forceinline__ float3
tanh(const float3& a);

__device__ __forceinline__ float4
tanh(const float4& a);

__device__ __forceinline__ double2
tanh(const double2& a);

__device__ __forceinline__ double1
tanh(const double1& a);

__device__ __forceinline__ double3
tanh(const double3& a);

__device__ __forceinline__ double4
tanh(const double4& a);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, tanh_func<typename PtrTraits<SrcPtr>::value_type>>>
tanh_(const SrcPtr& src);

template <typename T>
__host__ __device__ ThreshBinaryFunc<T>
thresh_binary_func(
    T thresh,
    T maxVal
    );

template <typename T>
__host__ __device__ ThreshBinaryInvFunc<T>
thresh_binary_inv_func(
    T thresh,
    T maxVal
    );

template <typename T>
__host__ __device__ ThreshToZeroFunc<T>
thresh_to_zero_func(T thresh);

template <typename T>
__host__ __device__ ThreshToZeroInvFunc<T>
thresh_to_zero_inv_func(T thresh);

template <typename T>
__host__ __device__ ThreshTruncFunc<T>
thresh_trunc_func(T thresh);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, ThreshBinaryFunc<typename PtrTraits<SrcPtr>::value_type>>>
threshBinary_(
    const SrcPtr& src,
    typename PtrTraits<SrcPtr>::value_type thresh,
    typename PtrTraits<SrcPtr>::value_type maxVal
    );

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, ThreshBinaryInvFunc<typename PtrTraits<SrcPtr>::value_type>>>
threshBinaryInv_(
    const SrcPtr& src,
    typename PtrTraits<SrcPtr>::value_type thresh,
    typename PtrTraits<SrcPtr>::value_type maxVal
    );

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, ThreshToZeroFunc<typename PtrTraits<SrcPtr>::value_type>>>
threshToZero_(
    const SrcPtr& src,
    typename PtrTraits<SrcPtr>::value_type thresh
    );

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, ThreshToZeroInvFunc<typename PtrTraits<SrcPtr>::value_type>>>
threshToZeroInv_(
    const SrcPtr& src,
    typename PtrTraits<SrcPtr>::value_type thresh
    );

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, ThreshTruncFunc<typename PtrTraits<SrcPtr>::value_type>>>
threshTrunc_(
    const SrcPtr& src,
    typename PtrTraits<SrcPtr>::value_type thresh
    );

template <
    class SrcPtr,
    class Op
    >
__host__ UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, Op>
transformPtr(
    const SrcPtr& src,
    const Op& op
    );

template <
    class Src1Ptr,
    class Src2Ptr,
    class Op
    >
__host__ BinaryTransformPtrSz<typename PtrTraits<Src1Ptr>::ptr_type, typename PtrTraits<Src2Ptr>::ptr_type, Op>
transformPtr(
    const Src1Ptr& src1,
    const Src2Ptr& src2,
    const Op& op
    );

template <class SrcPtr>
__host__ Expr<TransposeBody<SrcPtr>>
transpose_(const SrcPtr& src);

template <
    int n,
    class Op
    >
__host__ __device__ UnaryTupleAdapter<Op, n>
unaryTupleAdapter(const Op& op);

__device__ __forceinline__ uint
vabsdiff2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vabsdiff4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vadd2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vadd4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vavg2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vavg4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vavrg2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vavrg4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmpeq2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmpeq4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmpge2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmpge4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmpgt2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmpgt4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmple2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmple4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmplt2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmplt4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmpne2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vcmpne4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vmax2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vmax4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vmin2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vmin4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vseteq2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vseteq4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsetge2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsetge4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsetgt2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsetgt4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsetle2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsetle4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsetlt2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsetlt4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsetne2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsetne4(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsub2(
    uint a,
    uint b
    );

__device__ __forceinline__ uint
vsub4(
    uint a,
    uint b
    );

template <class SrcPtr>
__host__ Expr<RemapPtr1Sz<typename PtrTraits<SrcPtr>::ptr_type, AffineMapPtr>>
warpAffine_(
    const SrcPtr& src,
    Size dstSize,
    const GpuMat_<float>& warpMat
    );

template <class SrcPtr>
__host__ RemapPtr1Sz<typename PtrTraits<SrcPtr>::ptr_type, AffineMapPtr>
warpAffinePtr(
    const SrcPtr& src,
    Size dstSize,
    const GpuMat_<float>& warpMat
    );

template <
    class InIt,
    class OutIt
    >
__device__ __forceinline__ OutIt
warpCopy(
    InIt beg,
    InIt end,
    OutIt out
    );

template <
    class It,
    typename T
    >
__device__ __forceinline__ void
warpFill(
    It beg,
    It end,
    const T& value
    );

template <class SrcPtr>
__host__ Expr<RemapPtr1Sz<typename PtrTraits<SrcPtr>::ptr_type, PerspectiveMapPtr>>
warpPerspective_(
    const SrcPtr& src,
    Size dstSize,
    const GpuMat_<float>& warpMat
    );

template <class SrcPtr>
__host__ RemapPtr1Sz<typename PtrTraits<SrcPtr>::ptr_type, PerspectiveMapPtr>
warpPerspectivePtr(
    const SrcPtr& src,
    Size dstSize,
    const GpuMat_<float>& warpMat
    );

template <
    typename T,
    class Op
    >
__device__ __forceinline__ void
warpReduce(
    volatile T* smem,
    T& val,
    uint tid,
    const Op& op
    );

template <
    typename P0,
    typename P1,
    typename P2,
    typename P3,
    typename P4,
    typename P5,
    typename P6,
    typename P7,
    typename P8,
    typename P9,
    typename R0,
    typename R1,
    typename R2,
    typename R3,
    typename R4,
    typename R5,
    typename R6,
    typename R7,
    typename R8,
    typename R9,
    class Op0,
    class Op1,
    class Op2,
    class Op3,
    class Op4,
    class Op5,
    class Op6,
    class Op7,
    class Op8,
    class Op9
    >
__device__ __forceinline__ void
warpReduce(
    const tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>& smem,
    const tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val,
    uint tid,
    const tuple<Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9>& op
    );

template <
    typename K,
    typename V,
    class Cmp
    >
__device__ __forceinline__ void
warpReduceKeyVal(
    volatile K* skeys,
    K& key,
    volatile V* svals,
    V& val,
    uint tid,
    const Cmp& cmp
    );

template <
    typename K,
    typename VP0,
    typename VP1,
    typename VP2,
    typename VP3,
    typename VP4,
    typename VP5,
    typename VP6,
    typename VP7,
    typename VP8,
    typename VP9,
    typename VR0,
    typename VR1,
    typename VR2,
    typename VR3,
    typename VR4,
    typename VR5,
    typename VR6,
    typename VR7,
    typename VR8,
    typename VR9,
    class Cmp
    >
__device__ __forceinline__ void
warpReduceKeyVal(
    volatile K* skeys,
    K& key,
    const tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals,
    const tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
    uint tid,
    const Cmp& cmp
    );

template <
    typename KP0,
    typename KP1,
    typename KP2,
    typename KP3,
    typename KP4,
    typename KP5,
    typename KP6,
    typename KP7,
    typename KP8,
    typename KP9,
    typename KR0,
    typename KR1,
    typename KR2,
    typename KR3,
    typename KR4,
    typename KR5,
    typename KR6,
    typename KR7,
    typename KR8,
    typename KR9,
    typename VP0,
    typename VP1,
    typename VP2,
    typename VP3,
    typename VP4,
    typename VP5,
    typename VP6,
    typename VP7,
    typename VP8,
    typename VP9,
    typename VR0,
    typename VR1,
    typename VR2,
    typename VR3,
    typename VR4,
    typename VR5,
    typename VR6,
    typename VR7,
    typename VR8,
    typename VR9,
    class Cmp0,
    class Cmp1,
    class Cmp2,
    class Cmp3,
    class Cmp4,
    class Cmp5,
    class Cmp6,
    class Cmp7,
    class Cmp8,
    class Cmp9
    >
__device__ __forceinline__ void
warpReduceKeyVal(
    const tuple<KP0, KP1, KP2, KP3, KP4, KP5, KP6, KP7, KP8, KP9>& skeys,
    const tuple<KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9>& key,
    const tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals,
    const tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
    uint tid,
    const tuple<Cmp0, Cmp1, Cmp2, Cmp3, Cmp4, Cmp5, Cmp6, Cmp7, Cmp8, Cmp9>& cmp
    );

template <typename T>
__device__ __forceinline__ T
warpScanExclusive(
    T data,
    volatile T* smem,
    uint tid
    );

template <typename T>
__device__ T
warpScanInclusive(
    T data,
    volatile T* smem,
    uint tid
    );

template <
    class InIt,
    class OutIt,
    class UnOp
    >
__device__ __forceinline__ OutIt
warpTransform(
    InIt beg,
    InIt end,
    OutIt out,
    const UnOp& op
    );

template <
    class InIt1,
    class InIt2,
    class OutIt,
    class BinOp
    >
__device__ __forceinline__ OutIt
warpTransform(
    InIt1 beg1,
    InIt1 end1,
    InIt2 beg2,
    OutIt out,
    const BinOp& op
    );

template <
    typename OutIt,
    typename T
    >
__device__ __forceinline__ void
warpYota(
    OutIt beg,
    OutIt end,
    T value
    );

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, XYZ4_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
XYZ4_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, XYZ4_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
XYZ4_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, XYZ4_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
XYZ4_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, XYZ4_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
XYZ4_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, XYZ_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
XYZ_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, XYZ_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
XYZ_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, XYZ_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
XYZ_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, XYZ_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
XYZ_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YCrCb4_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YCrCb4_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YCrCb4_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YCrCb4_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YCrCb4_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YCrCb4_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YCrCb4_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YCrCb4_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YCrCb_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YCrCb_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YCrCb_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YCrCb_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YCrCb_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YCrCb_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YCrCb_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YCrCb_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YUV4_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YUV4_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YUV4_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YUV4_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YUV4_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YUV4_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YUV4_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YUV4_to_RGBA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YUV_to_BGR_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YUV_to_BGR_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YUV_to_BGRA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YUV_to_BGRA_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YUV_to_RGB_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YUV_to_RGB_(const SrcPtr& src);

template <class SrcPtr>
__host__ Expr<UnaryTransformPtrSz<typename PtrTraits<SrcPtr>::ptr_type, YUV_to_RGBA_func<typename VecTraits<typename PtrTraits<SrcPtr>::value_type>::elem_type>>>
YUV_to_RGBA_(const SrcPtr& src);

template <
    class Ptr0,
    class Ptr1
    >
__host__ ZipPtrSz<tuple<typename PtrTraits<Ptr0>::ptr_type, typename PtrTraits<Ptr1>::ptr_type>>
zipPtr(
    const Ptr0& ptr0,
    const Ptr1& ptr1
    );

template <
    class Ptr0,
    class Ptr1,
    class Ptr2
    >
__host__ ZipPtrSz<tuple<typename PtrTraits<Ptr0>::ptr_type, typename PtrTraits<Ptr1>::ptr_type, typename PtrTraits<Ptr2>::ptr_type>>
zipPtr(
    const Ptr0& ptr0,
    const Ptr1& ptr1,
    const Ptr2& ptr2
    );

template <
    class Ptr0,
    class Ptr1,
    class Ptr2,
    class Ptr3
    >
__host__ ZipPtrSz<tuple<typename PtrTraits<Ptr0>::ptr_type, typename PtrTraits<Ptr1>::ptr_type, typename PtrTraits<Ptr2>::ptr_type, typename PtrTraits<Ptr3>::ptr_type>>
zipPtr(
    const Ptr0& ptr0,
    const Ptr1& ptr1,
    const Ptr2& ptr2,
    const Ptr3& ptr3
    );

} // namespace cudev