?sfrk

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

Syntax

FORTRAN 77:

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

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

C:

lapack_int LAPACKE_<?>sfrk( int matrix_order, char transr, char uplo, char trans, lapack_int n, lapack_int k, <datatype> alpha, const <datatype>* a, lapack_int lda, <datatype> beta, <datatype>* c );

Include Files

The FORTRAN 77 interfaces are specified in the mkl_lapack.fi and mkl_lapack.h include files, and the C interfaces are specified in the mkl_lapacke.h include file.

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

The data types are given for the Fortran interface. A <datatype> placeholder, if present, is used for the C interface data types in the C interface section above. See C Interface Conventions for the C interface principal conventions and type defintions.

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, DIMENSION (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;


Submit feedback on this help topic

Copyright © 1994 - 2011, Intel Corporation. All rights reserved.