98 DOUBLE PRECISION FUNCTION dtzt01( M, N, A, AF, LDA, TAU, WORK,
107 INTEGER lda, lwork, m, n
110 DOUBLE PRECISION a( lda, * ), af( lda, * ), tau( * ),
117 DOUBLE PRECISION zero, one
118 parameter( zero = 0.0d0, one = 1.0d0 )
122 DOUBLE PRECISION norma
125 DOUBLE PRECISION rwork( 1 )
141 IF( lwork.LT.m*n+m )
THEN
142 CALL
xerbla(
'DTZT01', 8 )
148 IF( m.LE.0 .OR. n.LE.0 )
151 norma =
dlange(
'One-norm', m, n, a, lda, rwork )
155 CALL
dlaset(
'Full', m, n, zero, zero, work, m )
158 work( ( j-1 )*m+i ) = af( i, j )
165 CALL
dlatzm(
'Right', i, n-m+1, af( i, m+1 ), lda, tau( i ),
166 $ work( ( i-1 )*m+1 ), work( m*m+1 ), m,
173 CALL
daxpy( m, -one, a( 1, i ), 1, work( ( i-1 )*m+1 ), 1 )