Sub

Subtracts matrix from another matrix.

Syntax

Case 1: Matrix - matrix operation

IppStatus ippmSub_mm_32f(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride1, int dstStride2, int width, int height);

IppStatus ippmSub_mm_64f(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride1, int dstStride2, int width, int height);

IppStatus ippmSub_mm_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, const Ipp32f** ppSrc2, int src2RoiShift, Ipp32f** ppDst, int dstRoiShift, int width, int height);

IppStatus ippmSub_mm_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, const Ipp64f** ppSrc2, int src2RoiShift, Ipp64f** ppDst, int dstRoiShift, int width, int height);

Case 2: Transposed matrix - matrix operation

IppStatus ippmSub_tm_32f(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride1, int dstStride2, int width, int height);

IppStatus ippmSub_tm_64f(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride1, int dstStride2, int width, int height);

IppStatus ippmSub_tm_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, const Ipp32f** ppSrc2, int src2RoiShift, Ipp32f** ppDst, int dstRoiShift, int width, int height);

IppStatus ippmSub_tm_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, const Ipp64f** ppSrc2, int src2RoiShift, Ipp64f** ppDst, int dstRoiShift, int width, int height);

Case 3: Matrix - transposed matrix operation

IppStatus ippmSub_mt_32f(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride1, int dstStride2, int width, int height);

IppStatus ippmSub_mt_64f(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride1, int dstStride2, int width, int height);

IppStatus ippmSub_mt_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, const Ipp32f** ppSrc2, int src2RoiShift, Ipp32f** ppDst, int dstRoiShift, int width, int height);

IppStatus ippmSub_mt_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, const Ipp64f** ppSrc2, int src2RoiShift, Ipp64f** ppDst, int dstRoiShift, int width, int height);

Case 4: Transposed matrix - transposed matrix operation

IppStatus ippmSub_tt_32f(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride1, int dstStride2, int width, int height);

IppStatus ippmSub_tt_64f(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride1, int dstStride2, int width, int height);

IppStatus ippmSub_tt_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, const Ipp32f** ppSrc2, int src2RoiShift, Ipp32f** ppDst, int dstRoiShift, int width, int height);

IppStatus ippmSub_tt_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, const Ipp64f** ppSrc2, int src2RoiShift, Ipp64f** ppDst, int dstRoiShift, int width, int height);

Case 5: Matrix - matrix array operation

IppStatus ippmSub_mma_32f(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mma_64f(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mma_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mma_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mma_32f_L(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mma_64f_L(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 6: Transposed matrix - matrix array operation

IppStatus ippmSub_tma_32f(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tma_64f(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tma_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tma_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tma_32f_L(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tma_64f_L(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 7: Matrix - transposed matrix array operation

IppStatus ippmSub_mta_32f(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mta_64f(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mta_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mta_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mta_32f_L(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mta_64f_L(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 8: Transposed matrix - transposed matrix array operation

IppStatus ippmSub_tta_32f(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tta_64f(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tta_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tta_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tta_32f_L(const Ipp32f* pSrc1, int src1Stride1, int src1Stride2, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tta_64f_L(const Ipp64f* pSrc1, int src1Stride1, int src1Stride2, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 9: Matrix array - matrix operation

IppStatus ippmSub_mam_32f(const Ipp32f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mam_64f(const Ipp64f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mam_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp32f** ppSrc2, int src2RoiShift, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mam_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp64f** ppSrc2, int src2RoiShift, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mam_32f_L(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mam_64f_L(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 10: Transposed matrix array - matrix operation

IIppStatus ippmSub_tam_32f(const Ipp32f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tam_64f(const Ipp64f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tam_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp32f** ppSrc2, int src2RoiShift, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tam_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp64f** ppSrc2, int src2RoiShift, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tam_32f_L(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tam_64f_L(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 11: Matrix array - transposed matrix operation

IppStatus ippmSub_mat_32f(const Ipp32f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mat_64f(const Ipp64f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mat_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp32f** ppSrc2, int src2RoiShift, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mat_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp64f** ppSrc2, int src2RoiShift, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mat_32f_L(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mat_64f_L(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 12: Transposed matrix array - transposed matrix operation

IppStatus ippmSub_tat_32f(const Ipp32f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tat_64f(const Ipp64f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tat_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp32f** ppSrc2, int src2RoiShift, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tat_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp64f** ppSrc2, int src2RoiShift, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tat_32f_L(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tat_64f_L(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 13: Matrix array - matrix array operation

IppStatus ippmSub_mama_32f(const Ipp32f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mama_64f(const Ipp64f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mama_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mama_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mama_32f_L(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mama_64f_L(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 14: Transposed matrix array - matrix array operation

IppStatus ippmSub_tama_32f(const Ipp32f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tama_64f(const Ipp64f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tama_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tama_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tama_32f_L(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tama_64f_L(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 15: Matrix array - transposed matrix array operation

IppStatus ippmSub_mata_32f(const Ipp32f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mata_64f(const Ipp64f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mata_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mata_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_mata_32f_L(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_mata_64f_L(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Case 16: Transposed matrix array - transposed matrix array operation

IppStatus ippmSub_tata_32f(const Ipp32f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp32f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tata_64f(const Ipp64f* pSrc1, int src1Stride0, int src1Stride1, int src1Stride2, const Ipp64f* pSrc2, int src2Stride0, int src2Stride1, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tata_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tata_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride0, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int width, int height, int count);

IppStatus ippmSub_tata_32f_L(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

IppStatus ippmSub_tata_64f_L(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride1, int src1Stride2, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride1, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride1, int dstStride2, int width, int height, int count);

Parameters

pSrc1, ppSrc1

Pointer to the first source matrix or array of matrices.

src1Stride0

Stride between the matrices in the first source array.

src1Stride1

Stride between the rows in the first source matrix(ces).

src1Stride2

Stride between the elements in the first source matrix(ces).

src1RoiShift

ROI shift in the first source matrix(ces).

pSrc2, ppSrc2

Pointer to the second source matrix or array of matrices.

src2Stride0

Stride between the matrices in the second source array.

src2Stride1

Stride between the rows in the second source matrix(ces).

src2Stride2

Stride between the elements in the second source matrix(ces).

src2RoiShift

ROI shift in the second source matrix(ces).

pDst, ppDst

Pointer to the destination matrix or array of matrices.

dstStride0

Stride between the matrices in the destination array.

dstStride1

Stride between the rows in the destination matrix.

dstStride2

Stride between the elements in the destination matrix.

dstRoiShift

ROI shift in the destination matrix.

width

Matrix width.

height

Matrix height.

count

Number of matrices in the array.

Description

The function ippmSub is declared in the ippm.h header file.

When performed on two matrices (cases 1, 5, 9, 13), the function subtracts an element of the second source matrix from the respective element of the first source matrix and stores the result in pDst. This operation is done in loop through all matrix elements:

dst[i][j] = src1[i][j] - src2[i][j],

0 i < height, 0 j < width.

When performed on a transposed matrix and a matrix (cases 2, 6, 10, 14), the function subtracts an element of the second source matrix from the respective element of the first source matrix and stores the result in pDst. This operation is done in loop through all matrix elements:

dst[i][j] = src1[j][i] - src2[i][j],

0 i < height, 0 j < width.

Note that the transposed matrix must have the number of rows equal to width and the number of columns equal to height.

The following example demonstrates how to use the function ippmSub_tm_32f_P. To clarify other cases, see examples for the ippmAdd function. For more information, see also examples in Getting Started.

ippmSub_tm_32f_P  

IppStatus sub_tm_32f_P(void) {
    /* Src1 source data */
    Ipp32f src1[2*6] = { 9, 0, 0, 8, 0, 7,
                         0, 6, 5, 0, 0, 4 };
    /*
    // Nonzero elements of interest are referred by mask using 
    // pointer descriptor: Src1 width=3, height=2 
    */
    Ipp32f* ppSrc1[2*3] = { src1,   src1+3, src1+5,
                            src1+7, src1+8, src1+11 };
    int src1RoiShift = 0;

    /* Src2 source data */
    Ipp32f src2[3*6] = { 7, 0, 0, 0, 0, 1,
                         0, 2, 1, 0, 0, 0,
                         0, 0, 4, 0, 3, 0};

    /*
    // Nonzero elements of interest are referred by mask using 
    // Pointer descriptor: Src2 width=2, height=3 
    */
    Ipp32f* ppSrc2[3*2] = { src2,    src2+5,
                            src2+7,  src2+8,
                            src2+14, src2+16 };
    int src2RoiShift = 0;
    /*
    // Pointer description for destination matrix:
    // Dst width=2, height=3 
    */
    Ipp32f  dst[3*2];
    Ipp32f* ppDst[3*2] = { dst,   dst+1,
                           dst+2, dst+3,
                           dst+4, dst+5 };
    int dstRoiShift = 0;
    int width  = 2;
    int height = 3;

    IppStatus status = ippmSub_tm_32f_P((const Ipp32f**)ppSrc1,
        src1RoiShift, (const Ipp32f**)ppSrc2, src2RoiShift,
        ppDst, dstRoiShift, width, height );

    /*
    // It is recommended to check return status
    // to detect wrong input parameters, if any
    */
    if(status == ippStsNoErr){
        printf_m_Ipp32f_P("Destination matrix:", ppDst, 2, 3, status);
    } else {
        printf("Function returns status: %s \n", ippGetStatusString(status));
    }
    return status;
}
 

The program above produces the following output:

Destination matrix:

2.000000  5.000000

6.000000  4.000000

3.000000  1.000000

When performed on a matrix array and a transposed matrix (cases 3, 7, 11, 15), the function subtracts an element of the transposed source matrix from the respective element of the first source matrix and stores the result in pDst. This operation is done in loop through all matrix elements:

dst[i][j] = src1[i][j] - src2[j][i],

0 i < height, 0 j < width.

Note that the transposed matrix must have the number of rows equal to width and the number of columns equal to height.

When performed on two transposed matrices (cases 4, 8, 12, 16), the function subtracts an element of the second transposed matrix from the respective element of the first transposed matrix and stores the result in pDst. This operation is done in loop through all matrix elements:

dst[i][j] = src1[j][i] - src2[j][i],

0 i < height, 0 j < width.

Note that both transposed matrices must have the number of rows equal to width and the number of columns equal to height.

The following example demonstrates how to use the function ippmSub_tt_32f_P. For more information, see also examples in Getting Started.

ippmSub_tt_32f_P  

IppStatus sub_tt_32f_P(void) {
    /* Src1 source data */
    Ipp32f src1[2*6] = { 9, 0, 0, 8, 0, 7,
                         0, 6, 5, 0, 0, 4 };
    /*
    // Nonzero elements of interest are referred by mask using 
    // pointer descriptor: Src1 width=3, height=2 
    */
    Ipp32f* ppSrc1[2*3] = { src1,   src1+3, src1+5,
                            src1+7, src1+8, src1+11 };
    int src1RoiShift = 0;

    /* Src2 source data */
    Ipp32f src2[2*6] = { 0, 7, 0, 2, 4, 0,
                         1, 1, 0, 3, 0, 0 };

    /*
    // Nonzero elements of interest are referred by mask using 
    // pointer descriptor: Src2 width=3, height=2 
    */
    Ipp32f* ppSrc2[2*3] = { src2+1, src2+3, src2+4,
                            src2+6, src2+7, src2+9 };
    int src2RoiShift = 0;
    /*
    // Pointer description for destination matrix:
    // Dst width=2, height=3 
    */
    Ipp32f  dst[3*2];
    Ipp32f* ppDst[3*2] = { dst,   dst+1,
                           dst+2, dst+3,
                           dst+4, dst+5 };
    int dstRoiShift = 0;
    int width  = 2;
    int height = 3;

    IppStatus status = ippmSub_tt_32f_P((const Ipp32f**)ppSrc1,
        src1RoiShift, (const Ipp32f**)ppSrc2, src2RoiShift,
        ppDst, dstRoiShift, width, height );
    /*
    // It is recommended to check return status
    // to detect wrong input parameters, if any
    */
    if(status == ippStsNoErr){
        printf_m_Ipp32f_P("Destination matrix:", ppDst, 2, 3, status);
    } else {
        printf("Function returns status: %s \n", ippGetStatusString(status));
    }
    return status;
}
 

The program above produces the following output:

Destination matrix:

2.000000  5.000000

6.000000  4.000000

3.000000  1.000000

Return Values

ippStsOk

Returns no error.

ippStsNullPtrErr

Returns an error when at least one input pointer is NULL.

ippStsSizeErr

Returns an error when the input size parameter is equal to 0.

ippStsStrideMatrixErr

Returns an error when the stride value is not positive or not divisible by the size of the data type.

ippStsRoiShiftMatrixErr

Returns an error when the roiShift value is negative or not divisible by the size of the data type.

ippStsCountMatrixErr

Returns an error when the count value is less or equal to zero.

Submit feedback on this help topic

Copyright © 2000 - 2011, Intel Corporation. All rights reserved.