174 INTEGER info, lda, m, n
177 DOUBLE PRECISION a( lda, * ), d( * )
184 parameter( one = 1.0d+0 )
187 DOUBLE PRECISION sfmin
188 INTEGER i, iinfo, n1, n2
198 INTRINSIC abs, dsign, max, min
207 ELSE IF( n.LT.0 )
THEN
209 ELSE IF( lda.LT.max( 1, m ) )
THEN
213 CALL xerbla(
'DLAORHR_COL_GETRFNP2', -info )
219 IF( min( m, n ).EQ.0 )
229 d( 1 ) = -dsign( one, a( 1, 1 ) )
233 a( 1, 1 ) = a( 1, 1 ) - d( 1 )
235 ELSE IF( n.EQ.1 )
THEN
242 d( 1 ) = -dsign( one, a( 1, 1 ) )
246 a( 1, 1 ) = a( 1, 1 ) - d( 1 )
256 IF( abs( a( 1, 1 ) ) .GE. sfmin )
THEN
257 CALL dscal( m-1, one / a( 1, 1 ), a( 2, 1 ), 1 )
260 a( i, 1 ) = a( i, 1 ) / a( 1, 1 )
278 CALL dtrsm(
'R',
'U',
'N',
'N', m-n1, n1, one, a, lda,
279 $ a( n1+1, 1 ), lda )
283 CALL dtrsm(
'L',
'L',
'N',
'U', n1, n2, one, a, lda,
284 $ a( 1, n1+1 ), lda )
289 CALL dgemm(
'N',
'N', m-n1, n2, n1, -one, a( n1+1, 1 ), lda,
290 $ a( 1, n1+1 ), lda, one, a( n1+1, n1+1 ), lda )
double precision function dlamch(CMACH)
DLAMCH
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dscal(N, DA, DX, INCX)
DSCAL
subroutine dtrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRSM
subroutine dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM
recursive subroutine dlaorhr_col_getrfnp2(M, N, A, LDA, D, INFO)
DLAORHR_COL_GETRFNP2