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
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
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
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.