mlib_MatrixMul_U8_U8_Mod(3MLIB) mediaLib Library Functions mlib_MatrixMul_U8_U8_Mod(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_Matrix-
Mul_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 multiplica-
tion
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)
SunOS 5.11 2 Mar 2007 mlib_MatrixMul_U8_U8_Mod(3MLIB)