man pages section 3: Multimedia Library Functions

Exit Print View

Updated: July 2014
 
 

mlib_MatrixMul_S8C_S8C_Sat (3MLIB)

Name

mlib_MatrixMul_U8_U8_Mod, mlib_MatrixMul_U8_U8_Sat, mlib_MatrixMul_U8C_U8C_Mod, mlib_MatrixMul_U8C_U8C_Sat, mlib_MatrixMul_S8_S8_Mod, mlib_MatrixMul_S8_S8_Sat, mlib_MatrixMul_S8C_S8C_Mod, mlib_MatrixMul_S8C_S8C_Sat, mlib_MatrixMul_S16_U8_Mod, mlib_MatrixMul_S16_U8_Sat, mlib_MatrixMul_S16_S8_Mod, mlib_MatrixMul_S16_S8_Sat, mlib_MatrixMul_S16_S16_Mod, mlib_MatrixMul_S16_S16_Sat, mlib_MatrixMul_S16C_U8C_Mod, mlib_MatrixMul_S16C_U8C_Sat, mlib_MatrixMul_S16C_S8C_Mod, mlib_MatrixMul_S16C_S8C_Sat, mlib_MatrixMul_S16C_S16C_Mod, mlib_MatrixMul_S16C_S16C_Sat, mlib_MatrixMul_S32_S16_Mod, mlib_MatrixMul_S32_S16_Sat, mlib_MatrixMul_S32_S32_Mod, mlib_MatrixMul_S32_S32_Sat, mlib_MatrixMul_S32C_S16C_Mod, mlib_MatrixMul_S32C_S16C_Sat, mlib_MatrixMul_S32C_S32C_Mod, mlib_MatrixMul_S32C_S32C_Sat - matrix multiplication

Synopsis

cc [ flag... ] file... –lmlib [ library... ]
#include <mlib.h>

mlib_status mlib_MatrixMul_U8_U8_Mod(mlib_u8 *z, const mlib_u8 *x,
     const mlib_u8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_U8_U8_Sat(mlib_u8 *z, const mlib_u8 *x,
     const mlib_u8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_U8C_U8C_Mod(mlib_u8 *z, const mlib_u8 *x,
     const mlib_u8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_U8C_U8C_Sat(mlib_u8 *z, const mlib_u8 *x,
     const mlib_u8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S8_S8_Mod(mlib_s8 *z, const mlib_s8 *x,
     const mlib_s8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S8_S8_Sat(mlib_s8 *z, const mlib_s8 *x,
     const mlib_s8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S8C_S8C_Mod(mlib_s8 *z, const mlib_s8 *x,
     const mlib_s8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S8C_S8C_Sat(mlib_s8 *z, const mlib_s8 *x,
     const mlib_s8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16_U8_Mod(mlib_s16 *z, const mlib_u8 *x,
     const mlib_u8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16_U8_Sat(mlib_s16 *z, const mlib_u8 *x,
     const mlib_u8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16_S8_Mod(mlib_s16 *z, const mlib_s8 *x,
     const mlib_s8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16_S8_Sat(mlib_s16 *z, const mlib_s8 *x,
     const mlib_s8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16_S16_Mod(mlib_s16 *z, const mlib_s16 *x,
     const mlib_s16 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16_S16_Sat(mlib_s16 *z, const mlib_s16 *x,
     const mlib_s16 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16C_U8C_Mod(mlib_s16 *z, const mlib_u8 *x,
     const mlib_u8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16C_U8C_Sat(mlib_s16 *z, const mlib_u8 *x,
     const mlib_u8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16C_S8C_Mod(mlib_s16 *z, const mlib_s8 *x,
     const mlib_s8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16C_S8C_Sat(mlib_s16 *z, const mlib_s8 *x,
     const mlib_s8 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16C_S16C_Mod(mlib_s16 *z, const mlib_s16 *x,
     const mlib_s16 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S16C_S16C_Sat(mlib_s16 *z, const mlib_s16 *x,
     const mlib_s16 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S32_S16_Mod(mlib_s32 *z, const mlib_s16 *x,
     const mlib_s16 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S32_S16_Sat(mlib_s32 *z, const mlib_s16 *x,
     const mlib_s16 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S32_S32_Mod(mlib_s32 *z, const mlib_s32 *x,
     const mlib_s32 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S32_S32_Sat(mlib_s32 *z, const mlib_s32 *x,
     const mlib_s32 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S32C_S16C_Mod(mlib_s32 *z, const mlib_s16 *x,
     const mlib_s16 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S32C_S16C_Sat(mlib_s32 *z, const mlib_s16 *x,
     const mlib_s16 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S32C_S32C_Mod(mlib_s32 *z, const mlib_s32 *x,
     const mlib_s32 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);
mlib_status mlib_MatrixMul_S32C_S32C_Sat(mlib_s32 *z, const mlib_s32 *x,
     const mlib_s32 *y, mlib_s32 m, mlib_s32 l, mlib_s32 n);

Description

Each of these functions performs matrix multiplication of the first matrix to the second matrix or the first complex matrix to the second complex matrix.

For real data, the following equation is used:

             l-1
z[i*n + j] = SUM (x[i*l + k] * y[k*n + j])
             k=0

where i = 0, 1, ..., (m - 1); j = 0, 1, ..., (n - 1).

For complex data, the following equation is used:

                     l-1
z[2*(i*n + j)]     = SUM (xR*yR - xI*yI)
                     k=0

                     l-1
z[2*(i*n + j) + 1] = SUM (xR*yI + xI*yR)
                     k=0

where

xR = x[2*(i*l + k)]
xI = x[2*(i*l + k) + 1]
yR = y[2*(k*n + j)]
yI = y[2*(k*n + j) + 1]
i = 0, 1, ..., (m - 1)
j = 0, 1, ..., (n - 1)

Parameters

Each of the functions takes the following arguments:

z

Pointer to the destination matrix.

x

Pointer to the first source matrix.

y

Pointer to the second source matrix.

m

Number of rows in the first matrix.

l

Number of columns in the first matrix, and number of rows in the second matrix.

n

Number of columns in the second matrix.

Return Values

Each of the functions returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.

Attributes

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Committed
MT-Level
MT-Safe

See also

mlib_MatrixMulShift_S16_S16_Mod(3MLIB), attributes(5)