140 COMPLEX*16 A( LDA, * ), WORK( * )
146 COMPLEX*16 CONE, CZERO
147 parameter( cone = ( 1.0d+0, 0.0d+0 ),
148 $ czero = ( 0.0d+0, 0.0d+0 ) )
153 COMPLEX*16 AK, AKKP1, AKP1, D, T, TEMP
158 EXTERNAL lsame, zdotu
171 upper = lsame( uplo,
'U' )
172 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
174 ELSE IF( n.LT.0 )
THEN
176 ELSE IF( lda.LT.
max( 1, n ) )
THEN
195 DO 10 INFO = N, 1, -1
196.GT..AND..EQ.
IF( IPIV( INFO )0 A( INFO, INFO )CZERO )
204.GT..AND..EQ.
IF( IPIV( INFO )0 A( INFO, INFO )CZERO )
225.GT.
IF( IPIV( K )0 ) THEN
231 A( K, K ) = CONE / A( K, K )
236 CALL ZCOPY( K-1, A( 1, K ), 1, WORK, 1 )
237 CALL ZSYMV( UPLO, K-1, -CONE, A, LDA, WORK, 1, CZERO,
239 A( K, K ) = A( K, K ) - ZDOTU( K-1, WORK, 1, A( 1, K ),
251 AKP1 = A( K+1, K+1 ) / T
252 AKKP1 = A( K, K+1 ) / T
253 D = T*( AK*AKP1-CONE )
255 A( K+1, K+1 ) = AK / D
256 A( K, K+1 ) = -AKKP1 / D
261 CALL ZCOPY( K-1, A( 1, K ), 1, WORK, 1 )
262 CALL ZSYMV( UPLO, K-1, -CONE, A, LDA, WORK, 1, CZERO,
264 A( K, K ) = A( K, K ) - ZDOTU( K-1, WORK, 1, A( 1, K ),
266 A( K, K+1 ) = A( K, K+1 ) -
267 $ ZDOTU( K-1, A( 1, K ), 1, A( 1, K+1 ), 1 )
268 CALL ZCOPY( K-1, A( 1, K+1 ), 1, WORK, 1 )
269 CALL ZSYMV( UPLO, K-1, -CONE, A, LDA, WORK, 1, CZERO,
271 A( K+1, K+1 ) = A( K+1, K+1 ) -
272 $ ZDOTU( K-1, WORK, 1, A( 1, K+1 ), 1 )
277.EQ.
IF( KSTEP1 ) THEN
285 $ CALL ZSWAP( KP-1, A( 1, K ), 1, A( 1, KP ), 1 )
286 CALL ZSWAP( K-KP-1, A( KP+1, K ), 1, A( KP, KP+1 ), LDA )
288 A( K, K ) = A( KP, KP )
299 $ CALL ZSWAP( KP-1, A( 1, K ), 1, A( 1, KP ), 1 )
300 CALL ZSWAP( K-KP-1, A( KP+1, K ), 1, A( KP, KP+1 ), LDA )
303 A( K, K ) = A( KP, KP )
306 A( K, K+1 ) = A( KP, K+1 )
314 $ CALL ZSWAP( KP-1, A( 1, K ), 1, A( 1, KP ), 1 )
315 CALL ZSWAP( K-KP-1, A( KP+1, K ), 1, A( KP, KP+1 ), LDA )
317 A( K, K ) = A( KP, KP )
341.GT.
IF( IPIV( K )0 ) THEN
347 A( K, K ) = CONE / A( K, K )
352 CALL ZCOPY( N-K, A( K+1, K ), 1, WORK, 1 )
353 CALL ZSYMV( UPLO, N-K,-CONE, A( K+1, K+1 ), LDA, WORK, 1,
354 $ CZERO, A( K+1, K ), 1 )
355 A( K, K ) = A( K, K ) - ZDOTU( N-K, WORK, 1, A( K+1, K ),
366 AK = A( K-1, K-1 ) / T
368 AKKP1 = A( K, K-1 ) / T
369 D = T*( AK*AKP1-CONE )
370 A( K-1, K-1 ) = AKP1 / D
372 A( K, K-1 ) = -AKKP1 / D
377 CALL ZCOPY( N-K, A( K+1, K ), 1, WORK, 1 )
378 CALL ZSYMV( UPLO, N-K,-CONE, A( K+1, K+1 ), LDA, WORK, 1,
379 $ CZERO, A( K+1, K ), 1 )
380 A( K, K ) = A( K, K ) - ZDOTU( N-K, WORK, 1, A( K+1, K ),
382 A( K, K-1 ) = A( K, K-1 ) -
383 $ ZDOTU( N-K, A( K+1, K ), 1, A( K+1, K-1 ),
385 CALL ZCOPY( N-K, A( K+1, K-1 ), 1, WORK, 1 )
386 CALL ZSYMV( UPLO, N-K,-CONE, A( K+1, K+1 ), LDA, WORK, 1,
387 $ CZERO, A( K+1, K-1 ), 1 )
388 A( K-1, K-1 ) = A( K-1, K-1 ) -
389 $ ZDOTU( N-K, WORK, 1, A( K+1, K-1 ), 1 )
394.EQ.
IF( KSTEP1 ) THEN
402 $ CALL ZSWAP( N-KP, A( KP+1, K ), 1, A( KP+1, KP ), 1 )
403 CALL ZSWAP( KP-K-1, A( K+1, K ), 1, A( KP, K+1 ), LDA )
405 A( K, K ) = A( KP, KP )
416 $ CALL ZSWAP( N-KP, A( KP+1, K ), 1, A( KP+1, KP ), 1 )
417 CALL ZSWAP( KP-K-1, A( K+1, K ), 1, A( KP, K+1 ), LDA )
420 A( K, K ) = A( KP, KP )
423 A( K, K-1 ) = A( KP, K-1 )
431 $ CALL ZSWAP( N-KP, A( KP+1, K ), 1, A( KP+1, KP ), 1 )
432 CALL ZSWAP( KP-K-1, A( K+1, K ), 1, A( KP, K+1 ), LDA )
434 A( K, K ) = A( KP, KP )
subroutine xerbla(srname, info)
XERBLA
subroutine zsymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
ZSYMV computes a matrix-vector product for a complex symmetric matrix.
subroutine zsytri_rook(uplo, n, a, lda, ipiv, work, info)
ZSYTRI_ROOK
subroutine zswap(n, zx, incx, zy, incy)
ZSWAP
subroutine zcopy(n, zx, incx, zy, incy)
ZCOPY