174 SUBROUTINE ztpqrt2( M, N, L, A, LDA, B, LDB, T, LDT, INFO )
182 INTEGER info, lda, ldb, ldt, n, m, l
185 COMPLEX*16 a( lda, * ), b( ldb, * ), t( ldt, * )
192 parameter( one = (1.0,0.0), zero = (0.0,0.0) )
195 INTEGER i, j, p, mp, np
211 ELSE IF( n.LT.0 )
THEN
213 ELSE IF( l.LT.0 .OR. l.GT.min(m,n) )
THEN
215 ELSE IF( lda.LT.max( 1, n ) )
THEN
217 ELSE IF( ldb.LT.max( 1, m ) )
THEN
219 ELSE IF( ldt.LT.max( 1, n ) )
THEN
223 CALL
xerbla(
'ZTPQRT2', -info )
229 IF( n.EQ.0 .OR. m.EQ.0 ) return
236 CALL
zlarfg( p+1, a( i, i ), b( 1, i ), 1, t( i, 1 ) )
242 t( j, n ) = conjg(a( i, i+j ))
244 CALL
zgemv(
'C', p, n-i, one, b( 1, i+1 ), ldb,
245 $ b( 1, i ), 1, one, t( 1, n ), 1 )
249 alpha = -conjg(t( i, 1 ))
251 a( i, i+j ) = a( i, i+j ) + alpha*conjg(t( j, n ))
253 CALL
zgerc( p, n-i, alpha, b( 1, i ), 1,
254 $ t( 1, n ), 1, b( 1, i+1 ), ldb )
274 t( j, i ) = alpha*b( m-l+j, i )
276 CALL
ztrmv(
'U',
'C',
'N', p, b( mp, 1 ), ldb,
281 CALL
zgemv(
'C', l, i-1-p, alpha, b( mp, np ), ldb,
282 $ b( mp, i ), 1, zero, t( np, i ), 1 )
286 CALL
zgemv(
'C', m-l, i-1, alpha, b, ldb, b( 1, i ), 1,
287 $ one, t( 1, i ), 1 )
291 CALL
ztrmv(
'U',
'N',
'N', i-1, t, ldt, t( 1, i ), 1 )
295 t( i, i ) = t( i, 1 )