Developer Reference

Contents

?sfrk

Performs a symmetric rank-k operation for matrix in RFP format.

Syntax

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
);
Include Files
  • mkl.h
Description
The
?sfrk
routines perform a matrix-matrix operation using symmetric matrices. The operation is defined as
C := alpha*A*A
T
+ beta*C,
or
C := alpha*A
T
*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.
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major (
LAPACK_ROW_MAJOR
) or column major (
LAPACK_COL_MAJOR
).
transr
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.
uplo
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.
trans
Specifies the operation:
if
trans
= 'N'
or
'n'
, then
C
:=
alpha
*
A
*
A
T
+
beta
*
C
;
if
trans
= 'T'
or
't'
, then
C
:=
alpha
*
A
T
*
A
+
beta
*
C
;
n
Specifies the order of the matrix
C
. The value of
n
must be at least zero.
k
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.
alpha
Specifies the scalar
alpha
.
a
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
Before entry with
trans
=
'N'
or
'n'
, the leading
n
-by-
k
part of the array
a
must contain the matrix
A
, otherwise the leading
k
-by-
n
part of the array
a
must contain the matrix
A
.
lda
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
)
beta
Specifies the scalar
beta
.
c
Array, size
(
n
*(
n
+1)/2 )
. Before entry contains the symmetric matrix
C
in RFP format.
Output Parameters
c
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
;
Return Values
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.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.