174 INTEGER info, lda, m, n
177 COMPLEX a( lda, * ), d( * )
184 parameter( one = 1.0e+0 )
186 parameter( cone = ( 1.0e+0, 0.0e+0 ) )
190 INTEGER i, iinfo, n1, n2
201 INTRINSIC abs, real, cmplx, aimag, sign, max, min
204 DOUBLE PRECISION cabs1
207 cabs1( z ) = abs( real( z ) ) + abs( aimag( z ) )
216 ELSE IF( n.LT.0 )
THEN
218 ELSE IF( lda.LT.max( 1, m ) )
THEN
222 CALL xerbla(
'CLAUNHR_COL_GETRFNP2', -info )
228 IF( min( m, n ).EQ.0 )
238 d( 1 ) = cmplx( -sign( one, real( a( 1, 1 ) ) ) )
242 a( 1, 1 ) = a( 1, 1 ) - d( 1 )
244 ELSE IF( n.EQ.1 )
THEN
251 d( 1 ) = cmplx( -sign( one, real( a( 1, 1 ) ) ) )
255 a( 1, 1 ) = a( 1, 1 ) - d( 1 )
265 IF( cabs1( a( 1, 1 ) ) .GE. sfmin )
THEN
266 CALL cscal( m-1, cone / a( 1, 1 ), a( 2, 1 ), 1 )
269 a( i, 1 ) = a( i, 1 ) / a( 1, 1 )
287 CALL ctrsm(
'R',
'U',
'N',
'N', m-n1, n1, cone, a, lda,
288 $ a( n1+1, 1 ), lda )
292 CALL ctrsm(
'L',
'L',
'N',
'U', n1, n2, cone, a, lda,
293 $ a( 1, n1+1 ), lda )
298 CALL cgemm(
'N',
'N', m-n1, n2, n1, -cone, a( n1+1, 1 ), lda,
299 $ a( 1, n1+1 ), lda, cone, a( n1+1, n1+1 ), lda )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cscal(N, CA, CX, INCX)
CSCAL
subroutine cgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CGEMM
subroutine ctrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRSM
recursive subroutine claunhr_col_getrfnp2(M, N, A, LDA, D, INFO)
CLAUNHR_COL_GETRFNP2
real function slamch(CMACH)
SLAMCH