139 COMPLEX A( LDA, * ), WORK( * )
147 PARAMETER ( one = 1.0e+0, cone = ( 1.0e+0, 0.0e+0 ),
148 $ czero = ( 0.0e+0, 0.0e+0 ) )
159 EXTERNAL lsame, cdotc
165 INTRINSIC abs, conjg,
max, real
172 upper = lsame( uplo,
'U' )
173 IF( .NOT.upper .AND. .NOT.lsame( uplo, 'l
' ) ) THEN
175.LT.
ELSE IF( N0 ) THEN
177.LT.
ELSE IF( LDAMAX( 1, N ) ) THEN
196 DO 10 INFO = N, 1, -1
197.GT..AND..EQ.
IF( IPIV( INFO )0 A( INFO, INFO )CZERO )
205.GT..AND..EQ.
IF( IPIV( INFO )0 A( INFO, INFO )CZERO )
226.GT.
IF( IPIV( K )0 ) THEN
232 A( K, K ) = ONE / REAL( A( K, K ) )
237 CALL CCOPY( K-1, A( 1, K ), 1, WORK, 1 )
238 CALL CHEMV( UPLO, K-1, -CONE, A, LDA, WORK, 1, CZERO,
240 A( K, K ) = A( K, K ) - REAL( CDOTC( K-1, WORK, 1, A( 1,
250 T = ABS( A( K, K+1 ) )
251 AK = REAL( A( K, K ) ) / T
252 AKP1 = REAL( A( K+1, K+1 ) ) / T
253 AKKP1 = A( K, K+1 ) / T
254 D = T*( AK*AKP1-ONE )
256 A( K+1, K+1 ) = AK / D
257 A( K, K+1 ) = -AKKP1 / D
262 CALL CCOPY( K-1, A( 1, K ), 1, WORK, 1 )
263 CALL CHEMV( UPLO, K-1, -CONE, A, LDA, WORK, 1, CZERO,
265 A( K, K ) = A( K, K ) - REAL( CDOTC( K-1, WORK, 1, A( 1,
267 A( K, K+1 ) = A( K, K+1 ) -
268 $ CDOTC( K-1, A( 1, K ), 1, A( 1, K+1 ), 1 )
269 CALL CCOPY( K-1, A( 1, K+1 ), 1, WORK, 1 )
270 CALL CHEMV( UPLO, K-1, -CONE, A, LDA, WORK, 1, CZERO,
272 A( K+1, K+1 ) = A( K+1, K+1 ) -
273 $ REAL( CDOTC( K-1, WORK, 1, A( 1, K+1 ),
279.EQ.
IF( KSTEP1 ) THEN
288 $ CALL CSWAP( KP-1, A( 1, K ), 1, A( 1, KP ), 1 )
290 DO 40 J = KP + 1, K - 1
291 TEMP = CONJG( A( J, K ) )
292 A( J, K ) = CONJG( A( KP, J ) )
296 A( KP, K ) = CONJG( A( KP, K ) )
299 A( K, K ) = A( KP, KP )
313 $ CALL CSWAP( KP-1, A( 1, K ), 1, A( 1, KP ), 1 )
315 DO 50 J = KP + 1, K - 1
316 TEMP = CONJG( A( J, K ) )
317 A( J, K ) = CONJG( A( KP, J ) )
321 A( KP, K ) = CONJG( A( KP, K ) )
324 A( K, K ) = A( KP, KP )
328 A( K, K+1 ) = A( KP, K+1 )
339 $ CALL CSWAP( KP-1, A( 1, K ), 1, A( 1, KP ), 1 )
341 DO 60 J = KP + 1, K - 1
342 TEMP = CONJG( A( J, K ) )
343 A( J, K ) = CONJG( A( KP, J ) )
347 A( KP, K ) = CONJG( A( KP, K ) )
350 A( K, K ) = A( KP, KP )
374.GT.
IF( IPIV( K )0 ) THEN
380 A( K, K ) = ONE / REAL( A( K, K ) )
385 CALL CCOPY( N-K, A( K+1, K ), 1, WORK, 1 )
386 CALL CHEMV( UPLO, N-K, -CONE, A( K+1, K+1 ), LDA, WORK,
387 $ 1, CZERO, A( K+1, K ), 1 )
388 A( K, K ) = A( K, K ) - REAL( CDOTC( N-K, WORK, 1,
398 T = ABS( A( K, K-1 ) )
399 AK = REAL( A( K-1, K-1 ) ) / T
400 AKP1 = REAL( A( K, K ) ) / T
401 AKKP1 = A( K, K-1 ) / T
402 D = T*( AK*AKP1-ONE )
403 A( K-1, K-1 ) = AKP1 / D
405 A( K, K-1 ) = -AKKP1 / D
410 CALL CCOPY( N-K, A( K+1, K ), 1, WORK, 1 )
411 CALL CHEMV( UPLO, N-K, -CONE, A( K+1, K+1 ), LDA, WORK,
412 $ 1, CZERO, A( K+1, K ), 1 )
413 A( K, K ) = A( K, K ) - REAL( CDOTC( N-K, WORK, 1,
415 A( K, K-1 ) = A( K, K-1 ) -
416 $ CDOTC( N-K, A( K+1, K ), 1, A( K+1, K-1 ),
418 CALL CCOPY( N-K, A( K+1, K-1 ), 1, WORK, 1 )
419 CALL CHEMV( UPLO, N-K, -CONE, A( K+1, K+1 ), LDA, WORK,
420 $ 1, CZERO, A( K+1, K-1 ), 1 )
421 A( K-1, K-1 ) = A( K-1, K-1 ) -
422 $ REAL( CDOTC( N-K, WORK, 1, A( K+1, K-1 ),
428.EQ.
IF( KSTEP1 ) THEN
437 $ CALL CSWAP( N-KP, A( KP+1, K ), 1, A( KP+1, KP ), 1 )
439 DO 90 J = K + 1, KP - 1
440 TEMP = CONJG( A( J, K ) )
441 A( J, K ) = CONJG( A( KP, J ) )
445 A( KP, K ) = CONJG( A( KP, K ) )
448 A( K, K ) = A( KP, KP )
462 $ CALL CSWAP( N-KP, A( KP+1, K ), 1, A( KP+1, KP ), 1 )
464 DO 100 J = K + 1, KP - 1
465 TEMP = CONJG( A( J, K ) )
466 A( J, K ) = CONJG( A( KP, J ) )
470 A( KP, K ) = CONJG( A( KP, K ) )
473 A( K, K ) = A( KP, KP )
477 A( K, K-1 ) = A( KP, K-1 )
488 $ CALL CSWAP( N-KP, A( KP+1, K ), 1, A( KP+1, KP ), 1 )
490 DO 110 J = K + 1, KP - 1
491 TEMP = CONJG( A( J, K ) )
492 A( J, K ) = CONJG( A( KP, J ) )
496 A( KP, K ) = CONJG( A( KP, K ) )
499 A( K, K ) = A( KP, KP )
subroutine xerbla(srname, info)
XERBLA
subroutine chetri_rook(uplo, n, a, lda, ipiv, work, info)
CHETRI_ROOK computes the inverse of HE matrix using the factorization obtained with the bounded Bunch...
subroutine cswap(n, cx, incx, cy, incy)
CSWAP
subroutine ccopy(n, cx, incx, cy, incy)
CCOPY
subroutine chemv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
CHEMV