1ZGEMM(1)                         BLAS routine                         ZGEMM(1)
2
3
4

NAME

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

SYNOPSIS

10       SUBROUTINE ZGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
11
12           DOUBLE                                                         COM‐
13                                                                          PLEX
14                                                                          ALPHA,BETA
15
16           INTEGER                                                        K,LDA,LDB,LDC,M,N
17
18           CHARACTER                                                      TRANSA,TRANSB
19
20           DOUBLE                                                         COM‐
21                                                                          PLEX
22                                                                          A(LDA,*),B(LDB,*),C(LDC,*)
23

PURPOSE

25       ZGEMM  performs one of the matrix-matrix operations
26
27       where  op( X ) is one of
28
29          op( X ) = X   or   op( X ) = X'   or   op( X ) = conjg( X' ),
30
31       alpha and beta are scalars, and A, B and C are matrices, with op(  A  )
32       an m by k matrix,  op( B )  a  k by n matrix and  C an m by n matrix.
33
34

ARGUMENTS

36       TRANSA  -  CHARACTER*1.  On entry, TRANSA specifies the form of op( A )
37       to be used in the matrix multiplication as follows:
38
39       TRANSA = 'N' or 'n',  op( A ) = A.
40
41       TRANSA = 'T' or 't',  op( A ) = A'.
42
43       TRANSA = 'C' or 'c',  op( A ) = conjg( A' ).
44
45       Unchanged on exit.
46
47       TRANSB - CHARACTER*1.  On entry, TRANSB specifies the form of op(  B  )
48       to be used in the matrix multiplication as follows:
49
50       TRANSB = 'N' or 'n',  op( B ) = B.
51
52       TRANSB = 'T' or 't',  op( B ) = B'.
53
54       TRANSB = 'C' or 'c',  op( B ) = conjg( B' ).
55
56       Unchanged on exit.
57
58       M      - INTEGER.
59              On entry,  M  specifies  the number  of rows  of the  matrix op(
60              A )  and of the   matrix   C.   M   must   be  at  least   zero.
61              Unchanged on exit.
62
63       N      - INTEGER.
64              On entry,  N  specifies the number  of columns of the matrix op(
65              B ) and the number of columns of the matrix  C.  N  must  be  at
66              least zero.  Unchanged on exit.
67
68       K      - INTEGER.
69              On entry,  K  specifies  the number of columns of the matrix op(
70              A ) and the number of rows of the matrix op( B ). K must  be  at
71              least  zero.  Unchanged on exit.
72
73       ALPHA  - COMPLEX*16      .
74              On entry, ALPHA specifies the scalar alpha.  Unchanged on exit.
75
76       A      - COMPLEX*16       array of DIMENSION ( LDA, ka ), where ka is
77              k   when   TRANSA  =  'N' or 'n',  and is  m  otherwise.  Before
78              entry with  TRANSA = 'N' or 'n',  the leading  m by  k  part  of
79              the array  A  must contain the matrix  A,  otherwise the leading
80              k by m  part of the  array   A   must  contain   the  matrix  A.
81              Unchanged on exit.
82
83       LDA    - INTEGER.
84              On  entry, LDA specifies the first dimension of A as declared in
85              the calling (sub) program. When  TRANSA = 'N' or  'n'  then  LDA
86              must  be  at least  max( 1, m ), otherwise  LDA must be at least
87              max( 1, k ).  Unchanged on exit.
88
89       B      - COMPLEX*16       array of DIMENSION ( LDB, kb ), where kb is
90              n  when  TRANSB = 'N' or 'n',  and  is   k   otherwise.   Before
91              entry  with   TRANSB  = 'N' or 'n',  the leading  k by n part of
92              the array  B  must contain the matrix  B,  otherwise the leading
93              n  by  k   part  of  the  array   B  must contain  the matrix B.
94              Unchanged on exit.
95
96       LDB    - INTEGER.
97              On entry, LDB specifies the first dimension of B as declared  in
98              the  calling  (sub)  program. When  TRANSB = 'N' or 'n' then LDB
99              must be at least  max( 1, k ), otherwise  LDB must be  at  least
100              max( 1, n ).  Unchanged on exit.
101
102       BETA   - COMPLEX*16      .
103              On  entry,   BETA   specifies  the scalar  beta.  When  BETA  is
104              supplied as zero then C need not be set on input.  Unchanged  on
105              exit.
106
107       C      - COMPLEX*16       array of DIMENSION ( LDC, n ).
108              Before  entry,  the  leading   m by n  part of the array  C must
109              contain the matrix  C,  except when  beta   is  zero,  in  which
110              case  C  need  not  be  set on entry.  On exit, the array  C  is
111              overwritten by the  m by n  matrix ( alpha*op( A  )*op(  B  )  +
112              beta*C ).
113
114       LDC    - INTEGER.
115              On  entry, LDC specifies the first dimension of C as declared in
116              the  calling  (sub)  program.   LDC  must  be  at  least max( 1,
117              m ).  Unchanged on exit.
118

FURTHER DETAILS

120       Level 3 Blas routine.
121
122       -- Written on 8-February-1989.
123          Jack Dongarra, Argonne National Laboratory.
124          Iain Duff, AERE Harwell.
125          Jeremy Du Croz, Numerical Algorithms Group Ltd.
126          Sven Hammarling, Numerical Algorithms Group Ltd.
127
128
129
130
131BLAS routine                     November 2008                        ZGEMM(1)
Impressum