ZGEMM - perform one of the matrix-matrix operations   C :=
       alpha*op( A )*op( B ) + beta*C,


SYNOPSIS

       SUBROUTINE ZGEMM ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA,
                        B, LDB, BETA, C, LDC )

           CHARACTER*1  TRANSA, TRANSB

           INTEGER      M, N, K, LDA, LDB, LDC

           COMPLEX*16   ALPHA, BETA

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


PURPOSE

       ZGEMM  performs one of the matrix-matrix operations

       where  op( X ) is one of

          op( X ) = X   or   op( X ) = X'   or   op( X ) = conjg(
       X' ),

       alpha and beta are scalars, and A, B and C  are  matrices,
       with  op( A ) an m by k matrix,  op( B )  a  k by n matrix
       and  C an m by n matrix.


PARAMETERS

       TRANSA - CHARACTER*1.  On entry, TRANSA specifies the form
       of op( A ) to be used in the matrix multiplication as fol­
       lows:

       TRANSA = 'N' or 'n',  op( A ) = A.

       TRANSA = 'T' or 't',  op( A ) = A'.

       TRANSA = 'C' or 'c',  op( A ) = conjg( A' ).

       Unchanged on exit.

       TRANSB - CHARACTER*1.  On entry, TRANSB specifies the form
       of op( B ) to be used in the matrix multiplication as fol­
       lows:

       TRANSB = 'N' or 'n',  op( B ) = B.

       TRANSB = 'T' or 't',  op( B ) = B'.

       TRANSB = 'C' or 'c',  op( B ) = conjg( B' ).

       Unchanged on exit.

              On entry,  M  specifies  the number   of  rows   of
              the   matrix  op(  A  )   and of the  matrix  C.  M
              must  be at least  zero.  Unchanged on exit.

       N      - INTEGER.
              On entry,  N  specifies the number  of  columns  of
              the matrix op( B ) and the number of columns of the
              matrix C. N must be at least  zero.   Unchanged  on
              exit.

       K      - INTEGER.
              On  entry,   K  specifies  the number of columns of
              the matrix op( A ) and the number of  rows  of  the
              matrix   op(  B  ).  K  must  be  at  least   zero.
              Unchanged on exit.

       ALPHA  - COMPLEX*16      .
              On  entry,  ALPHA  specifies  the   scalar   alpha.
              Unchanged on exit.

       A       -  COMPLEX*16       array of DIMENSION ( LDA, ka
              ), where ka is
              k   when   TRANSA  = 'N' or 'n',  and is  m  other­
              wise.  Before entry with  TRANSA = 'N' or 'n',  the
              leading   m by k part of the array  A  must contain
              the matrix  A,  otherwise the leading  k by m  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  TRANSA
              = 'N' or 'n' then LDA must be at least  max(  1,  m
              ),  otherwise   LDA  must be at least  max( 1, k ).
              Unchanged on exit.

       B      - COMPLEX*16       array of DIMENSION ( LDB, kb  ),
              where kb is
              n  when  TRANSB = 'N' or 'n',  and  is   k   other­
              wise.  Before entry with  TRANSB = 'N' or 'n',  the
              leading  k by n part of the array  B  must  contain
              the matrix  B,  otherwise the leading  n by k  part
              of the  array   B   must  contain   the  matrix  B.
              Unchanged on exit.

       LDB    - INTEGER.
              On entry, LDB specifies the first dimension of B as
              declared in the calling (sub) program. When  TRANSB
              =  'N'  or 'n' then LDB must be at least  max( 1, k
              ), otherwise  LDB must be at least  max(  1,  n  ).
              Unchanged on exit.

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

       C      - COMPLEX*16       array of 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   matrix  (  alpha*op( A )*op( B ) +
              beta*C ).

       LDC    - 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  ).   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