172 SUBROUTINE dtpqrt2( M, N, L, A, LDA, B, LDB, T, LDT, INFO )
179 INTEGER INFO, LDA, LDB, LDT, N, M, L
182 DOUBLE PRECISION A( lda, * ), B( ldb, * ), T( ldt, * )
188 DOUBLE PRECISION ONE, ZERO
189 parameter( one = 1.0, zero = 0.0 )
192 INTEGER I, J, P, MP, NP
193 DOUBLE PRECISION ALPHA
208 ELSE IF( n.LT.0 )
THEN 210 ELSE IF( l.LT.0 .OR. l.GT.min(m,n) )
THEN 212 ELSE IF( lda.LT.max( 1, n ) )
THEN 214 ELSE IF( ldb.LT.max( 1, m ) )
THEN 216 ELSE IF( ldt.LT.max( 1, n ) )
THEN 220 CALL xerbla(
'DTPQRT2', -info )
226 IF( n.EQ.0 .OR. m.EQ.0 )
RETURN 233 CALL dlarfg( p+1, a( i, i ), b( 1, i ), 1, t( i, 1 ) )
239 t( j, n ) = (a( i, i+j ))
241 CALL dgemv(
'T', p, n-i, one, b( 1, i+1 ), ldb,
242 $ b( 1, i ), 1, one, t( 1, n ), 1 )
248 a( i, i+j ) = a( i, i+j ) + alpha*(t( j, n ))
250 CALL dger( p, n-i, alpha, b( 1, i ), 1,
251 $ t( 1, n ), 1, b( 1, i+1 ), ldb )
271 t( j, i ) = alpha*b( m-l+j, i )
273 CALL dtrmv(
'U',
'T',
'N', p, b( mp, 1 ), ldb,
278 CALL dgemv(
'T', l, i-1-p, alpha, b( mp, np ), ldb,
279 $ b( mp, i ), 1, zero, t( np, i ), 1 )
283 CALL dgemv(
'T', m-l, i-1, alpha, b, ldb, b( 1, i ), 1,
284 $ one, t( 1, i ), 1 )
288 CALL dtrmv(
'U',
'N',
'N', i-1, t, ldt, t( 1, i ), 1 )
292 t( i, i ) = t( i, 1 )
subroutine dlarfg(N, ALPHA, X, INCX, TAU)
DLARFG generates an elementary reflector (Householder matrix).
subroutine dtpqrt2(M, N, L, A, LDA, B, LDB, T, LDT, INFO)
DTPQRT2 computes a QR factorization of a real or complex "triangular-pentagonal" matrix, which is composed of a triangular block and a pentagonal block, using the compact WY representation for Q.
subroutine xerbla(SRNAME, INFO)
XERBLA
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 dtrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
DTRMV