'\" te .\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved .TH mlib_MatrixMul_U8_U8_Mod 3MLIB "2 Mar 2007" "SunOS 5.11" "mediaLib Library Functions" .SH 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 .SH SYNOPSIS .LP .nf cc [ \fIflag\fR... ] \fIfile\fR... \fB-lmlib\fR [ \fIlibrary\fR... ] #include \fBmlib_status\fR \fBmlib_MatrixMul_U8_U8_Mod\fR(\fBmlib_u8 *\fR\fIz\fR, \fBconst mlib_u8 *\fR\fIx\fR, \fBconst mlib_u8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_U8_U8_Sat\fR(\fBmlib_u8 *\fR\fIz\fR, \fBconst mlib_u8 *\fR\fIx\fR, \fBconst mlib_u8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_U8C_U8C_Mod\fR(\fBmlib_u8 *\fR\fIz\fR, \fBconst mlib_u8 *\fR\fIx\fR, \fBconst mlib_u8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_U8C_U8C_Sat\fR(\fBmlib_u8 *\fR\fIz\fR, \fBconst mlib_u8 *\fR\fIx\fR, \fBconst mlib_u8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S8_S8_Mod\fR(\fBmlib_s8 *\fR\fIz\fR, \fBconst mlib_s8 *\fR\fIx\fR, \fBconst mlib_s8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S8_S8_Sat\fR(\fBmlib_s8 *\fR\fIz\fR, \fBconst mlib_s8 *\fR\fIx\fR, \fBconst mlib_s8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S8C_S8C_Mod\fR(\fBmlib_s8 *\fR\fIz\fR, \fBconst mlib_s8 *\fR\fIx\fR, \fBconst mlib_s8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S8C_S8C_Sat\fR(\fBmlib_s8 *\fR\fIz\fR, \fBconst mlib_s8 *\fR\fIx\fR, \fBconst mlib_s8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16_U8_Mod\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_u8 *\fR\fIx\fR, \fBconst mlib_u8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16_U8_Sat\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_u8 *\fR\fIx\fR, \fBconst mlib_u8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16_S8_Mod\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_s8 *\fR\fIx\fR, \fBconst mlib_s8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16_S8_Sat\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_s8 *\fR\fIx\fR, \fBconst mlib_s8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16_S16_Mod\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_s16 *\fR\fIx\fR, \fBconst mlib_s16 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16_S16_Sat\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_s16 *\fR\fIx\fR, \fBconst mlib_s16 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16C_U8C_Mod\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_u8 *\fR\fIx\fR, \fBconst mlib_u8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16C_U8C_Sat\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_u8 *\fR\fIx\fR, \fBconst mlib_u8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16C_S8C_Mod\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_s8 *\fR\fIx\fR, \fBconst mlib_s8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16C_S8C_Sat\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_s8 *\fR\fIx\fR, \fBconst mlib_s8 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16C_S16C_Mod\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_s16 *\fR\fIx\fR, \fBconst mlib_s16 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S16C_S16C_Sat\fR(\fBmlib_s16 *\fR\fIz\fR, \fBconst mlib_s16 *\fR\fIx\fR, \fBconst mlib_s16 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S32_S16_Mod\fR(\fBmlib_s32 *\fR\fIz\fR, \fBconst mlib_s16 *\fR\fIx\fR, \fBconst mlib_s16 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S32_S16_Sat\fR(\fBmlib_s32 *\fR\fIz\fR, \fBconst mlib_s16 *\fR\fIx\fR, \fBconst mlib_s16 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S32_S32_Mod\fR(\fBmlib_s32 *\fR\fIz\fR, \fBconst mlib_s32 *\fR\fIx\fR, \fBconst mlib_s32 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S32_S32_Sat\fR(\fBmlib_s32 *\fR\fIz\fR, \fBconst mlib_s32 *\fR\fIx\fR, \fBconst mlib_s32 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S32C_S16C_Mod\fR(\fBmlib_s32 *\fR\fIz\fR, \fBconst mlib_s16 *\fR\fIx\fR, \fBconst mlib_s16 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S32C_S16C_Sat\fR(\fBmlib_s32 *\fR\fIz\fR, \fBconst mlib_s16 *\fR\fIx\fR, \fBconst mlib_s16 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S32C_S32C_Mod\fR(\fBmlib_s32 *\fR\fIz\fR, \fBconst mlib_s32 *\fR\fIx\fR, \fBconst mlib_s32 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .LP .nf \fBmlib_status\fR \fBmlib_MatrixMul_S32C_S32C_Sat\fR(\fBmlib_s32 *\fR\fIz\fR, \fBconst mlib_s32 *\fR\fIx\fR, \fBconst mlib_s32 *\fR\fIy\fR, \fBmlib_s32\fR \fIm\fR, \fBmlib_s32\fR \fIl\fR, \fBmlib_s32\fR \fIn\fR); .fi .SH DESCRIPTION .sp .LP 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. .sp .LP For real data, the following equation is used: .sp .in +2 .nf l-1 z[i*n + j] = SUM (x[i*l + k] * y[k*n + j]) k=0 .fi .in -2 .sp .LP where \fBi = 0, 1, ..., (m - 1)\fR; \fBj = 0, 1, ..., (n - 1)\fR. .sp .LP For complex data, the following equation is used: .sp .in +2 .nf 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 .fi .in -2 .sp .LP where .sp .in +2 .nf 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) .fi .in -2 .SH PARAMETERS .sp .LP Each of the functions takes the following arguments: .sp .ne 2 .mk .na \fB\fIz\fR\fR .ad .RS 5n .rt Pointer to the destination matrix. .RE .sp .ne 2 .mk .na \fB\fIx\fR\fR .ad .RS 5n .rt Pointer to the first source matrix. .RE .sp .ne 2 .mk .na \fB\fIy\fR\fR .ad .RS 5n .rt Pointer to the second source matrix. .RE .sp .ne 2 .mk .na \fB\fIm\fR\fR .ad .RS 5n .rt Number of rows in the first matrix. .RE .sp .ne 2 .mk .na \fB\fIl\fR\fR .ad .RS 5n .rt Number of columns in the first matrix, and number of rows in the second matrix. .RE .sp .ne 2 .mk .na \fB\fIn\fR\fR .ad .RS 5n .rt Number of columns in the second matrix. .RE .SH RETURN VALUES .sp .LP Each of the functions returns \fBMLIB_SUCCESS\fR if successful. Otherwise it returns \fBMLIB_FAILURE\fR. .SH ATTRIBUTES .sp .LP See \fBattributes\fR(5) for descriptions of the following attributes: .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . ATTRIBUTE TYPEATTRIBUTE VALUE _ Interface StabilityCommitted _ MT-LevelMT-Safe .TE .SH SEE ALSO .sp .LP \fBmlib_MatrixMulShift_S16_S16_Mod\fR(3MLIB), \fBattributes\fR(5)