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

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804