belmm


NAME

belmm, sbelmm, dbelmm - block Ellpack format matrix-matrix multiply


SYNOPSIS

  SUBROUTINE SBELMM( TRANSA, MB, N, KB, ALPHA, DESCRA,
 *           VAL, BINDX, BLDA, MAXBNZ, LB,
 *           B, LDB, BETA, C, LDC, WORK, LWORK )
  INTEGER*4  TRANSA, MB, N, KB, DESCRA(5), BLDA, MAXBNZ, LB,
 *           LDB, LDC, LWORK
  INTEGER*4  BINDX(BLDA,MAXBNZ)
  REAL*4     ALPHA, BETA
  REAL*4     VAL(LB*LB*BLDA*MAXBNZ), B(LDB,*), C(LDC,*), WORK(LWORK)
  SUBROUTINE DBELMM( TRANSA, MB, N, KB, ALPHA, DESCRA,
 *           VAL, BINDX, BLDA, MAXBNZ, LB,
 *           B, LDB, BETA, C, LDC, WORK, LWORK)
  INTEGER*4  TRANSA, MB, N, KB, DESCRA(5), BLDA, MAXBNZ, LB,
 *           LDB, LDC, LWORK
  INTEGER*4  BINDX(BLDA,MAXBNZ)
  REAL*8     ALPHA, BETA
  REAL*8     VAL(LB*LB*BLDA*MAXBNZ), B(LDB,*), C(LDC,*), WORK(LWORK)


DESCRIPTION

 C <- alpha A B + beta C
 C <- alpha A'B + beta C
                                    ( ' indicates matrix transpose)


ARGUMENTS

 TRANSA        Indicates how to operate with the sparse matrix
                 0 : operate with matrix
                 1 : operate with transpose matrix
 MB            Number of block rows in matrix A
 N             Number of columns in matrix C
 KB            Number of block columns in matrix A
 ALPHA         Scalar parameter
 DESCRA()      Descriptor argument.  Five element integer array
               DESCRA(1) matrix structure
                 0 : general
                 1 : symmetric
                 2 : Hermitian
                 3 : Triangular
                 4 : Skew(Anti)-Symmetric
                 5 : Diagonal
               DESCRA(2) upper/lower triangular indicator (NOT IMPLEMENTED)
                 1 : lower
                 2 : upper
               DESCRA(3) main diagonal type (NOT IMPLEMENTED)
                 0 : non-unit
                 1 : unit
               DESCRA(4) Array base  (NOT IMPLEMENTED)
                 0 : C/C++ compatible
                 1 : Fortran compatible
               DESCRA(5) repeated indices? (NOT IMPLEMENTED)
                 0 : unknown
                 1 : no repeated indices
 VAL()         scalar array of length LB*LB*BLDA*MAXBNZ containing 
               matrix entries, stored column-major within each dense 
               block.
 BINDX()       two-dimensional integer BLDA-by-MAXBNZ array such 
               BINDX(i,:) consists of the block column indices of the 
               nonzero blocks in block row i, padded by the integer 
               value i if the number of nonzero blocks is less than 
               MAXBNZ.
 BLDA          leading dimension of BINDX(:,:).
 MAXBNZ        max number of nonzeros blocks per row.
 LB            row and column dimension of the dense blocks composing 
               VAL.
 B()           rectangular array with first dimension LDB.
 LDB           leading dimension of B
 BETA          Scalar parameter
 C()           rectangular array with first dimension LDC.
 LDC           leading dimension of C
 WORK()        scratch array of length LWORK.  LWORK should be at least
               MAX(MB*LB*LB,N).
 LWORK         length of WORK array


SEE ALSO

NIST FORTRAN Sparse Blas User's Guide available at:

http://math.nist.gov/mcsd/Staff/KRemington/fspblas/


NOTES/BUGS

The NIST FORTRAN Sparse BLAS are currently at version 0.5. Some features (including the ones so noted) may not yet be implemented.