hemm(3)

NAME
hemm - {he,sy}mm: Hermitian/symmetric matrix-matrix multiply

SYNOPSIS

  Functions
subroutine chemm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
CHEMM
subroutine csymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
CSYMM
subroutine dsymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
DSYMM
subroutine ssymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
SSYMM
subroutine zhemm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
ZHEMM
subroutine zsymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
ZSYMM

Detailed Description

Function Documentation

  subroutine chemm (character side, character uplo, integer m, integer n, complex alpha, complex, dimension(lda,*) a, integer lda, complex, dimension(ldb,*) b, integer ldb, complex beta, complex, dimension(ldc,*) c, integer ldc)

CHEMM

Purpose:

     CHEMM  performs one of the matrix-matrix operations
        C := alpha*A*B + beta*C,
     or
        C := alpha*B*A + beta*C,
     where alpha and beta are scalars, A is an hermitian matrix and  B and
     C are m by n matrices.

Parameters
    SIDE

              SIDE is CHARACTER*1
               On entry,  SIDE  specifies whether  the  hermitian matrix  A
               appears on the  left or right  in the  operation as follows:
                  SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
                  SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,

    UPLO

              UPLO is CHARACTER*1
               On  entry,   UPLO  specifies  whether  the  upper  or  lower
               triangular  part  of  the  hermitian  matrix   A  is  to  be
               referenced as follows:
                  UPLO = 'U' or 'u'   Only the upper triangular part of the
                                      hermitian matrix is to be referenced.
                  UPLO = 'L' or 'l'   Only the lower triangular part of the
                                      hermitian matrix is to be referenced.

    M

              M is INTEGER
               On entry,  M  specifies the number of rows of the matrix  C.
               M  must be at least zero.

    N

              N is INTEGER
               On entry, N specifies the number of columns of the matrix C.
               N  must be at least zero.

    ALPHA

              ALPHA is COMPLEX
               On entry, ALPHA specifies the scalar alpha.

    A

              A is COMPLEX array, dimension ( LDA, ka ), where ka is
               m  when  SIDE = 'L' or 'l'  and is n  otherwise.
               Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
               the array  A  must contain the  hermitian matrix,  such that
               when  UPLO = 'U' or 'u', the leading m by m upper triangular
               part of the array  A  must contain the upper triangular part
               of the  hermitian matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  m by m  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  hermitian
               matrix and the  strictly upper triangular part of  A  is not
               referenced.
               Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
               the array  A  must contain the  hermitian matrix,  such that
               when  UPLO = 'U' or 'u', the leading n by n upper triangular
               part of the array  A  must contain the upper triangular part
               of the  hermitian matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  n by n  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  hermitian
               matrix and the  strictly upper triangular part of  A  is not
               referenced.
               Note that the imaginary parts  of the diagonal elements need
               not be set, they are assumed to be zero.

    LDA

              LDA is INTEGER
               On entry, LDA specifies the first dimension of A as declared
               in the  calling (sub) program. When  SIDE = 'L' or 'l'  then
               LDA must be at least  max( 1, m ), otherwise  LDA must be at
               least max( 1, n ).

    B

              B is COMPLEX array, dimension ( LDB, N )
               Before entry, the leading  m by n part of the array  B  must
               contain the matrix B.

    LDB

              LDB is INTEGER
               On entry, LDB specifies the first dimension of B as declared
               in  the  calling  (sub)  program.   LDB  must  be  at  least
               max( 1, m ).

    BETA

              BETA is COMPLEX
               On entry,  BETA  specifies the scalar  beta.  When  BETA  is
               supplied as zero then C need not be set on input.

    C

              C is COMPLEX array, dimension ( LDC, N )
               Before entry, the leading  m by n  part of the array  C must
               contain the matrix  C,  except when  beta  is zero, in which
               case C need not be set on entry.
               On exit, the array  C  is overwritten by the  m by n updated
               matrix.

    LDC

              LDC is INTEGER
               On entry, LDC specifies the first dimension of C as declared
               in  the  calling  (sub)  program.   LDC  must  be  at  least
               max( 1, m ).

Author
    Univ. of Tennessee

    Univ. of California Berkeley

    Univ. of Colorado Denver

    NAG Ltd.

Further Details:

      Level 3 Blas routine.
      -- Written on 8-February-1989.
         Jack Dongarra, Argonne National Laboratory.
         Iain Duff, AERE Harwell.
         Jeremy Du Croz, Numerical Algorithms Group Ltd.
         Sven Hammarling, Numerical Algorithms Group Ltd.

Definition at line 190 of file chemm.f.

  subroutine csymm (character side, character uplo, integer m, integer n, complex alpha, complex, dimension(lda,*) a, integer lda, complex, dimension(ldb,*) b, integer ldb, complex beta, complex, dimension(ldc,*) c, integer ldc)

CSYMM

Purpose:

     CSYMM  performs one of the matrix-matrix operations
        C := alpha*A*B + beta*C,
     or
        C := alpha*B*A + beta*C,
     where  alpha and beta are scalars, A is a symmetric matrix and  B and
     C are m by n matrices.

Parameters
    SIDE

              SIDE is CHARACTER*1
               On entry,  SIDE  specifies whether  the  symmetric matrix  A
               appears on the  left or right  in the  operation as follows:
                  SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
                  SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,

    UPLO

              UPLO is CHARACTER*1
               On  entry,   UPLO  specifies  whether  the  upper  or  lower
               triangular  part  of  the  symmetric  matrix   A  is  to  be
               referenced as follows:
                  UPLO = 'U' or 'u'   Only the upper triangular part of the
                                      symmetric matrix is to be referenced.
                  UPLO = 'L' or 'l'   Only the lower triangular part of the
                                      symmetric matrix is to be referenced.

    M

              M is INTEGER
               On entry,  M  specifies the number of rows of the matrix  C.
               M  must be at least zero.

    N

              N is INTEGER
               On entry, N specifies the number of columns of the matrix C.
               N  must be at least zero.

    ALPHA

              ALPHA is COMPLEX
               On entry, ALPHA specifies the scalar alpha.

    A

              A is COMPLEX array, dimension ( LDA, ka ), where ka is
               m  when  SIDE = 'L' or 'l'  and is n  otherwise.
               Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
               the array  A  must contain the  symmetric matrix,  such that
               when  UPLO = 'U' or 'u', the leading m by m upper triangular
               part of the array  A  must contain the upper triangular part
               of the  symmetric matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  m by m  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  symmetric
               matrix and the  strictly upper triangular part of  A  is not
               referenced.
               Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
               the array  A  must contain the  symmetric matrix,  such that
               when  UPLO = 'U' or 'u', the leading n by n upper triangular
               part of the array  A  must contain the upper triangular part
               of the  symmetric matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  n by n  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  symmetric
               matrix and the  strictly upper triangular part of  A  is not
               referenced.

    LDA

              LDA is INTEGER
               On entry, LDA specifies the first dimension of A as declared
               in the  calling (sub) program. When  SIDE = 'L' or 'l'  then
               LDA must be at least  max( 1, m ), otherwise  LDA must be at
               least max( 1, n ).

    B

              B is COMPLEX array, dimension ( LDB, N )
               Before entry, the leading  m by n part of the array  B  must
               contain the matrix B.

    LDB

              LDB is INTEGER
               On entry, LDB specifies the first dimension of B as declared
               in  the  calling  (sub)  program.   LDB  must  be  at  least
               max( 1, m ).

    BETA

              BETA is COMPLEX
               On entry,  BETA  specifies the scalar  beta.  When  BETA  is
               supplied as zero then C need not be set on input.

    C

              C is COMPLEX array, dimension ( LDC, N )
               Before entry, the leading  m by n  part of the array  C must
               contain the matrix  C,  except when  beta  is zero, in which
               case C need not be set on entry.
               On exit, the array  C  is overwritten by the  m by n updated
               matrix.

    LDC

              LDC is INTEGER
               On entry, LDC specifies the first dimension of C as declared
               in  the  calling  (sub)  program.   LDC  must  be  at  least
               max( 1, m ).

Author
    Univ. of Tennessee

    Univ. of California Berkeley

    Univ. of Colorado Denver

    NAG Ltd.

Further Details:

      Level 3 Blas routine.
      -- Written on 8-February-1989.
         Jack Dongarra, Argonne National Laboratory.
         Iain Duff, AERE Harwell.
         Jeremy Du Croz, Numerical Algorithms Group Ltd.
         Sven Hammarling, Numerical Algorithms Group Ltd.

Definition at line 188 of file csymm.f.

  subroutine dsymm (character side, character uplo, integer m, integer n, double precision alpha, double precision, dimension(lda,*) a, integer lda, double precision, dimension(ldb,*) b, integer ldb, double precision beta, double precision, dimension(ldc,*) c, integer ldc)

DSYMM

Purpose:

     DSYMM  performs one of the matrix-matrix operations
        C := alpha*A*B + beta*C,
     or
        C := alpha*B*A + beta*C,
     where alpha and beta are scalars,  A is a symmetric matrix and  B and
     C are  m by n matrices.

Parameters
    SIDE

              SIDE is CHARACTER*1
               On entry,  SIDE  specifies whether  the  symmetric matrix  A
               appears on the  left or right  in the  operation as follows:
                  SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
                  SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,

    UPLO

              UPLO is CHARACTER*1
               On  entry,   UPLO  specifies  whether  the  upper  or  lower
               triangular  part  of  the  symmetric  matrix   A  is  to  be
               referenced as follows:
                  UPLO = 'U' or 'u'   Only the upper triangular part of the
                                      symmetric matrix is to be referenced.
                  UPLO = 'L' or 'l'   Only the lower triangular part of the
                                      symmetric matrix is to be referenced.

    M

              M is INTEGER
               On entry,  M  specifies the number of rows of the matrix  C.
               M  must be at least zero.

    N

              N is INTEGER
               On entry, N specifies the number of columns of the matrix C.
               N  must be at least zero.

    ALPHA

              ALPHA is DOUBLE PRECISION.
               On entry, ALPHA specifies the scalar alpha.

    A

              A is DOUBLE PRECISION array, dimension ( LDA, ka ), where ka is
               m  when  SIDE = 'L' or 'l'  and is  n otherwise.
               Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
               the array  A  must contain the  symmetric matrix,  such that
               when  UPLO = 'U' or 'u', the leading m by m upper triangular
               part of the array  A  must contain the upper triangular part
               of the  symmetric matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  m by m  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  symmetric
               matrix and the  strictly upper triangular part of  A  is not
               referenced.
               Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
               the array  A  must contain the  symmetric matrix,  such that
               when  UPLO = 'U' or 'u', the leading n by n upper triangular
               part of the array  A  must contain the upper triangular part
               of the  symmetric matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  n by n  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  symmetric
               matrix and the  strictly upper triangular part of  A  is not
               referenced.

    LDA

              LDA is INTEGER
               On entry, LDA specifies the first dimension of A as declared
               in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
               LDA must be at least  max( 1, m ), otherwise  LDA must be at
               least  max( 1, n ).

    B

              B is DOUBLE PRECISION array, dimension ( LDB, N )
               Before entry, the leading  m by n part of the array  B  must
               contain the matrix B.

    LDB

              LDB is INTEGER
               On entry, LDB specifies the first dimension of B as declared
               in  the  calling  (sub)  program.   LDB  must  be  at  least
               max( 1, m ).

    BETA

              BETA is DOUBLE PRECISION.
               On entry,  BETA  specifies the scalar  beta.  When  BETA  is
               supplied as zero then C need not be set on input.

    C

              C is DOUBLE PRECISION array, dimension ( LDC, N )
               Before entry, the leading  m by n  part of the array  C must
               contain the matrix  C,  except when  beta  is zero, in which
               case C need not be set on entry.
               On exit, the array  C  is overwritten by the  m by n updated
               matrix.

    LDC

              LDC is INTEGER
               On entry, LDC specifies the first dimension of C as declared
               in  the  calling  (sub)  program.   LDC  must  be  at  least
               max( 1, m ).

Author
    Univ. of Tennessee

    Univ. of California Berkeley

    Univ. of Colorado Denver

    NAG Ltd.

Further Details:

      Level 3 Blas routine.
      -- Written on 8-February-1989.
         Jack Dongarra, Argonne National Laboratory.
         Iain Duff, AERE Harwell.
         Jeremy Du Croz, Numerical Algorithms Group Ltd.
         Sven Hammarling, Numerical Algorithms Group Ltd.

Definition at line 188 of file dsymm.f.

  subroutine ssymm (character side, character uplo, integer m, integer n, real alpha, real, dimension(lda,*) a, integer lda, real, dimension(ldb,*) b, integer ldb, real beta, real, dimension(ldc,*) c, integer ldc)

SSYMM

Purpose:

     SSYMM  performs one of the matrix-matrix operations
        C := alpha*A*B + beta*C,
     or
        C := alpha*B*A + beta*C,
     where alpha and beta are scalars,  A is a symmetric matrix and  B and
     C are  m by n matrices.

Parameters
    SIDE

              SIDE is CHARACTER*1
               On entry,  SIDE  specifies whether  the  symmetric matrix  A
               appears on the  left or right  in the  operation as follows:
                  SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
                  SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,

    UPLO

              UPLO is CHARACTER*1
               On  entry,   UPLO  specifies  whether  the  upper  or  lower
               triangular  part  of  the  symmetric  matrix   A  is  to  be
               referenced as follows:
                  UPLO = 'U' or 'u'   Only the upper triangular part of the
                                      symmetric matrix is to be referenced.
                  UPLO = 'L' or 'l'   Only the lower triangular part of the
                                      symmetric matrix is to be referenced.

    M

              M is INTEGER
               On entry,  M  specifies the number of rows of the matrix  C.
               M  must be at least zero.

    N

              N is INTEGER
               On entry, N specifies the number of columns of the matrix C.
               N  must be at least zero.

    ALPHA

              ALPHA is REAL
               On entry, ALPHA specifies the scalar alpha.

    A

              A is REAL array, dimension ( LDA, ka ), where ka is
               m  when  SIDE = 'L' or 'l'  and is  n otherwise.
               Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
               the array  A  must contain the  symmetric matrix,  such that
               when  UPLO = 'U' or 'u', the leading m by m upper triangular
               part of the array  A  must contain the upper triangular part
               of the  symmetric matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  m by m  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  symmetric
               matrix and the  strictly upper triangular part of  A  is not
               referenced.
               Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
               the array  A  must contain the  symmetric matrix,  such that
               when  UPLO = 'U' or 'u', the leading n by n upper triangular
               part of the array  A  must contain the upper triangular part
               of the  symmetric matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  n by n  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  symmetric
               matrix and the  strictly upper triangular part of  A  is not
               referenced.

    LDA

              LDA is INTEGER
               On entry, LDA specifies the first dimension of A as declared
               in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
               LDA must be at least  max( 1, m ), otherwise  LDA must be at
               least  max( 1, n ).

    B

              B is REAL array, dimension ( LDB, N )
               Before entry, the leading  m by n part of the array  B  must
               contain the matrix B.

    LDB

              LDB is INTEGER
               On entry, LDB specifies the first dimension of B as declared
               in  the  calling  (sub)  program.   LDB  must  be  at  least
               max( 1, m ).

    BETA

              BETA is REAL
               On entry,  BETA  specifies the scalar  beta.  When  BETA  is
               supplied as zero then C need not be set on input.

    C

              C is REAL array, dimension ( LDC, N )
               Before entry, the leading  m by n  part of the array  C must
               contain the matrix  C,  except when  beta  is zero, in which
               case C need not be set on entry.
               On exit, the array  C  is overwritten by the  m by n updated
               matrix.

    LDC

              LDC is INTEGER
               On entry, LDC specifies the first dimension of C as declared
               in  the  calling  (sub)  program.   LDC  must  be  at  least
               max( 1, m ).

Author
    Univ. of Tennessee

    Univ. of California Berkeley

    Univ. of Colorado Denver

    NAG Ltd.

Further Details:

      Level 3 Blas routine.
      -- Written on 8-February-1989.
         Jack Dongarra, Argonne National Laboratory.
         Iain Duff, AERE Harwell.
         Jeremy Du Croz, Numerical Algorithms Group Ltd.
         Sven Hammarling, Numerical Algorithms Group Ltd.

Definition at line 188 of file ssymm.f.

  subroutine zhemm (character side, character uplo, integer m, integer n, complex*16 alpha, complex*16, dimension(lda,*) a, integer lda, complex*16, dimension(ldb,*) b, integer ldb, complex*16 beta, complex*16, dimension(ldc,*) c, integer ldc)

ZHEMM

Purpose:

     ZHEMM  performs one of the matrix-matrix operations
        C := alpha*A*B + beta*C,
     or
        C := alpha*B*A + beta*C,
     where alpha and beta are scalars, A is an hermitian matrix and  B and
     C are m by n matrices.

Parameters
    SIDE

              SIDE is CHARACTER*1
               On entry,  SIDE  specifies whether  the  hermitian matrix  A
               appears on the  left or right  in the  operation as follows:
                  SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
                  SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,

    UPLO

              UPLO is CHARACTER*1
               On  entry,   UPLO  specifies  whether  the  upper  or  lower
               triangular  part  of  the  hermitian  matrix   A  is  to  be
               referenced as follows:
                  UPLO = 'U' or 'u'   Only the upper triangular part of the
                                      hermitian matrix is to be referenced.
                  UPLO = 'L' or 'l'   Only the lower triangular part of the
                                      hermitian matrix is to be referenced.

    M

              M is INTEGER
               On entry,  M  specifies the number of rows of the matrix  C.
               M  must be at least zero.

    N

              N is INTEGER
               On entry, N specifies the number of columns of the matrix C.
               N  must be at least zero.

    ALPHA

              ALPHA is COMPLEX*16
               On entry, ALPHA specifies the scalar alpha.

    A

              A is COMPLEX*16 array, dimension ( LDA, ka ), where ka is
               m  when  SIDE = 'L' or 'l'  and is n  otherwise.
               Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
               the array  A  must contain the  hermitian matrix,  such that
               when  UPLO = 'U' or 'u', the leading m by m upper triangular
               part of the array  A  must contain the upper triangular part
               of the  hermitian matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  m by m  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  hermitian
               matrix and the  strictly upper triangular part of  A  is not
               referenced.
               Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
               the array  A  must contain the  hermitian matrix,  such that
               when  UPLO = 'U' or 'u', the leading n by n upper triangular
               part of the array  A  must contain the upper triangular part
               of the  hermitian matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  n by n  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  hermitian
               matrix and the  strictly upper triangular part of  A  is not
               referenced.
               Note that the imaginary parts  of the diagonal elements need
               not be set, they are assumed to be zero.

    LDA

              LDA is INTEGER
               On entry, LDA specifies the first dimension of A as declared
               in the  calling (sub) program. When  SIDE = 'L' or 'l'  then
               LDA must be at least  max( 1, m ), otherwise  LDA must be at
               least max( 1, n ).

    B

              B is COMPLEX*16 array, dimension ( LDB, N )
               Before entry, the leading  m by n part of the array  B  must
               contain the matrix B.

    LDB

              LDB is INTEGER
               On entry, LDB specifies the first dimension of B as declared
               in  the  calling  (sub)  program.   LDB  must  be  at  least
               max( 1, m ).

    BETA

              BETA is COMPLEX*16
               On entry,  BETA  specifies the scalar  beta.  When  BETA  is
               supplied as zero then C need not be set on input.

    C

              C is COMPLEX*16 array, dimension ( LDC, N )
               Before entry, the leading  m by n  part of the array  C must
               contain the matrix  C,  except when  beta  is zero, in which
               case C need not be set on entry.
               On exit, the array  C  is overwritten by the  m by n updated
               matrix.

    LDC

              LDC is INTEGER
               On entry, LDC specifies the first dimension of C as declared
               in  the  calling  (sub)  program.   LDC  must  be  at  least
               max( 1, m ).

Author
    Univ. of Tennessee

    Univ. of California Berkeley

    Univ. of Colorado Denver

    NAG Ltd.

Further Details:

      Level 3 Blas routine.
      -- Written on 8-February-1989.
         Jack Dongarra, Argonne National Laboratory.
         Iain Duff, AERE Harwell.
         Jeremy Du Croz, Numerical Algorithms Group Ltd.
         Sven Hammarling, Numerical Algorithms Group Ltd.

Definition at line 190 of file zhemm.f.

  subroutine zsymm (character side, character uplo, integer m, integer n, complex*16 alpha, complex*16, dimension(lda,*) a, integer lda, complex*16, dimension(ldb,*) b, integer ldb, complex*16 beta, complex*16, dimension(ldc,*) c, integer ldc)

ZSYMM

Purpose:

     ZSYMM  performs one of the matrix-matrix operations
        C := alpha*A*B + beta*C,
     or
        C := alpha*B*A + beta*C,
     where  alpha and beta are scalars, A is a symmetric matrix and  B and
     C are m by n matrices.

Parameters
    SIDE

              SIDE is CHARACTER*1
               On entry,  SIDE  specifies whether  the  symmetric matrix  A
               appears on the  left or right  in the  operation as follows:
                  SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
                  SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,

    UPLO

              UPLO is CHARACTER*1
               On  entry,   UPLO  specifies  whether  the  upper  or  lower
               triangular  part  of  the  symmetric  matrix   A  is  to  be
               referenced as follows:
                  UPLO = 'U' or 'u'   Only the upper triangular part of the
                                      symmetric matrix is to be referenced.
                  UPLO = 'L' or 'l'   Only the lower triangular part of the
                                      symmetric matrix is to be referenced.

    M

              M is INTEGER
               On entry,  M  specifies the number of rows of the matrix  C.
               M  must be at least zero.

    N

              N is INTEGER
               On entry, N specifies the number of columns of the matrix C.
               N  must be at least zero.

    ALPHA

              ALPHA is COMPLEX*16
               On entry, ALPHA specifies the scalar alpha.

    A

              A is COMPLEX*16 array, dimension ( LDA, ka ), where ka is
               m  when  SIDE = 'L' or 'l'  and is n  otherwise.
               Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
               the array  A  must contain the  symmetric matrix,  such that
               when  UPLO = 'U' or 'u', the leading m by m upper triangular
               part of the array  A  must contain the upper triangular part
               of the  symmetric matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  m by m  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  symmetric
               matrix and the  strictly upper triangular part of  A  is not
               referenced.
               Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
               the array  A  must contain the  symmetric matrix,  such that
               when  UPLO = 'U' or 'u', the leading n by n upper triangular
               part of the array  A  must contain the upper triangular part
               of the  symmetric matrix and the  strictly  lower triangular
               part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
               the leading  n by n  lower triangular part  of the  array  A
               must  contain  the  lower triangular part  of the  symmetric
               matrix and the  strictly upper triangular part of  A  is not
               referenced.

    LDA

              LDA is INTEGER
               On entry, LDA specifies the first dimension of A as declared
               in the  calling (sub) program. When  SIDE = 'L' or 'l'  then
               LDA must be at least  max( 1, m ), otherwise  LDA must be at
               least max( 1, n ).

    B

              B is COMPLEX*16 array, dimension ( LDB, N )
               Before entry, the leading  m by n part of the array  B  must
               contain the matrix B.

    LDB

              LDB is INTEGER
               On entry, LDB specifies the first dimension of B as declared
               in  the  calling  (sub)  program.   LDB  must  be  at  least
               max( 1, m ).

    BETA

              BETA is COMPLEX*16
               On entry,  BETA  specifies the scalar  beta.  When  BETA  is
               supplied as zero then C need not be set on input.

    C

              C is COMPLEX*16 array, dimension ( LDC, N )
               Before entry, the leading  m by n  part of the array  C must
               contain the matrix  C,  except when  beta  is zero, in which
               case C need not be set on entry.
               On exit, the array  C  is overwritten by the  m by n updated
               matrix.

    LDC

              LDC is INTEGER
               On entry, LDC specifies the first dimension of C as declared
               in  the  calling  (sub)  program.   LDC  must  be  at  least
               max( 1, m ).

Author
    Univ. of Tennessee

    Univ. of California Berkeley

    Univ. of Colorado Denver

    NAG Ltd.

Further Details:

      Level 3 Blas routine.
      -- Written on 8-February-1989.
         Jack Dongarra, Argonne National Laboratory.
         Iain Duff, AERE Harwell.
         Jeremy Du Croz, Numerical Algorithms Group Ltd.
         Sven Hammarling, Numerical Algorithms Group Ltd.

Definition at line 188 of file zsymm.f.

Author

Generated automatically by Doxygen for LAPACK from the source code.