176 SUBROUTINE dtplqt2( M, N, L, A, LDA, B, LDB, T, LDT, INFO )
183 INTEGER INFO, LDA, LDB, LDT, N, M, L
186 DOUBLE PRECISION A( LDA, * ), B( LDB, * ), T( LDT, * )
192 DOUBLE PRECISION ONE, ZERO
193 parameter( one = 1.0, zero = 0.0 )
196 INTEGER I, J, P, MP, NP
197 DOUBLE PRECISION ALPHA
212 ELSE IF( n.LT.0 )
THEN
214 ELSE IF( l.LT.0 .OR. l.GT.min(m,n) )
THEN
216 ELSE IF( lda.LT.max( 1, m ) )
THEN
218 ELSE IF( ldb.LT.max( 1, m ) )
THEN
220 ELSE IF( ldt.LT.max( 1, m ) )
THEN
224 CALL xerbla(
'DTPLQT2', -info )
230 IF( n.EQ.0 .OR. m.EQ.0 )
RETURN
237 CALL dlarfg( p+1, a( i, i ), b( i, 1 ), ldb, t( 1, i ) )
243 t( m, j ) = (a( i+j, i ))
245 CALL dgemv(
'N', m-i, p, one, b( i+1, 1 ), ldb,
246 $ b( i, 1 ), ldb, one, t( m, 1 ), ldt )
252 a( i+j, i ) = a( i+j, i ) + alpha*(t( m, j ))
254 CALL dger( m-i, p, alpha, t( m, 1 ), ldt,
255 $ b( i, 1 ), ldb, b( i+1, 1 ), ldb )
275 t( i, j ) = alpha*b( i, n-l+j )
277 CALL dtrmv(
'L',
'N',
'N', p, b( 1, np ), ldb,
282 CALL dgemv(
'N', i-1-p, l, alpha, b( mp, np ), ldb,
283 $ b( i, np ), ldb, zero, t( i,mp ), ldt )
287 CALL dgemv(
'N', i-1, n-l, alpha, b, ldb, b( i, 1 ), ldb,
288 $ one, t( i, 1 ), ldt )
292 CALL dtrmv(
'L',
'T',
'N', i-1, t, ldt, t( i, 1 ), ldt )
296 t( i, i ) = t( 1, i )
subroutine xerbla(srname, info)
subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
DGEMV
subroutine dger(m, n, alpha, x, incx, y, incy, a, lda)
DGER
subroutine dlarfg(n, alpha, x, incx, tau)
DLARFG generates an elementary reflector (Householder matrix).
subroutine dtplqt2(m, n, l, a, lda, b, ldb, t, ldt, info)
DTPLQT2 computes a LQ factorization of a real or complex "triangular-pentagonal" matrix,...
subroutine dtrmv(uplo, trans, diag, n, a, lda, x, incx)
DTRMV