150 SUBROUTINE ztzrzf( M, N, A, LDA, TAU, WORK, LWORK, INFO )
157 INTEGER INFO, LDA, LWORK, M, N
160 COMPLEX*16 A( lda, * ), TAU( * ), WORK( * )
167 parameter( zero = ( 0.0d+0, 0.0d+0 ) )
171 INTEGER I, IB, IWS, KI, KK, LDWORK, LWKMIN, LWKOPT,
172 $ m1, mu, nb, nbmin, nx
189 lquery = ( lwork.EQ.-1 )
192 ELSE IF( n.LT.m )
THEN 194 ELSE IF( lda.LT.max( 1, m ) )
THEN 199 IF( m.EQ.0 .OR. m.EQ.n )
THEN 206 nb = ilaenv( 1,
'ZGERQF',
' ', m, n, -1, -1 )
212 IF( lwork.LT.lwkmin .AND. .NOT.lquery )
THEN 218 CALL xerbla(
'ZTZRZF', -info )
220 ELSE IF( lquery )
THEN 228 ELSE IF( m.EQ.n )
THEN 238 IF( nb.GT.1 .AND. nb.LT.m )
THEN 242 nx = max( 0, ilaenv( 3,
'ZGERQF',
' ', m, n, -1, -1 ) )
249 IF( lwork.LT.iws )
THEN 255 nbmin = max( 2, ilaenv( 2,
'ZGERQF',
' ', m, n, -1,
261 IF( nb.GE.nbmin .AND. nb.LT.m .AND. nx.LT.m )
THEN 267 ki = ( ( m-nx-1 ) / nb )*nb
270 DO 20 i = m - kk + ki + 1, m - kk + 1, -nb
271 ib = min( m-i+1, nb )
276 CALL zlatrz( ib, n-i+1, n-m, a( i, i ), lda, tau( i ),
283 CALL zlarzt(
'Backward',
'Rowwise', n-m, ib, a( i, m1 ),
284 $ lda, tau( i ), work, ldwork )
288 CALL zlarzb(
'Right',
'No transpose',
'Backward',
289 $
'Rowwise', i-1, n-i+1, ib, n-m, a( i, m1 ),
290 $ lda, work, ldwork, a( 1, i ), lda,
291 $ work( ib+1 ), ldwork )
302 $
CALL zlatrz( mu, n, n-m, a, lda, tau, work )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zlatrz(M, N, L, A, LDA, TAU, WORK)
ZLATRZ factors an upper trapezoidal matrix by means of unitary transformations.
subroutine zlarzt(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT)
ZLARZT forms the triangular factor T of a block reflector H = I - vtvH.
subroutine zlarzb(SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V, LDV, T, LDT, C, LDC, WORK, LDWORK)
ZLARZB applies a block reflector or its conjugate-transpose to a general matrix.
subroutine ztzrzf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
ZTZRZF