173 INTEGER info, lda, m, n
176 COMPLEX a( lda, * ), d( * )
183 parameter( one = 1.0e+0 )
185 parameter( cone = ( 1.0e+0, 0.0e+0 ) )
189 INTEGER i, iinfo, n1, n2
200 INTRINSIC abs, real, cmplx, aimag, sign, max, min
203 DOUBLE PRECISION cabs1
206 cabs1( z ) = abs( real( z ) ) + abs( aimag( z ) )
215 ELSE IF( n.LT.0 )
THEN
217 ELSE IF( lda.LT.max( 1, m ) )
THEN
221 CALL xerbla(
'CLAUNHR_COL_GETRFNP2', -info )
227 IF( min( m, n ).EQ.0 )
237 d( 1 ) = cmplx( -sign( one, real( a( 1, 1 ) ) ) )
241 a( 1, 1 ) = a( 1, 1 ) - d( 1 )
243 ELSE IF( n.EQ.1 )
THEN
250 d( 1 ) = cmplx( -sign( one, real( a( 1, 1 ) ) ) )
254 a( 1, 1 ) = a( 1, 1 ) - d( 1 )
264 IF( cabs1( a( 1, 1 ) ) .GE. sfmin )
THEN
265 CALL cscal( m-1, cone / a( 1, 1 ), a( 2, 1 ), 1 )
268 a( i, 1 ) = a( i, 1 ) / a( 1, 1 )
286 CALL ctrsm(
'R',
'U',
'N',
'N', m-n1, n1, cone, a, lda,
287 $ a( n1+1, 1 ), lda )
291 CALL ctrsm(
'L',
'L',
'N',
'U', n1, n2, cone, a, lda,
292 $ a( 1, n1+1 ), lda )
297 CALL cgemm(
'N',
'N', m-n1, n2, n1, -cone, a( n1+1, 1 ),
299 $ a( 1, n1+1 ), lda, cone, a( n1+1, n1+1 ), lda )
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