Provided by: liblapack-doc_3.12.0-3build1.1_all bug

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.

   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.

   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.

   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.

   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.

   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.

Author

       Generated automatically by Doxygen for LAPACK from the source code.