168 SUBROUTINE zsyrk(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
176 COMPLEX*16 alpha,beta
181 COMPLEX*16 a(lda,*),c(ldc,*)
198 INTEGER i,info,j,l,nrowa
203 parameter(one= (1.0d+0,0.0d+0))
205 parameter(zero= (0.0d+0,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')))
THEN
223 ELSE IF (n.LT.0)
THEN
225 ELSE IF (k.LT.0)
THEN
227 ELSE IF (lda.LT.max(1,nrowa))
THEN
229 ELSE IF (ldc.LT.max(1,n))
THEN
233 CALL
xerbla(
'ZSYRK ',info)
239 IF ((n.EQ.0) .OR. (((alpha.EQ.zero).OR.
240 + (k.EQ.0)).AND. (beta.EQ.one))) return
244 IF (alpha.EQ.zero)
THEN
246 IF (beta.EQ.zero)
THEN
260 IF (beta.EQ.zero)
THEN
279 IF (
lsame(trans,
'N'))
THEN
285 IF (beta.EQ.zero)
THEN
289 ELSE IF (beta.NE.one)
THEN
295 IF (a(j,l).NE.zero)
THEN
298 c(i,j) = c(i,j) + temp*a(i,l)
305 IF (beta.EQ.zero)
THEN
309 ELSE IF (beta.NE.one)
THEN
315 IF (a(j,l).NE.zero)
THEN
318 c(i,j) = c(i,j) + temp*a(i,l)
333 temp = temp + a(l,i)*a(l,j)
335 IF (beta.EQ.zero)
THEN
338 c(i,j) = alpha*temp + beta*c(i,j)
347 temp = temp + a(l,i)*a(l,j)
349 IF (beta.EQ.zero)
THEN
352 c(i,j) = alpha*temp + beta*c(i,j)