Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
mkl_sparse_?_syprd
Computes the symmetric triple product of a sparse matrix and a dense matrix and stores the result as a dense matrix.
Syntax
stat = mkl_sparse_s_syprd ( op, A, B, denselayoutB, ldb, alpha, beta, C, denselayoutC, ldc )
stat = mkl_sparse_d_syprd ( op, A, B, denselayoutB, ldb, alpha, beta, C, denselayoutC, ldc )
stat = mkl_sparse_c_syprd ( op, A, B, denselayoutB, ldb, alpha, beta, C, denselayoutC, ldc )
stat = mkl_sparse_z_syprd ( op, A, B, denselayoutB, ldb, alpha, beta, C, denselayoutC, ldc )
Include Files
mkl_spblas.f90
Description
The mkl_sparse_?_syprd routine performs a multiplication of three sparse matrices that results in a symmetric or Hermitian matrix \(C\).
\[C \leftarrow \alpha \cdot A \cdot B \cdot op(A) + \beta \cdot C\]
or
\[C \leftarrow \alpha \cdot op(A) \cdot B \cdot A + \beta \cdot C\]
depending on the matrix modifier operation . Here \(A\) is a sparse matrix, \(B\) and \(C\) are dense and symmetric (or Hermitian) matrices.
\(op()\) is the transpose (real precision) or conjugate transpose (complex precision) operator.
Input Parameters
op
C_INT .
Specifies operation on the input sparse matrix.
SPARSE_OPERATION_NON_TRANSPOSE |
Non-transpose case.
|
SPARSE_OPERATION_TRANSPOSE |
Transpose case. This is not supported for complex matrices.
|
SPARSE_OPERATION_CONJUGATE_TRANSPOSE |
Conjugate transpose case. This is not supported for real matrices.
|
A
SPARSE_MATRIX_T .
Handle which contains the sparse matrix, A .
B
SPARSE_MATRIX_T .
Input dense matrix. Only the upper triangular part of the matrix is used for computation.
denselayoutB
C_INT .
Structure that describes the storage scheme for the dense matrix.
SPARSE_LAYOUT_COLUMN_MAJOR |
Store elements in a column-major layout. |
SPARSE_LAYOUT_ROW_MAJOR |
Store elements in a row-major layout. |
ldb
SPARSE_MATRIX_T .
Leading dimension of dense matrix \(B\).
alpha
Scalar parameter, \(\alpha\).
C_FLOAT |
for mkl_sparse_s_syprd |
C_DOUBLE |
for mkl_sparse_d_syprd |
C_FLOAT_COMPLEX |
for mkl_sparse_c_syprd |
C_DOUBLE_COMPLEX |
for mkl_sparse_z_syprd |
beta
Scalar parameter, \(\beta\).
C_FLOAT |
for mkl_sparse_s_syprd |
C_DOUBLE |
for mkl_sparse_d_syprd |
C_FLOAT_COMPLEX |
for mkl_sparse_c_syprd |
C_DOUBLE_COMPLEX |
for mkl_sparse_z_syprd |
denselayoutC
C_INT .
Structure that describes the storage scheme for the dense matrix \(C\).
SPARSE_LAYOUT_COLUMN_MAJOR |
Store elements in a column-major layout. |
SPARSE_LAYOUT_ROW_MAJOR |
Store elements in a row-major layout. |
ldc
C_INT.
Leading dimension of matrix \(C\).
Output Parameters
C
SPARSE_MATRIX_T .
Handle which contains the resulting dense matrix \(C\). Only the upper-triangular part of the matrix is computed.
stat
INTEGER
Value indicating whether the operation was successful, and if not, why:
SPARSE_STATUS_SUCCESS |
The operation was successful. |
SPARSE_STATUS_NOT_INITIALIZED |
The routine encountered an empty handle or matrix array. |
SPARSE_STATUS_ALLOC_FAILED |
Internal memory allocation failed. |
SPARSE_STATUS_INVALID_VALUE |
The input parameters contain an invalid value. |
SPARSE_STATUS_EXECUTION_FAILED |
Execution failed. |
SPARSE_STATUS_INTERNAL_ERROR |
An error in algorithm implementation occurred. |
SPARSE_STATUS_NOT_SUPPORTED |
The requested operation is not supported. |
Return Values
See Output Parameter, stat.