1 SUBROUTINE zgetrf( M, N, A, LDA, IPIV, INFO )
9 INTEGER INFO, LDA, M, N
13 COMPLEX*16 A( LDA, * )
63 parameter( one = ( 1.0d+0, 0.0d+0 ) )
66 INTEGER I, IINFO, J, JB, NB
85 ELSE IF( n.LT.0 )
THEN
87 ELSE IF( lda.LT.max( 1, m ) )
THEN
91 CALL xerbla(
'ZGETRF', -info )
97 IF( m.EQ.0 .OR. n.EQ.0 )
102 nb = ilaenv( 1,
'ZGETRF',
' ', m, n, -1, -1 )
103 IF( nb.LE.1 .OR. nb.GE.min( m, n ) )
THEN
107 CALL zgetf2( m, n, a, lda, ipiv, info )
112 DO 20 j = 1, min( m, n ), nb
113 jb = min( min( m, n )-j+1, nb )
118 CALL zgetf2( m-j+1, jb, a( j, j ), lda, ipiv( j ), iinfo )
122 IF( info.EQ.0 .AND. iinfo.GT.0 )
123 $ info = iinfo + j - 1
124 DO 10 i = j, min( m, j+jb-1 )
125 ipiv( i ) = j - 1 + ipiv( i )
130 CALL zlaswp( j-1, a, lda, j, j+jb-1, ipiv, 1 )
136 CALL zlaswp( n-j-jb+1, a( 1, j+jb ), lda, j, j+jb-1,
141 CALL ztrsm(
'Left',
'Lower',
'No transpose',
'Unit', jb,
142 $ n-j-jb+1, one, a( j, j ), lda, a( j, j+jb ),
148 CALL zgemm(
'No transpose',
'No transpose', m-j-jb+1,
149 $ n-j-jb+1, jb, -one, a( j+jb, j ), lda,
150 $ a( j, j+jb ), lda, one, a( j+jb, j+jb ),
subroutine xerbla(SRNAME, INFO)
subroutine zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
subroutine zgetf2(M, N, A, LDA, IPIV, INFO)
subroutine zgetrf(M, N, A, LDA, IPIV, INFO)
subroutine zlaswp(N, A, LDA, K1, K2, IPIV, INCX)
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)