Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 3/31/2023
Public

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

Document Table of Contents

cblas_?syrk

Performs a symmetric rank-k update.

Syntax

void cblas_ssyrk (const CBLAS_LAYOUT Layout, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const MKL_INT n, const MKL_INT k, const float alpha, const float *a, const MKL_INT lda, const float beta, float *c, const MKL_INT ldc);

void cblas_dsyrk (const CBLAS_LAYOUT Layout, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const MKL_INT n, const MKL_INT k, const double alpha, const double *a, const MKL_INT lda, const double beta, double *c, const MKL_INT ldc);

void cblas_csyrk (const CBLAS_LAYOUT Layout, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const MKL_INT n, const MKL_INT k, const void *alpha, const void *a, const MKL_INT lda, const void *beta, void *c, const MKL_INT ldc);

void cblas_zsyrk (const CBLAS_LAYOUT Layout, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const MKL_INT n, const MKL_INT k, const void *alpha, const void *a, const MKL_INT lda, const void *beta, void *c, const MKL_INT ldc);

Include Files
  • mkl.h
Description

The ?syrk routines perform a rank-k matrix-matrix operation for a symmetric matrix C using a general matrix A . The operation is defined as:

C := alpha*A*A' + beta*C,

or

C := alpha*A'*A + beta*C,

where:

alpha and beta are scalars,

C is an n-by-n symmetric matrix,

A is an n-by-k matrix in the first case and a k-by-n matrix in the second case.

Input Parameters
Layout

Specifies whether two-dimensional array storage is row-major (CblasRowMajor) or column-major (CblasColMajor).

uplo

Specifies whether the upper or lower triangular part of the array c is used.

If uplo = CblasUpper, then the upper triangular part of the array c is used.

If uplo = CblasLower, then the low triangular part of the array c is used.

trans

Specifies the operation:

if trans=CblasNoTrans, then C := alpha*A*A' + beta*C;

if trans=CblasTrans, then C := alpha*A'*A + beta*C;

if trans=CblasConjTrans, then C := alpha*A'*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=CblasNoTrans, k specifies the number of columns of the matrix a, and on entry with trans=CblasTrans or trans=CblasConjTrans , 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 lda* ka, where ka is k when trans=CblasNoTrans, and is n otherwise. Before entry with trans=CblasNoTrans, 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.

 

trans=CblasNoTrans

trans=CblasConjTrans

Layout = CblasColMajor

Array, size lda*k.

Before entry, the leading n-by-k part of the array a must contain the matrix A.

Array, size lda*n.

Before entry, the leading k-by-n part of the array a must contain the matrix A.

Layout = CblasRowMajor

Array, size lda*n.

Before entry, the leading k-by-n part of the array a must contain the matrix A.

Array, size lda*k.

Before entry, the leading n-by-k part of the array a must contain the matrix A.

lda
 

trans=CblasNoTrans

trans=CblasConjTrans

Layout = CblasColMajor

lda must be at least max(1, n).

lda must be at least max(1, k)

Layout = CblasRowMajor

lda must be at least max(1, k)

lda must be at least max(1, n).

beta

Specifies the scalar beta.

c

Array, size ldc* n. Before entry with uplo = CblasUpper, the leading n-by-n upper triangular part of the array c must contain the upper triangular part of the symmetric matrix and the strictly lower triangular part of c is not referenced.

Before entry with uplo = CblasLower, the leading n-by-n lower triangular part of the array c must contain the lower triangular part of the symmetric matrix and the strictly upper triangular part of c is not referenced.

ldc

Specifies the leading dimension of c as declared in the calling (sub)program. The value of ldc must be at least max(1, n).

Output Parameters
c

With uplo = CblasUpper, the upper triangular part of the array c is overwritten by the upper triangular part of the updated matrix.

With uplo = CblasLower, the lower triangular part of the array c is overwritten by the lower triangular part of the updated matrix.