109 SUBROUTINE zgetrf( M, N, A, LDA, IPIV, INFO )
117 INTEGER info, lda, m, n
121 COMPLEX*16 a( lda, * )
128 parameter( one = ( 1.0d+0, 0.0d+0 ) )
131 INTEGER i, iinfo,
j, jb, nb
150 ELSE IF( n.LT.0 )
THEN
152 ELSE IF( lda.LT.max( 1, m ) )
THEN
156 CALL
xerbla(
'ZGETRF', -info )
162 IF( m.EQ.0 .OR. n.EQ.0 )
167 nb =
ilaenv( 1,
'ZGETRF',
' ', m, n, -1, -1 )
168 IF( nb.LE.1 .OR. nb.GE.min( m, n ) )
THEN
172 CALL
zgetf2( m, n, a, lda, ipiv, info )
177 DO 20
j = 1, min( m, n ), nb
178 jb = min( min( m, n )-
j+1, nb )
183 CALL
zgetf2( m-
j+1, jb, a(
j,
j ), lda, ipiv(
j ), iinfo )
187 IF( info.EQ.0 .AND. iinfo.GT.0 )
188 $ info = iinfo +
j - 1
189 DO 10 i =
j, min( m,
j+jb-1 )
190 ipiv( i ) =
j - 1 + ipiv( i )
195 CALL
zlaswp(
j-1, a, lda,
j,
j+jb-1, ipiv, 1 )
201 CALL
zlaswp( n-
j-jb+1, a( 1,
j+jb ), lda,
j,
j+jb-1,
206 CALL
ztrsm(
'Left',
'Lower',
'No transpose',
'Unit', jb,
207 $ n-
j-jb+1, one, a(
j,
j ), lda, a(
j,
j+jb ),
213 CALL
zgemm(
'No transpose',
'No transpose', m-
j-jb+1,
214 $ n-
j-jb+1, jb, -one, a(
j+jb,
j ), lda,
215 $ a(
j,
j+jb ), lda, one, a(
j+jb,
j+jb ),
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRSM
subroutine zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZGEMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zgetf2(M, N, A, LDA, IPIV, INFO)
ZGETF2 computes the LU factorization of a general m-by-n matrix using partial pivoting with row inter...
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
subroutine zlaswp(N, A, LDA, K1, K2, IPIV, INCX)
ZLASWP performs a series of row interchanges on a general rectangular matrix.
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
subroutine zgetrf(M, N, A, LDA, IPIV, INFO)
ZGETRF VARIANT: Crout Level 3 BLAS version of the algorithm.