198 SUBROUTINE cher2k(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
208 INTEGER K,LDA,LDB,LDC,N
212 COMPLEX A(lda,*),B(ldb,*),C(ldc,*)
225 INTRINSIC conjg,max,real
229 INTEGER I,INFO,J,L,NROWA
234 parameter(one=1.0e+0)
236 parameter(zero= (0.0e+0,0.0e+0))
241 IF (lsame(trans,
'N'))
THEN
246 upper = lsame(uplo,
'U')
249 IF ((.NOT.upper) .AND. (.NOT.lsame(uplo,
'L')))
THEN
251 ELSE IF ((.NOT.lsame(trans,
'N')) .AND.
252 + (.NOT.lsame(trans,
'C')))
THEN
254 ELSE IF (n.LT.0)
THEN
256 ELSE IF (k.LT.0)
THEN
258 ELSE IF (lda.LT.max(1,nrowa))
THEN
260 ELSE IF (ldb.LT.max(1,nrowa))
THEN
262 ELSE IF (ldc.LT.max(1,n))
THEN
266 CALL xerbla(
'CHER2K',info)
272 IF ((n.EQ.0) .OR. (((alpha.EQ.zero).OR.
273 + (k.EQ.0)).AND. (beta.EQ.one)))
RETURN
277 IF (alpha.EQ.zero)
THEN
279 IF (beta.EQ.
REAL(zero)) then
290 c(j,j) = beta*
REAL(c(j,j))
294 IF (beta.EQ.
REAL(zero)) then
302 c(j,j) = beta*
REAL(c(j,j))
314 IF (lsame(trans,
'N'))
THEN
321 IF (beta.EQ.
REAL(zero)) then
325 ELSE IF (beta.NE.one)
THEN
329 c(j,j) = beta*
REAL(c(j,j))
331 c(j,j) =
REAL(c(j,j))
334 IF ((a(j,l).NE.zero) .OR. (b(j,l).NE.zero))
THEN
335 temp1 = alpha*conjg(b(j,l))
336 temp2 = conjg(alpha*a(j,l))
338 c(i,j) = c(i,j) + a(i,l)*temp1 +
341 c(j,j) =
REAL(C(J,J)) +
342 +
REAL(a(j,l)*temp1+b(j,l)*temp2)
348 IF (beta.EQ.
REAL(zero)) then
352 ELSE IF (beta.NE.one)
THEN
356 c(j,j) = beta*
REAL(c(j,j))
358 c(j,j) =
REAL(c(j,j))
361 IF ((a(j,l).NE.zero) .OR. (b(j,l).NE.zero))
THEN
362 temp1 = alpha*conjg(b(j,l))
363 temp2 = conjg(alpha*a(j,l))
365 c(i,j) = c(i,j) + a(i,l)*temp1 +
368 c(j,j) =
REAL(C(J,J)) +
369 +
REAL(a(j,l)*temp1+b(j,l)*temp2)
385 temp1 = temp1 + conjg(a(l,i))*b(l,j)
386 temp2 = temp2 + conjg(b(l,i))*a(l,j)
389 IF (beta.EQ.
REAL(zero)) then
390 c(j,j) =
REAL(alpha*temp1+
391 + conjg(alpha)*temp2)
393 c(j,j) = beta*
REAL(C(J,J)) +
395 + conjg(alpha)*temp2)
398 IF (beta.EQ.
REAL(zero)) then
399 c(i,j) = alpha*temp1 + conjg(alpha)*temp2
401 c(i,j) = beta*c(i,j) + alpha*temp1 +
413 temp1 = temp1 + conjg(a(l,i))*b(l,j)
414 temp2 = temp2 + conjg(b(l,i))*a(l,j)
417 IF (beta.EQ.
REAL(zero)) then
418 c(j,j) =
REAL(alpha*temp1+
419 + conjg(alpha)*temp2)
421 c(j,j) = beta*
REAL(C(J,J)) +
423 + conjg(alpha)*temp2)
426 IF (beta.EQ.
REAL(zero)) then
427 c(i,j) = alpha*temp1 + conjg(alpha)*temp2
429 c(i,j) = beta*c(i,j) + alpha*temp1 +
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cher2k(UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CHER2K