168 SUBROUTINE dsyrk(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
175 DOUBLE PRECISION ALPHA,BETA
180 DOUBLE PRECISION A(LDA,*),C(LDC,*)
196 DOUBLE PRECISION TEMP
197 INTEGER I,INFO,J,L,NROWA
201 DOUBLE PRECISION ONE,ZERO
202 parameter(one=1.0d+0,zero=0.0d+0)
207 IF (lsame(trans,
'N'))
THEN
212 upper = lsame(uplo,
'U')
215 IF ((.NOT.upper) .AND. (.NOT.lsame(uplo,
'L')))
THEN
217 ELSE IF ((.NOT.lsame(trans,
'N')) .AND.
218 + (.NOT.lsame(trans,
'T')) .AND.
219 + (.NOT.lsame(trans,
'C')))
THEN
221 ELSE IF (n.LT.0)
THEN
223 ELSE IF (k.LT.0)
THEN
225 ELSE IF (lda.LT.max(1,nrowa))
THEN
227 ELSE IF (ldc.LT.max(1,n))
THEN
231 CALL xerbla(
'DSYRK ',info)
237 IF ((n.EQ.0) .OR. (((alpha.EQ.zero).OR.
238 + (k.EQ.0)).AND. (beta.EQ.one)))
RETURN
242 IF (alpha.EQ.zero)
THEN
244 IF (beta.EQ.zero)
THEN
258 IF (beta.EQ.zero)
THEN
277 IF (lsame(trans,
'N'))
THEN
283 IF (beta.EQ.zero)
THEN
287 ELSE IF (beta.NE.one)
THEN
293 IF (a(j,l).NE.zero)
THEN
296 c(i,j) = c(i,j) + temp*a(i,l)
303 IF (beta.EQ.zero)
THEN
307 ELSE IF (beta.NE.one)
THEN
313 IF (a(j,l).NE.zero)
THEN
316 c(i,j) = c(i,j) + temp*a(i,l)
331 temp = temp + a(l,i)*a(l,j)
333 IF (beta.EQ.zero)
THEN
336 c(i,j) = alpha*temp + beta*c(i,j)
345 temp = temp + a(l,i)*a(l,j)
347 IF (beta.EQ.zero)
THEN
350 c(i,j) = alpha*temp + beta*c(i,j)
subroutine xerbla(srname, info)
subroutine dsyrk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
DSYRK