Matrix-matrix multiply

SSYMM/DSYMM/CHEMM/CSYMM/ZHEMM/ZSYMM

Name SSYMM/DSYMM/CHEMM/CSYMM/ZHEMM/ZSYMM

Matrix-matrix multiply

Purpose These subprograms compute the matrix-matrix products AB and BA, where A is a real symmetric, complex symmetric, or complex Hermitian matrix, and B is an m-by-nmatrix. The size of A, either m-by-mor n-by-n, depends on which matrix product is requested. The product can be stored in the result matrix (which is always of size m-by-n) or, optionally, can be added to or subtracted from it. This is handled in a convenient, but general, way by two scalar arguments, α and β, which are used as multipliers of the matrix product and the result matrix. Specifically, these subprograms compute matrix products of the forms:

C ← αAB + βC and C ← αBA + βC.

The structure of A is indicated by the name of the subprogram used:

SSYMM

or

DSYMM

A is a real symmetric matrix

CHEMM

or

ZHEMM

A is a complex Hermitian matrix

CSYMM

or

ZSYMM

A is a complex symmetric matrix

Matrix Because either triangle of A can be obtained from the other, you only need to

Storage provide one triangle of A. You can supply either the upper or the lower triangle of A, in a two-dimensional array large enough to hold the entire matrix. The other triangle of the array is not referenced.

Usage VECLIB:

CHARACTER*1

side, uplo

INTEGER*4

m, n, lda, ldb, ldc

REAL*4

alpha, beta, a(lda, *), b(ldb, *), c(ldc, n)

CALL SSYMM(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)

CHARACTER*1

side, uplo

INTEGER*4

m, n, lda, ldb, ldc

REAL*8

alpha, beta, a(lda, *), b(ldb, *), c(ldc, n)

CALL DSYMM(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)

CHARACTER*1

side, uplo

INTEGER*4

m, n, lda, ldb, ldc

COMPLEX*8

alpha, beta, a(lda, *), b(ldb, *), c(ldc, n)

CALL CHEMM(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)

Chapter 3 Basic Matrix Operations 265