152 SUBROUTINE stzrzf( M, N, A, LDA, TAU, WORK, LWORK, INFO )
160 INTEGER INFO, LDA, LWORK, M, N
163 REAL A( lda, * ), TAU( * ), WORK( * )
170 parameter( zero = 0.0e+0 )
174 INTEGER I, IB, IWS, KI, KK, LDWORK, LWKMIN, LWKOPT,
175 $ m1, mu, nb, nbmin, nx
192 lquery = ( lwork.EQ.-1 )
195 ELSE IF( n.LT.m )
THEN
197 ELSE IF( lda.LT.max( 1, m ) )
THEN
202 IF( m.EQ.0 .OR. m.EQ.n )
THEN
209 nb = ilaenv( 1,
'SGERQF',
' ', m, n, -1, -1 )
215 IF( lwork.LT.lwkmin .AND. .NOT.lquery )
THEN
221 CALL
xerbla(
'STZRZF', -info )
223 ELSE IF( lquery )
THEN
231 ELSE IF( m.EQ.n )
THEN
241 IF( nb.GT.1 .AND. nb.LT.m )
THEN
245 nx = max( 0, ilaenv( 3,
'SGERQF',
' ', m, n, -1, -1 ) )
252 IF( lwork.LT.iws )
THEN
258 nbmin = max( 2, ilaenv( 2,
'SGERQF',
' ', m, n, -1,
264 IF( nb.GE.nbmin .AND. nb.LT.m .AND. nx.LT.m )
THEN
270 ki = ( ( m-nx-1 ) / nb )*nb
273 DO 20 i = m - kk + ki + 1, m - kk + 1, -nb
274 ib = min( m-i+1, nb )
279 CALL
slatrz( ib, n-i+1, n-m, a( i, i ), lda, tau( i ),
286 CALL
slarzt(
'Backward',
'Rowwise', n-m, ib, a( i, m1 ),
287 $ lda, tau( i ), work, ldwork )
291 CALL
slarzb(
'Right',
'No transpose',
'Backward',
292 $
'Rowwise', i-1, n-i+1, ib, n-m, a( i, m1 ),
293 $ lda, work, ldwork, a( 1, i ), lda,
294 $ work( ib+1 ), ldwork )
305 $ CALL
slatrz( mu, n, n-m, a, lda, tau, work )
subroutine slarzt(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT)
SLARZT forms the triangular factor T of a block reflector H = I - vtvH.
subroutine slarzb(SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V, LDV, T, LDT, C, LDC, WORK, LDWORK)
SLARZB applies a block reflector or its transpose to a general matrix.
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine slatrz(M, N, L, A, LDA, TAU, WORK)
SLATRZ factors an upper trapezoidal matrix by means of orthogonal transformations.
subroutine stzrzf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
STZRZF