Intel® Math Kernel Library 2018 Developer Reference - C
Computes the symmetric product of three sparse matrices and stores the result as a dense matrix.
sparse_status_t mkl_sparse_s_syprd (const sparse_operation_t op , const sparse_matrix_t A, float *B, const sparse_layout_t layoutB, const MKL_INT ldb, float alpha, , float beta, float *C, const sparse_layout_t layoutC, const MKL_INT ldc);
sparse_status_t mkl_sparse_d_syprd (const sparse_operation_t op , const sparse_matrix_t A, float *B, const sparse_layout_t layoutB, const MKL_INT ldb, float alpha, , float beta, float *C, const sparse_layout_t layoutC, const MKL_INT ldc);
sparse_status_t mkl_sparse_c_syprd (const sparse_operation_t op , const sparse_matrix_t A, float *B, const sparse_layout_t layoutB, const MKL_INT ldb, float alpha, , float beta, float *C, const sparse_layout_t layoutC, const MKL_INT ldc);
sparse_status_t mkl_sparse_z_syprd (const sparse_operation_t op , const sparse_matrix_t A, float *B, const sparse_layout_t layoutB, const MKL_INT ldb, float alpha, , float beta, float *C, const sparse_layout_t layoutC, const MKL_INT ldc);
The mkl_sparse_?_syprd routine performs a multiplication of three sparse matrices that results in a symmetric or Hermitian matrix, C.
C:=alpha*A*B*opA(A) + beta*Cor
C:=alpha*opA(A)*B*A + beta*Cdepending on the input operation variable.
A is a sparse matrix with a general structure. B, and C are dense and symmetric (or Hermitian) matrices. opA(*) is the transpose (real precision) or conjugate transpose (complex precision) operator.
This routine supports only the sorted CSR format for the input matrix. If the data is unsorted, call the mkl_sparse_order routine before either mkl_sparse_sypr or mkl_sparse_?_syprd.
operation |
Specifies operation on the input sparse matrices.
|
||||||
A |
Handle containing a sparse matrix in the internal data structure. |
||||||
B |
Input dense matrix. Only the upper triangular part of the matrix is used for computation. |
||||||
denselayoutB |
Structure that describes the storage scheme for the dense matrix.
|
||||||
ldb |
Leading dimension of matrix B. |
||||||
alpha |
Scalar parameter. |
||||||
beta |
Scalar parameter. NoteSince the upper triangular part of matrix C is the only portion that is processed, set real values of alpha and beta in the complex case to obtain the Hermitian matrix. |
||||||
denselayoutC |
Structure that describes the storage scheme for the dense matrix.
|
||||||
ldc |
Leading dimension of matrix C. |
C |
Handle containing the resulting dense matrix. Only the upper-triangular part of the matrix is computed. |
The function returns a value indicating whether the operation was successful, or the reason why it failed.
SPARSE_STATUS_SUCCESS |
The operation was successful. |
SPARSE_STATUS_NOT_INITIALIZED |
The routine encountered an empty handle or matrix array. |
SPARSE_STATUS_ALLOC_FAILED |
The internal memory allocation failed. |
SPARSE_STATUS_INVALID_VALUE |
The input parameters contain an invalid value. |
SPARSE_STATUS_EXECUTION_FAILED |
The execution failed. |
SPARSE_STATUS_INTERNAL_ERROR |
An error occurred in the implementation of the algorithm. |
SPARSE_STATUS_NOT_SUPPORTED |
The requested operation is not supported. |