170 SUBROUTINE dsyrk(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
178 DOUBLE PRECISION alpha,beta
183 DOUBLE PRECISION a(lda,*),c(ldc,*)
199 DOUBLE PRECISION temp
200 INTEGER i,info,j,l,nrowa
204 DOUBLE PRECISION one,zero
205 parameter(one=1.0d+0,zero=0.0d+0)
210 IF (
lsame(trans,
'N'))
THEN
215 upper =
lsame(uplo,
'U')
218 IF ((.NOT.upper) .AND. (.NOT.
lsame(uplo,
'L')))
THEN
220 ELSE IF ((.NOT.
lsame(trans,
'N')) .AND.
221 + (.NOT.
lsame(trans,
'T')) .AND.
222 + (.NOT.
lsame(trans,
'C')))
THEN
224 ELSE IF (n.LT.0)
THEN
226 ELSE IF (k.LT.0)
THEN
228 ELSE IF (lda.LT.max(1,nrowa))
THEN
230 ELSE IF (ldc.LT.max(1,n))
THEN
234 CALL
xerbla(
'DSYRK ',info)
240 IF ((n.EQ.0) .OR. (((alpha.EQ.zero).OR.
241 + (k.EQ.0)).AND. (beta.EQ.one))) return
245 IF (alpha.EQ.zero)
THEN
247 IF (beta.EQ.zero)
THEN
261 IF (beta.EQ.zero)
THEN
280 IF (
lsame(trans,
'N'))
THEN
286 IF (beta.EQ.zero)
THEN
290 ELSE IF (beta.NE.one)
THEN
296 IF (a(j,l).NE.zero)
THEN
299 c(i,j) = c(i,j) + temp*a(i,l)
306 IF (beta.EQ.zero)
THEN
310 ELSE IF (beta.NE.one)
THEN
316 IF (a(j,l).NE.zero)
THEN
319 c(i,j) = c(i,j) + temp*a(i,l)
334 temp = temp + a(l,i)*a(l,j)
336 IF (beta.EQ.zero)
THEN
339 c(i,j) = alpha*temp + beta*c(i,j)
348 temp = temp + a(l,i)*a(l,j)
350 IF (beta.EQ.zero)
THEN
353 c(i,j) = alpha*temp + beta*c(i,j)