1 SUBROUTINE dsymm ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB,
5 INTEGER M, N, LDA, LDB, LDC
6 DOUBLE PRECISION ALPHA, BETA
8 DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * )
144 INTEGER I, INFO, J, K, NROWA
145 DOUBLE PRECISION TEMP1, TEMP2
147 DOUBLE PRECISION ONE , ZERO
148 parameter( one = 1.0d+0, zero = 0.0d+0 )
154 IF( lsame( side,
'L' ) )
THEN
159 upper = lsame( uplo,
'U' )
164 IF( ( .NOT.lsame( side,
'L' ) ).AND.
165 $ ( .NOT.lsame( side,
'R' ) ) )
THEN
167 ELSE IF( ( .NOT.upper ).AND.
168 $ ( .NOT.lsame( uplo,
'L' ) ) )
THEN
170 ELSE IF( m .LT.0 )
THEN
172 ELSE IF( n .LT.0 )
THEN
174 ELSE IF( lda.LT.max( 1, nrowa ) )
THEN
176 ELSE IF( ldb.LT.max( 1, m ) )
THEN
178 ELSE IF( ldc.LT.max( 1, m ) )
THEN
182 CALL xerbla(
'DSYMM ', info )
188 IF( ( m.EQ.0 ).OR.( n.EQ.0 ).OR.
189 $ ( ( alpha.EQ.zero ).AND.( beta.EQ.one ) ) )
194 IF( alpha.EQ.zero )
THEN
195 IF( beta.EQ.zero )
THEN
204 c( i, j ) = beta*c( i, j )
213 IF( lsame( side,
'L' ) )
THEN
220 temp1 = alpha*b( i, j )
223 c( k, j ) = c( k, j ) + temp1 *a( k, i )
224 temp2 = temp2 + b( k, j )*a( k, i )
226 IF( beta.EQ.zero )
THEN
227 c( i, j ) = temp1*a( i, i ) + alpha*temp2
229 c( i, j ) = beta *c( i, j ) +
230 $ temp1*a( i, i ) + alpha*temp2
237 temp1 = alpha*b( i, j )
240 c( k, j ) = c( k, j ) + temp1 *a( k, i )
241 temp2 = temp2 + b( k, j )*a( k, i )
243 IF( beta.EQ.zero )
THEN
244 c( i, j ) = temp1*a( i, i ) + alpha*temp2
246 c( i, j ) = beta *c( i, j ) +
247 $ temp1*a( i, i ) + alpha*temp2
257 temp1 = alpha*a( j, j )
258 IF( beta.EQ.zero )
THEN
260 c( i, j ) = temp1*b( i, j )
264 c( i, j ) = beta*c( i, j ) + temp1*b( i, j )
269 temp1 = alpha*a( k, j )
271 temp1 = alpha*a( j, k )
274 c( i, j ) = c( i, j ) + temp1*b( i, k )
279 temp1 = alpha*a( j, k )
281 temp1 = alpha*a( k, j )
284 c( i, j ) = c( i, j ) + temp1*b( i, k )
subroutine dsymm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
subroutine xerbla(SRNAME, INFO)