190 SUBROUTINE dsymm(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
198 DOUBLE PRECISION alpha,beta
199 INTEGER lda,ldb,ldc,m,n
203 DOUBLE PRECISION a(lda,*),b(ldb,*),c(ldc,*)
219 DOUBLE PRECISION temp1,temp2
220 INTEGER i,info,j,k,nrowa
224 DOUBLE PRECISION one,zero
225 parameter(one=1.0d+0,zero=0.0d+0)
230 IF (
lsame(side,
'L'))
THEN
235 upper =
lsame(uplo,
'U')
240 IF ((.NOT.
lsame(side,
'L')) .AND. (.NOT.
lsame(side,
'R')))
THEN
242 ELSE IF ((.NOT.upper) .AND. (.NOT.
lsame(uplo,
'L')))
THEN
244 ELSE IF (m.LT.0)
THEN
246 ELSE IF (n.LT.0)
THEN
248 ELSE IF (lda.LT.max(1,nrowa))
THEN
250 ELSE IF (ldb.LT.max(1,m))
THEN
252 ELSE IF (ldc.LT.max(1,m))
THEN
256 CALL
xerbla(
'DSYMM ',info)
262 IF ((m.EQ.0) .OR. (n.EQ.0) .OR.
263 + ((alpha.EQ.zero).AND. (beta.EQ.one))) return
267 IF (alpha.EQ.zero)
THEN
268 IF (beta.EQ.zero)
THEN
286 IF (
lsame(side,
'L'))
THEN
296 c(k,j) = c(k,j) + temp1*a(k,i)
297 temp2 = temp2 + b(k,j)*a(k,i)
299 IF (beta.EQ.zero)
THEN
300 c(i,j) = temp1*a(i,i) + alpha*temp2
302 c(i,j) = beta*c(i,j) + temp1*a(i,i) +
313 c(k,j) = c(k,j) + temp1*a(k,i)
314 temp2 = temp2 + b(k,j)*a(k,i)
316 IF (beta.EQ.zero)
THEN
317 c(i,j) = temp1*a(i,i) + alpha*temp2
319 c(i,j) = beta*c(i,j) + temp1*a(i,i) +
331 IF (beta.EQ.zero)
THEN
333 c(i,j) = temp1*b(i,j)
337 c(i,j) = beta*c(i,j) + temp1*b(i,j)
347 c(i,j) = c(i,j) + temp1*b(i,k)
357 c(i,j) = c(i,j) + temp1*b(i,k)