Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/22/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?sfrk

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

Syntax

call ssfrk(transr, uplo, trans, n, k, alpha, a, lda, beta, c)

call dsfrk(transr, uplo, trans, n, k, alpha, a, lda, beta, c)

Include Files

  • mkl.fi

Description

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.

Input Parameters

transr

CHARACTER*1.

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

CHARACTER*1. 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

CHARACTER*1. 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;

n

INTEGER. Specifies the order of the matrix C. The value of n must be at least zero.

k

INTEGER. 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

REAL for ssfrk

DOUBLE PRECISION for dsfrk

Specifies the scalar alpha.

a

REAL for ssfrk

DOUBLE PRECISION for dsfrk

Array, DIMENSION(lda,ka), where ka is k when trans = 'N' or 'n', and is n otherwise. 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

INTEGER. Specifies the leading dimension of a as declared in the calling (sub)program. When trans = 'N' or 'n', then lda must be at least max(1,n), otherwise lda must be at least max(1, k).

beta

REAL for ssfrk

DOUBLE PRECISION for dsfrk

Specifies the scalar beta.

c

REAL for ssfrk

DOUBLE PRECISION for dsfrk

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;