109 SUBROUTINE sgetrf( M, N, A, LDA, IPIV, INFO )
117 INTEGER info, lda, m, n
128 parameter( one = 1.0e+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(
'SGETRF', -info )
162 IF( m.EQ.0 .OR. n.EQ.0 )
167 nb =
ilaenv( 1,
'SGETRF',
' ', m, n, -1, -1 )
168 IF( nb.LE.1 .OR. nb.GE.min( m, n ) )
THEN
172 CALL
sgetf2( 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
sgetf2( 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
slaswp(
j-1, a, lda,
j,
j+jb-1, ipiv, 1 )
201 CALL
slaswp( n-
j-jb+1, a( 1,
j+jb ), lda,
j,
j+jb-1,
206 CALL
strsm(
'Left',
'Lower',
'No transpose',
'Unit', jb,
207 $ n-
j-jb+1, one, a(
j,
j ), lda, a(
j,
j+jb ),
213 CALL
sgemm(
'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 sgetrf(M, N, A, LDA, IPIV, INFO)
SGETRF
subroutine xerbla(SRNAME, INFO)
XERBLA
INTEGER function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
subroutine sgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SGEMM
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
subroutine sgetf2(M, N, A, LDA, IPIV, INFO)
SGETF2 computes the LU factorization of a general m-by-n matrix using partial pivoting with row inter...
subroutine strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM
subroutine slaswp(N, A, LDA, K1, K2, IPIV, INCX)
SLASWP performs a series of row interchanges on a general rectangular matrix.