Saxpy

Performs the “saxpy” operation on vectors.

Syntax

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);

Parameters

pSrc1, ppSrc1
Pointer to the first source vector or array.
src1Stride0
Stride between the vectors in the first source vector array.
src1Stride2
Stride between the elements in the first source vector(s).
src1RoiShift
ROI shift in the first source vector(s).
pSrc2, ppSrc2
Pointer to the second source vector or vector array.
src2Stride0
Stride between the vectors in the second source vector array.
src2Stride2
Stride between the elements in the second source vector(s).
src2RoiShift
ROI shift in the second source vector(s).
pDst, ppDst
Pointer to the destination vector or vector array.
dstStride0
Stride between the vectors in the destination array.
dstStride2
Stride between the elements in the destination vector(s).
dstRoiShift
ROI shift in the destination vector(s).
scale
Multiplier.
len
Vector length.
count
Number of vectors in the array.

Description

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.

ippmSaxpy_vav_32f  

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

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 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.

Submit feedback on this help topic

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