Performs the “saxpy” operation on vectors.
Case 1: Vector - vector operation
IppStatus ippmSaxpy_vv_32f(const Ipp32f* pSrc1, int src1Stride2, Ipp32f scale, const Ipp32f* pSrc2, int src2Stride2, Ipp32f* pDst, int dstStride2, int len);
IppStatus ippmSaxpy_vv_64f(const Ipp64f* pSrc1, int src1Stride2, Ipp64f scale, const Ipp64f* pSrc2, int src2Stride2, Ipp64f* pDst, int dstStride2, int len);
IppStatus ippmSaxpy_vv_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, Ipp32f scale, const Ipp32f** ppSrc2, int src2RoiShift, Ipp32f** ppDst, int dstRoiShift, int len);
IppStatus ippmSaxpy_vv_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, Ipp64f scale, const Ipp64f** ppSrc2, int src2RoiShift, Ipp64f** ppDst, int dstRoiShift, int len);
Case 2: Vector - vector array operation
IppStatus ippmSaxpy_vva_32f(const Ipp32f* pSrc1, int src1Stride2, Ipp32f scale, const Ipp32f* pSrc2, int src2Stride0, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride2, int len, int count);
IppStatus ippmSaxpy_vva_64f(const Ipp64f* pSrc1, int src1Stride2, Ipp64f scale, const Ipp64f* pSrc2, int src2Stride0, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride2, int len, int count);
IppStatus ippmSaxpy_vva_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, Ipp32f scale, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int len, int count);
IppStatus ippmSaxpy_vva_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, Ipp64f scale, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int len, int count);
IppStatus ippmSaxpy_vva_32f_L(const Ipp32f* pSrc1, int src1Stride2, Ipp32f scale, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride2, int len, int count);
IppStatus ippmSaxpy_vva_64f_L(const Ipp64f* pSrc1, int src1Stride2, Ipp64f scale, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride2, int len, int count);
Case 3: Vector array - vector operation
IppStatus ippmSaxpy_vav_32f(const Ipp32f* pSrc1, int src1Stride0, int src1Stride2, Ipp32f scale, const Ipp32f* pSrc2, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride2, int len, int count);
IppStatus ippmSaxpy_vav_64f(const Ipp64f* pSrc1, int src1Stride0, int src1Stride2, Ipp64f scale, const Ipp64f* pSrc2, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride2, int len, int count);
IppStatus ippmSaxpy_vav_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride0, Ipp32f scale, const Ipp32f** ppSrc2, int src2RoiShift, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int len, int count);
IppStatus ippmSaxpy_vav_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride0, Ipp64f scale, const Ipp64f** ppSrc2, int src2RoiShift, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int len, int count);
IppStatus ippmSaxpy_vav_32f_L(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride2, Ipp32f scale, const Ipp32f* pSrc2, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride2, int len, int count);
IppStatus ippmSaxpy_vav_64f_L(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride2, Ipp64f scale, const Ipp64f* pSrc2, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride2, int len, int count);
Case 4: Vector array - vector array operation
IppStatus ippmSaxpy_vava_32f(const Ipp32f* pSrc1, int src1Stride0, int src1Stride2, Ipp32f scale, const Ipp32f* pSrc2, int src2Stride0, int src2Stride2, Ipp32f* pDst, int dstStride0, int dstStride2, int len, int count);
IppStatus ippmSaxpy_vava_64f(const Ipp64f* pSrc1, int src1Stride0, int src1Stride2, Ipp64f scale, const Ipp64f* pSrc2, int src2Stride0, int src2Stride2, Ipp64f* pDst, int dstStride0, int dstStride2, int len, int count);
IppStatus ippmSaxpy_vava_32f_P(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride0, Ipp32f scale, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp32f** ppDst, int dstRoiShift, int dstStride0, int len, int count);
IppStatus ippmSaxpy_vava_64f_P(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride0, Ipp64f scale, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride0, Ipp64f** ppDst, int dstRoiShift, int dstStride0, int len, int count);
IppStatus ippmSaxpy_vava_32f_L(const Ipp32f** ppSrc1, int src1RoiShift, int src1Stride2, Ipp32f scale, const Ipp32f** ppSrc2, int src2RoiShift, int src2Stride2, Ipp32f** ppDst, int dstRoiShift, int dstStride2, int len, int count);
IppStatus ippmSaxpy_vava_64f_L(const Ipp64f** ppSrc1, int src1RoiShift, int src1Stride2, Ipp64f scale, const Ipp64f** ppSrc2, int src2RoiShift, int src2Stride2, Ipp64f** ppDst, int dstRoiShift, int dstStride2, int len, int count);
The function ippmSaxpy is declared in the ippm.h header file. The function composes linear combination of two vectors by multiplying the first source vector by a constant, adding it to the second vector, and storing the result in the destination vector:
The following example demonstrates how to use the function ippmSaxpy_vav_32f. For more information, see also examples in Getting Started.
IppStatus saxpy_vav_32f(void) {
/* Src1 is 2 vectors with length=4 */
Ipp32f pSrc1[2*4] = { 1, 2, 4, 8,
3, 5, 7, 9};
/* Src2 is vector with length=4 */
Ipp32f pSrc2[4] = { -1, -5, -2 , -3 };
Ipp32f scale = 2.0;
/* Standard description for source vectors */
int src1Stride2 = sizeof(Ipp32f);
int src1Stride0 = 4*sizeof(Ipp32f);
int src2Stride2 = sizeof(Ipp32f);
/* Standard description for destination vectors */
Ipp32f pDst[2*4];
int dstStride2 = sizeof(Ipp32f);
int dstStride0 = 4*sizeof(Ipp32f);
int length = 4;
int count = 2;
IppStatus status = ippmSaxpy_vav_32f((const Ipp32f*)pSrc1,
src1Stride0, src1Stride2, scale,(const Ipp32f*)pSrc2,
src2Stride2, pDst, dstStride0, dstStride2, length, count);
/*
// It is recommended to check return status
// to detect wrong input parameters, if any
*/
if (status == ippStsNoErr) {
printf_va_Ipp32f("Dst is 2 vectors:", pDst, 4, 2, status);
} else {
printf("Function returns status: %s \n", ippGetStatusString(status));
}
return status;
}
The program above produces the following output:
Dst is 2 vectors:
1.000000 -1.000000 6.000000 13.000000
5.000000 5.000000 12.000000 15.000000
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 size of data type. |
ippStsRoiShiftMatrixErr |
Returns an error when the roiShift value is negative or not divisible by size of data type. |
ippStsCountMatrixErr |
Returns an error when the count value is less or equal to zero. |
Copyright © 2000 - 2011, Intel Corporation. All rights reserved.