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


SYNOPSIS

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

           CHARACTER*1  TRANSA, TRANSB

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

           REAL         ALPHA, BETA

           REAL         A( LDA, * ), B( LDB, * ), C( LDC, * )


PURPOSE

       SGEMM  performs one of the matrix-matrix operations

       where  op( X ) is one of

          op( X ) = X   or   op( X ) = 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 ) = 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 ) = 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  - REAL            .
              On   entry,   ALPHA  specifies  the  scalar  alpha.
              Unchanged on exit.

       A      - REAL             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       -  REAL             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      - REAL             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