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

NAME

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

SYNOPSIS

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

PURPOSE

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

ARGUMENTS

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

FURTHER DETAILS

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