ZHERK - perform one of the hermitian rank k operations   C
       := alpha*A*conjg( A' ) + beta*C,


SYNOPSIS

       SUBROUTINE ZHERK ( UPLO, TRANS, N, K, ALPHA, A, LDA, BETA,
                        C, LDC )

           CHARACTER*1  UPLO, TRANS

           INTEGER      N, K, LDA, LDC

           DOUBLE       PRECISION ALPHA, BETA

           COMPLEX*16   A( LDA, * ), C( LDC, * )


PURPOSE

       ZHERK  performs one of the hermitian rank k operations

       or

          C := alpha*conjg( A' )*A + beta*C,

       where  alpha and beta  are  real scalars,  C is an  n by n
       hermitian matrix and  A  is an  n  by  k   matrix  in  the
       first case and a  k by n matrix in the second case.


PARAMETERS

       UPLO   - CHARACTER*1.
              On   entry,    UPLO  specifies  whether  the  upper
              or  lower triangular  part  of the  array  C  is to
              be  referenced  as follows:

              UPLO = 'U' or 'u'   Only the  upper triangular part
              of  C is to be referenced.

              UPLO = 'L' or 'l'   Only the  lower triangular part
              of  C is to be referenced.

              Unchanged on exit.

       TRANS  - CHARACTER*1.
              On  entry,   TRANS   specifies  the operation to be
              performed as follows:

              TRANS = 'N' or 'n'   C :=  alpha*A*conjg(  A'  )  +
              beta*C.

              TRANS  =  'C'  or  'c'   C := alpha*conjg( A' )*A +
              beta*C.

              Unchanged on exit.

              On entry,  N specifies the order of the  matrix  C.
              N must be at least zero.  Unchanged on exit.

       K      - INTEGER.
              On  entry  with   TRANS = 'N' or 'n',  K  specifies
              the number of   columns    of   the    matrix    A,
              and   on    entry    with  TRANS  =  'C' or 'c',  K
              specifies  the number of rows of the matrix  A.   K
              must be at least zero.  Unchanged on exit.

       ALPHA  - DOUBLE PRECISION.
              On   entry,   ALPHA  specifies  the  scalar  alpha.
              Unchanged on exit.

       A      - COMPLEX*16       array of DIMENSION ( LDA, ka  ),
              where ka is
              k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
              Before  entry with  TRANS = 'N' or 'n',  the  lead­
              ing  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.
              Unchanged on exit.

       LDA    - INTEGER.
              On entry, LDA specifies the first 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
              ).  Unchanged on exit.

       BETA   - DOUBLE PRECISION.
              On   entry,   BETA   specifies   the  scalar  beta.
              Unchanged on exit.

       C      - COMPLEX*16       array of DIMENSION ( LDC, n ).
              Before entry  with  UPLO = 'U' or 'u',  the leading
              n  by  n  upper triangular part of the array C must
              contain the upper triangular part  of  the   hermi­
              tian matrix  and the strictly lower triangular part
              of C is not referenced.  On exit, the upper  trian­
              gular  part  of  the array  C is overwritten by the
              upper  triangular  part  of  the  updated   matrix.
              Before entry  with  UPLO = 'L' or 'l',  the leading
              n by n lower triangular part of the  array  C  must
              contain  the  lower triangular part  of the  hermi­
              tian matrix  and the strictly upper triangular part
              of  C is not referenced.  On exit, the lower trian­
              gular part of the array  C is  overwritten  by  the
              lower  triangular part of the updated matrix.  Note
              that the imaginary parts of the  diagonal  elements
              need not be set,  they are assumed to be zero,  and
              on exit they are set to zero.

              On entry, LDC specifies the first dimension of C as
              declared  in   the   calling  (sub)  program.   LDC
              must  be  at  least max(  1,  n  ).   Unchanged  on
              exit.

              Level 3 Blas routine.

              --  Written  on  8-February-1989.   Jack  Dongarra,
              Argonne National Laboratory.  Iain Duff, AERE  Har­
              well.   Jeremy  Du Croz, Numerical Algorithms Group
              Ltd.  Sven Hammarling, Numerical  Algorithms  Group
              Ltd.


Man(1) output converted with man2html