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 )