1 SUBROUTINE dgetf2( M, N, A, LDA, IPIV, INFO )
9 INTEGER INFO, LDA, M, N
13 DOUBLE PRECISION A( LDA, * )
62 DOUBLE PRECISION ONE, ZERO
63 parameter( one = 1.0d+0, zero = 0.0d+0 )
85 ELSE IF( n.LT.0 )
THEN
87 ELSE IF( lda.LT.max( 1, m ) )
THEN
91 CALL xerbla(
'DGETF2', -info )
97 IF( m.EQ.0 .OR. n.EQ.0 )
100 DO 10 j = 1, min( m, n )
104 jp = j - 1 + idamax( m-j+1, a( j, j ), 1 )
106 IF( a( jp, j ).NE.zero )
THEN
111 $
CALL dswap( n, a( j, 1 ), lda, a( jp, 1 ), lda )
116 $
CALL dscal( m-j, one / a( j, j ), a( j+1, j ), 1 )
118 ELSE IF( info.EQ.0 )
THEN
123 IF( j.LT.min( m, n ) )
THEN
127 CALL dger( m-j, n-j, -one, a( j+1, j ), 1, a( j, j+1 ), lda,
128 $ a( j+1, j+1 ), lda )
subroutine dger(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
subroutine dgetf2(M, N, A, LDA, IPIV, INFO)
subroutine dscal(n, da, dx, incx)
subroutine dswap(n, dx, incx, dy, incy)
subroutine xerbla(SRNAME, INFO)