133 SUBROUTINE csytrf_aa( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
144 INTEGER N, LDA, LWORK, INFO
148 COMPLEX A( lda, * ), WORK( * )
154 parameter( zero = 0.0e+0, one = 1.0e+0 )
157 LOGICAL LQUERY, UPPER
159 INTEGER NB, MJ, NJ, K1, K2, J1, J2, J3, JB
165 EXTERNAL lsame, ilaenv
177 nb = ilaenv( 1,
'CSYTRF', uplo, n, -1, -1, -1 )
182 upper = lsame( uplo,
'U' )
183 lquery = ( lwork.EQ.-1 )
184 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN 186 ELSE IF( n.LT.0 )
THEN 188 ELSE IF( lda.LT.max( 1, n ) )
THEN 190 ELSE IF( lwork.LT.max( 1, 2*n ) .AND. .NOT.lquery )
THEN 200 CALL xerbla(
'CSYTRF_AA', -info )
202 ELSE IF( lquery )
THEN 218 IF( lwork.LT.((1+nb)*n) )
THEN 230 CALL ccopy( n, a( 1, 1 ), lda, work( 1 ), 1 )
249 jb = min( n-j1+1, nb )
255 $ a( max(1, j), j+1 ), lda,
256 $ ipiv( j+1 ), work, n, work( n*nb+1 ) )
260 DO j2 = j+2, min(n, j+jb+1)
261 ipiv( j2 ) = ipiv( j2 ) + j
262 IF( (j2.NE.ipiv(j2)) .AND. ((j1-k1).GT.2) )
THEN 263 CALL cswap( j1-k1-2, a( 1, j2 ), 1,
264 $ a( 1, ipiv(j2) ), 1 )
277 IF( j1.GT.1 .OR. jb.GT.1 )
THEN 283 CALL ccopy( n-j, a( j-1, j+1 ), lda,
284 $ work( (j+1-j1+1)+jb*n ), 1 )
285 CALL cscal( n-j, alpha, work( (j+1-j1+1)+jb*n ), 1 )
308 nj = min( nb, n-j2+1 )
314 CALL cgemv(
'No transpose', mj, jb+1,
315 $ -one, work( j3-j1+1+k1*n ), n,
317 $ one, a( j3, j3 ), lda )
323 CALL cgemm(
'Transpose',
'Transpose',
325 $ -one, a( j1-k2, j2 ), lda,
326 $ work( j3-j1+1+k1*n ), n,
327 $ one, a( j2, j3 ), lda )
337 CALL ccopy( n-j, a( j+1, j+1 ), lda, work( 1 ), 1 )
349 CALL ccopy( n, a( 1, 1 ), 1, work( 1 ), 1 )
368 jb = min( n-j1+1, nb )
374 $ a( j+1, max(1, j) ), lda,
375 $ ipiv( j+1 ), work, n, work( n*nb+1 ) )
379 DO j2 = j+2, min(n, j+jb+1)
380 ipiv( j2 ) = ipiv( j2 ) + j
381 IF( (j2.NE.ipiv(j2)) .AND. ((j1-k1).GT.2) )
THEN 382 CALL cswap( j1-k1-2, a( j2, 1 ), lda,
383 $ a( ipiv(j2), 1 ), lda )
396 IF( j1.GT.1 .OR. jb.GT.1 )
THEN 402 CALL ccopy( n-j, a( j+1, j-1 ), 1,
403 $ work( (j+1-j1+1)+jb*n ), 1 )
404 CALL cscal( n-j, alpha, work( (j+1-j1+1)+jb*n ), 1 )
427 nj = min( nb, n-j2+1 )
433 CALL cgemv(
'No transpose', mj, jb+1,
434 $ -one, work( j3-j1+1+k1*n ), n,
435 $ a( j3, j1-k2 ), lda,
436 $ one, a( j3, j3 ), 1 )
442 CALL cgemm(
'No transpose',
'Transpose',
444 $ -one, work( j3-j1+1+k1*n ), n,
445 $ a( j2, j1-k2 ), lda,
446 $ one, a( j3, j2 ), lda )
456 CALL ccopy( n-j, a( j+1, j+1 ), 1, work( 1 ), 1 )
subroutine csytrf_aa(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
CSYTRF_AA
subroutine clasyf_aa(UPLO, J1, M, NB, A, LDA, IPIV, H, LDH, WORK)
CLASYF_AA
subroutine cscal(N, CA, CX, INCX)
CSCAL
subroutine cgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGEMV
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine cswap(N, CX, INCX, CY, INCY)
CSWAP
subroutine cgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CGEMM