Name | Synopsis | Description | Parameters | Return Values | Attributes | See Also
cc [ flag... ] file... -lmlib [ library... ] #include <mlib.h> mlib_status mlib_VectorMulMShift_S16_S16_Mod(mlib_s16 *z, const mlib_s16 *x, const mlib_s16 *y, mlib_s32 m, mlib_s32 n, mlib_s32 shift);
mlib_status mlib_VectorMulMShift_S16_S16_Sat(mlib_s16 *z, const mlib_s16 *x, const mlib_s16 *y, mlib_s32 m, mlib_s32 n, mlib_s32 shift);
mlib_status mlib_VectorMulMShift_S16C_S16C_Mod(mlib_s16 *z, const mlib_s16 *x, const mlib_s16 *y, mlib_s32 m, mlib_s32 n, mlib_s32 shift);
mlib_status mlib_VectorMulMShift_S16C_S16C_Sat(mlib_s16 *z, const mlib_s16 *x, const mlib_s16 *y, mlib_s32 m, mlib_s32 n, mlib_s32 shift);
Each of these functions multiplies a vector by a matrix and shifts the results.
For real data, the following equation is used:
m-1 z[i] = { SUM (x[j] * y[j*m + i]) } * 2**(-shift) j=0
where i = 0, 1, ..., (n - 1).
For complex data, the following equation is used:
m-1 z[2*i ] = { SUM (xR*yR - xI*yI) } * 2**(-shift) j=0 m-1 z[2*i + 1] = { SUM (xR*yI + xI*yR) } * 2**(-shift) j=0
where i = 0, 1, ..., (n - 1), and
xR = x[2*j] xI = x[2*j + 1] yR = y[2*(j*m + i)] yI = y[2*(j*m + i) + 1]
Each of the functions takes the following arguments:
Pointer to the first element of the destination vector.
Pointer to the first element of the source vector.
Pointer to the first element of the source matrix.
Number of rows in the matrix, and number of elements in the source vector.
Number of columns in the matrix, and number of elements in the destination vector.
Right shifting factor.
Each of the functions returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE |
ATTRIBUTE VALUE |
---|---|
Interface Stability |
Committed |
MT-Level |
MT-Safe |
Name | Synopsis | Description | Parameters | Return Values | Attributes | See Also