Intel® oneAPI Math Kernel Library Developer Reference - C
Performs a symmetric rank-k operation for matrix in RFP format.
lapack_int LAPACKE_ssfrk (int matrix_layout , char transr , char uplo , char trans , lapack_int n , lapack_int k , float alpha , const float * a , lapack_int lda , float beta , float * c );
lapack_int LAPACKE_dsfrk (int matrix_layout , char transr , char uplo , char trans , lapack_int n , lapack_int k , double alpha , const double * a , lapack_int lda , double beta , double * c );
The ?sfrk routines perform a matrix-matrix operation using symmetric matrices. The operation is defined as
C := alpha*A*AT + beta*C,
or
C := alpha*AT*A + beta*C,
where:
alpha and beta are scalars,
C is an n-by-n symmetric matrix in rectangular full packed (RFP) format,
A is an n-by-k matrix in the first case and a k-by-n matrix in the second case.
Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major ( LAPACK_COL_MAJOR ).
if transr = 'N' or 'n', the normal form of RFP C is stored;
if transr= 'T' or 't', the transpose form of RFP C is stored.
Specifies whether the upper or lower triangular part of the array c is used.
If uplo = 'U' or 'u', then the upper triangular part of the array c is used.
If uplo = 'L' or 'l', then the low triangular part of the array c is used.
Specifies the operation:
if trans = 'N' or 'n', then C := alpha*A*AT + beta*C;
if trans = 'T' or 't', then C := alpha*AT*A + beta*C;
Specifies the order of the matrix C. The value of n must be at least zero.
On entry with trans = 'N' or 'n', k specifies the number of columns of the matrix A, and on entry with trans = 'T' or 't', k specifies the number of rows of the matrix A.
The value of k must be at least zero.
Specifies the scalar alpha.
Array, size max(1,lda*ka), where ka is in the following table:
Col_major |
Row_major |
|
trans = 'N' |
k | n |
trans = 'T' |
n | k |
Specifies the leading dimension of a as declared in the calling (sub)program. lda is defined by the following table:
Col_major |
Row_major |
|
trans = 'N' |
max(1,n) | max(1,k) |
trans = 'T' |
max(1,k) | max(1,n) |
Specifies the scalar beta.
Array, size (n*(n+1)/2 ). Before entry contains the symmetric matrix C in RFP format.
If trans = 'N' or 'n', then c contains C := alpha*A*A' + beta*C;
if trans = 'T' or 't', then c contains C := alpha*A'*A + beta*C;
This function returns a value info.
If info = 0, the execution is successful.
If info < 0, the i-th parameter had an illegal value.
If info = -1011, memory allocation error occurred.