1      SUBROUTINE dmmddat( M, N, ALPHA, A, LDA, BETA, B, LDB )
 
   10      DOUBLE PRECISION   ALPHA, BETA
 
   13      DOUBLE PRECISION   A( LDA, * ), B( LDB, * )
 
   69      DOUBLE PRECISION   ONE, ZERO
 
   70      parameter( one = 1.0d+0, zero = 0.0d+0 )
 
   76      EXTERNAL           daxpy, dcopy, dscal
 
   81         IF( beta.EQ.one ) 
THEN 
   82            IF( alpha.EQ.zero ) 
THEN 
   84                  CALL dcopy( m, b( j, 1 ), ldb, a( 1, j ), 1 )
 
   89            ELSE IF( alpha.NE.one ) 
THEN 
   92                     a( i, j ) = b( j, i ) + alpha * a( i, j )
 
   97                  CALL daxpy( m, one, b( j, 1 ), ldb, a( 1, j ), 1 )
 
  103         ELSE IF( beta.NE.zero ) 
THEN 
  104            IF( alpha.EQ.zero ) 
THEN 
  107                     a( i, j ) = beta * b( j, i )
 
  110            ELSE IF( alpha.NE.one ) 
THEN 
  113                     a( i, j ) = beta * b( j, i ) + alpha * a( i, j )
 
  118                  CALL daxpy( m, beta, b( j, 1 ), ldb, a( 1, j ), 1 )
 
  125            IF( alpha.EQ.zero ) 
THEN 
  131            ELSE IF( alpha.NE.one ) 
THEN 
  133                  CALL dscal( m, alpha, a( 1, j ), 1 )
 
  141         IF( beta.EQ.one ) 
THEN 
  142            IF( alpha.EQ.zero ) 
THEN 
  144                  CALL dcopy( n, b( 1, j ), 1, a( j, 1 ), lda )
 
  149            ELSE IF( alpha.NE.one ) 
THEN 
  152                     a( j, i ) = b( i, j ) + alpha * a( j, i )
 
  157                  CALL daxpy( n, one, b( 1, j ), 1, a( j, 1 ), lda )
 
  163         ELSE IF( beta.NE.zero ) 
THEN 
  164            IF( alpha.EQ.zero ) 
THEN 
  167                     a( j, i ) = beta * b( i, j )
 
  170            ELSE IF( alpha.NE.one ) 
THEN 
  173                     a( j, i ) = beta * b( i, j ) + alpha * a( j, i )
 
  178                  CALL daxpy( n, beta, b( 1, j ), 1, a( j, 1 ), lda )
 
  185            IF( alpha.EQ.zero ) 
THEN 
  191            ELSE IF( alpha.NE.one ) 
THEN 
  193                  CALL dscal( m, alpha, a( 1, j ), 1 )