252 COMPLEX A( LDA, * ), E( * )
259 parameter( zero = 0.0e+0, one = 1.0e+0 )
261 parameter( eight = 8.0e+0, sevten = 17.0e+0 )
263 parameter( cone = ( 1.0e+0, 0.0e+0 ),
264 $ czero = ( 0.0e+0, 0.0e+0 ) )
268 INTEGER I, IMAX, J, JMAX, ITEMP, K, KK, KP, KSTEP,
270 REAL ABSAKK, ALPHA, COLMAX, ROWMAX, STEMP, SFMIN
271 COMPLEX D11, D12, D21, D22, T, WK, WKM1, WKP1, Z
277 EXTERNAL lsame, icamax, slamch
283 INTRINSIC abs,
max, sqrt, aimag, real
289 cabs1( z ) = abs( real( z ) ) + abs( aimag( z ) )
296 upper = lsame( uplo,
'U' )
297 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
299 ELSE IF( n.LT.0 )
THEN
301 ELSE IF( lda.LT.
max( 1, n ) )
THEN
311 ALPHA = ( ONE+SQRT( SEVTEN ) ) / EIGHT
315 SFMIN = SLAMCH( 's
' )
342 ABSAKK = CABS1( A( K, K ) )
349 IMAX = ICAMAX( K-1, A( 1, K ), 1 )
350 COLMAX = CABS1( A( IMAX, K ) )
355.EQ.
IF( (MAX( ABSAKK, COLMAX )ZERO) ) THEN
375.NOT..LT.
IF( ( ABSAKKALPHA*COLMAX ) ) THEN
396 JMAX = IMAX + ICAMAX( K-IMAX, A( IMAX, IMAX+1 ),
398 ROWMAX = CABS1( A( IMAX, JMAX ) )
404 ITEMP = ICAMAX( IMAX-1, A( 1, IMAX ), 1 )
405 STEMP = CABS1( A( ITEMP, IMAX ) )
406.GT.
IF( STEMPROWMAX ) THEN
415.NOT..LT.
IF( ( CABS1( A( IMAX, IMAX ) )ALPHA*ROWMAX ))
427.EQ..OR..LE.
ELSE IF( ( PJMAX )( ROWMAXCOLMAX ) ) THEN
446.NOT.
IF( DONE ) GOTO 12
454.EQ..AND..NE.
IF( ( KSTEP2 ) ( PK ) ) THEN
460 $ CALL CSWAP( P-1, A( 1, K ), 1, A( 1, P ), 1 )
462 $ CALL CSWAP( K-P-1, A( P+1, K ), 1, A( P, P+1 ),
465 A( K, K ) = A( P, P )
472 $ CALL CSWAP( N-K, A( K, K+1 ), LDA, A( P, K+1 ), LDA )
485 $ CALL CSWAP( KP-1, A( 1, KK ), 1, A( 1, KP ), 1 )
486.GT..AND..LT.
IF( ( KK1 ) ( KP(KK-1) ) )
487 $ CALL CSWAP( KK-KP-1, A( KP+1, KK ), 1, A( KP, KP+1 ),
490 A( KK, KK ) = A( KP, KP )
492.EQ.
IF( KSTEP2 ) THEN
494 A( K-1, K ) = A( KP, K )
502 $ CALL CSWAP( N-K, A( KK, K+1 ), LDA, A( KP, K+1 ),
509.EQ.
IF( KSTEP1 ) THEN
522.GE.
IF( CABS1( A( K, K ) )SFMIN ) THEN
528 D11 = CONE / A( K, K )
529 CALL CSYR( UPLO, K-1, -D11, A( 1, K ), 1, A, LDA )
533 CALL CSCAL( K-1, D11, A( 1, K ), 1 )
540 A( II, K ) = A( II, K ) / D11
548 CALL CSYR( UPLO, K-1, -D11, A( 1, K ), 1, A, LDA )
576 D22 = A( K-1, K-1 ) / D12
577 D11 = A( K, K ) / D12
578 T = CONE / ( D11*D22-CONE )
580 DO 30 J = K - 2, 1, -1
582 WKM1 = T*( D11*A( J, K-1 )-A( J, K ) )
583 WK = T*( D22*A( J, K )-A( J, K-1 ) )
586 A( I, J ) = A( I, J ) - (A( I, K ) / D12 )*WK -
587 $ ( A( I, K-1 ) / D12 )*WKM1
593 A( J, K-1 ) = WKM1 / D12
614.EQ.
IF( KSTEP1 ) THEN
652 ABSAKK = CABS1( A( K, K ) )
659 IMAX = K + ICAMAX( N-K, A( K+1, K ), 1 )
660 COLMAX = CABS1( A( IMAX, K ) )
665.EQ.
IF( ( MAX( ABSAKK, COLMAX )ZERO ) ) THEN
685.NOT..LT.
IF( ( ABSAKKALPHA*COLMAX ) ) THEN
706 JMAX = K - 1 + ICAMAX( IMAX-K, A( IMAX, K ), LDA )
707 ROWMAX = CABS1( A( IMAX, JMAX ) )
713 ITEMP = IMAX + ICAMAX( N-IMAX, A( IMAX+1, IMAX ),
715 STEMP = CABS1( A( ITEMP, IMAX ) )
716.GT.
IF( STEMPROWMAX ) THEN
725.NOT..LT.
IF( ( CABS1( A( IMAX, IMAX ) )ALPHA*ROWMAX ))
737.EQ..OR..LE.
ELSE IF( ( PJMAX )( ROWMAXCOLMAX ) ) THEN
756.NOT.
IF( DONE ) GOTO 42
764.EQ..AND..NE.
IF( ( KSTEP2 ) ( PK ) ) THEN
770 $ CALL CSWAP( N-P, A( P+1, K ), 1, A( P+1, P ), 1 )
772 $ CALL CSWAP( P-K-1, A( K+1, K ), 1, A( P, K+1 ), LDA )
774 A( K, K ) = A( P, P )
781 $ CALL CSWAP( K-1, A( K, 1 ), LDA, A( P, 1 ), LDA )
794 $ CALL CSWAP( N-KP, A( KP+1, KK ), 1, A( KP+1, KP ), 1 )
795.LT..AND..GT.
IF( ( KKN ) ( KP(KK+1) ) )
796 $ CALL CSWAP( KP-KK-1, A( KK+1, KK ), 1, A( KP, KK+1 ),
799 A( KK, KK ) = A( KP, KP )
801.EQ.
IF( KSTEP2 ) THEN
803 A( K+1, K ) = A( KP, K )
811 $ CALL CSWAP( K-1, A( KK, 1 ), LDA, A( KP, 1 ), LDA )
817.EQ.
IF( KSTEP1 ) THEN
830.GE.
IF( CABS1( A( K, K ) )SFMIN ) THEN
836 D11 = CONE / A( K, K )
837 CALL CSYR( UPLO, N-K, -D11, A( K+1, K ), 1,
838 $ A( K+1, K+1 ), LDA )
842 CALL CSCAL( N-K, D11, A( K+1, K ), 1 )
849 A( II, K ) = A( II, K ) / D11
857 CALL CSYR( UPLO, N-K, -D11, A( K+1, K ), 1,
858 $ A( K+1, K+1 ), LDA )
887 D11 = A( K+1, K+1 ) / D21
888 D22 = A( K, K ) / D21
889 T = CONE / ( D11*D22-CONE )
895 WK = T*( D11*A( J, K )-A( J, K+1 ) )
896 WKP1 = T*( D22*A( J, K+1 )-A( J, K ) )
901 A( I, J ) = A( I, J ) - ( A( I, K ) / D21 )*WK -
902 $ ( A( I, K+1 ) / D21 )*WKP1
908 A( J, K+1 ) = WKP1 / D21
929.EQ.
IF( KSTEP1 ) THEN
subroutine csyr(uplo, n, alpha, x, incx, a, lda)
CSYR performs the symmetric rank-1 update of a complex symmetric matrix.
subroutine csytf2_rk(uplo, n, a, lda, e, ipiv, info)
CSYTF2_RK computes the factorization of a complex symmetric indefinite matrix using the bounded Bunch...