ZGEMMT(3)       BLAS routine of NEC Numeric Library Collection       ZGEMMT(3)



NAME
       ZGEMMT  - performs  of the matrix-matrix operations with general matri-
       ces and add the result to the upper or lower part  of  a  scalar-matrix
       product.

SYNOPSIS
       SUBROUTINE  ZGEMMT(  UPLO, TRANSA, TRANSB, N, K, ALPHA, A, LDA, B, LDB,
       BETA, C, LDC )

           CHARACTER*1 UPLO, TRANSA, TRANSB

           INTEGER      N, K, LDA, LDB, LDC

           COMPLEX*16   ALPHA, BETA

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


PURPOSE
       ZGEMMT  performs  of the matrix-matrix operations with general matrices
       and add the result to the upper or lower part of a scalar-matrix  prod-
       uct.  These  routines  are similar to the ZGEMM routines, but they only
       access and update a triangular part of the square result matrix.

          C := alpha*op( A )*op( B ) + beta*C,

       where  op( X ) is  of

          op( X ) = X,  op( X ) = X**T   or   op( X ) = X**H,

       alpha and beta are scalars, and A, B and C are matrices, with op(  A  )
       an N by K matrix,  op( B )  a  K by N matrix and  C an N by N matrix.


PARAMETERS
       UPLO - CHARACTER*1.
              Specifies  whether  the  upper  or  lower triangular part of the
              array C is used. If UPLO = 'U' or 'u', then the upper triangular
              part  of  the  array  C  is used. If UPLO = 'L' or 'l', then the
              lower triangular part of the array C is used.

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

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

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

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

              Unchanged on exit.

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

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

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

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

              Unchanged on exit.

       N      - INTEGER.
              On entry,  N  specifies  the number  of  rows   of  the   matrix
              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   N   otherwise.   Before
              entry with  TRANSA = 'N' or 'n',  the leading 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  TRANSA = 'N' or 'n' then LDA
              must be at least  max( 1, N ), 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  otherwise.  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.

       BETA   - COMPLEX*16.
              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 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 matrix C and the strictly lower triangular part of C
              is not referenced.

              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 matrix C and the strictly upper triangular part of C
              is not referenced.

              When beta is equal to ZERO, C need not be set on input.

       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,
              N ).  Unchanged on exit.



BLAS routine                    21 August 2020                       ZGEMMT(3)