# Matrix multiplication

The function performs generalized matrix multiplication similar to the gemm functions in BLAS level 3: $$D = \alpha*AB+\beta*C$$

Parameters:

 src1 pointer to input $$M\times N$$ matrix $$A$$ or $$A^T$$ stored in row major order. src1_step number of bytes between two consequent rows of matrix $$A$$ or $$A^T$$. src2 pointer to input $$N\times K$$ matrix $$B$$ or $$B^T$$ stored in row major order. src2_step number of bytes between two consequent rows of matrix $$B$$ or $$B^T$$. alpha $$\alpha$$ multiplier before $$AB$$ src3 pointer to input $$M\times K$$ matrix $$C$$ or $$C^T$$ stored in row major order. src3_step number of bytes between two consequent rows of matrix $$C$$ or $$C^T$$. beta $$\beta$$ multiplier before $$C$$ dst pointer to input $$M\times K$$ matrix $$D$$ stored in row major order. dst_step number of bytes between two consequent rows of matrix $$D$$. m number of rows in matrix $$A$$ or $$A^T$$, equals to number of rows in matrix $$D$$ n number of columns in matrix $$A$$ or $$A^T$$ k number of columns in matrix $$B$$ or $$B^T$$, equals to number of columns in matrix $$D$$ flags algorithm options (combination of CV_HAL_GEMM_1_T, …).
// global functions

int
hal_ni_gemm32f(
const float* src1,
size_t src1_step,
const float* src2,
size_t src2_step,
float alpha,
const float* src3,
size_t src3_step,
float beta,
float* dst,
size_t dst_step,
int m,
int n,
int k,
int flags
);

int
hal_ni_gemm32fc(
const float* src1,
size_t src1_step,
const float* src2,
size_t src2_step,
float alpha,
const float* src3,
size_t src3_step,
float beta,
float* dst,
size_t dst_step,
int m,
int n,
int k,
int flags
);

int
hal_ni_gemm64f(
const double* src1,
size_t src1_step,
const double* src2,
size_t src2_step,
double alpha,
const double* src3,
size_t src3_step,
double beta,
double* dst,
size_t dst_step,
int m,
int n,
int k,
int flags
);

int
hal_ni_gemm64fc(
const double* src1,
size_t src1_step,
const double* src2,
size_t src2_step,
double alpha,
const double* src3,
size_t src3_step,
double beta,
double* dst,
size_t dst_step,
int m,
int n,
int k,
int flags
);