212 SUBROUTINE dtpmqrt( SIDE, TRANS, M, N, K, L, NB, V, LDV, T,
214 $ A, LDA, B, LDB, WORK, INFO )
221 CHARACTER SIDE, TRANS
222 INTEGER INFO, K, LDV, LDA, LDB, M, N, L, NB, LDT
225 DOUBLE PRECISION V( LDV, * ), A( LDA, * ), B( LDB, * ),
226 $ T( LDT, * ), WORK( * )
233 LOGICAL LEFT, RIGHT, TRAN, NOTRAN
234 INTEGER I, IB, MB, LB, KF, LDAQ, LDVQ
251 left = lsame( side,
'L' )
252 right = lsame( side,
'R' )
253 tran = lsame( trans,
'T' )
254 notran = lsame( trans,
'N' )
259 ELSE IF ( right )
THEN
263 IF( .NOT.left .AND. .NOT.right )
THEN
265 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN
267 ELSE IF( m.LT.0 )
THEN
269 ELSE IF( n.LT.0 )
THEN
271 ELSE IF( k.LT.0 )
THEN
273 ELSE IF( l.LT.0 .OR. l.GT.k )
THEN
275 ELSE IF( nb.LT.1 .OR. (nb.GT.k .AND. k.GT.0) )
THEN
277 ELSE IF( ldv.LT.ldvq )
THEN
279 ELSE IF( ldt.LT.nb )
THEN
281 ELSE IF( lda.LT.ldaq )
THEN
283 ELSE IF( ldb.LT.max( 1, m ) )
THEN
288 CALL xerbla(
'DTPMQRT', -info )
294 IF( m.EQ.0 .OR. n.EQ.0 .OR. k.EQ.0 )
RETURN
296 IF( left .AND. tran )
THEN
299 ib = min( nb, k-i+1 )
300 mb = min( m-l+i+ib-1, m )
306 CALL dtprfb(
'L',
'T',
'F',
'C', mb, n, ib, lb,
307 $ v( 1, i ), ldv, t( 1, i ), ldt,
308 $ a( i, 1 ), lda, b, ldb, work, ib )
311 ELSE IF( right .AND. notran )
THEN
314 ib = min( nb, k-i+1 )
315 mb = min( n-l+i+ib-1, n )
321 CALL dtprfb(
'R',
'N',
'F',
'C', m, mb, ib, lb,
322 $ v( 1, i ), ldv, t( 1, i ), ldt,
323 $ a( 1, i ), lda, b, ldb, work, m )
326 ELSE IF( left .AND. notran )
THEN
330 ib = min( nb, k-i+1 )
331 mb = min( m-l+i+ib-1, m )
337 CALL dtprfb(
'L',
'N',
'F',
'C', mb, n, ib, lb,
338 $ v( 1, i ), ldv, t( 1, i ), ldt,
339 $ a( i, 1 ), lda, b, ldb, work, ib )
342 ELSE IF( right .AND. tran )
THEN
346 ib = min( nb, k-i+1 )
347 mb = min( n-l+i+ib-1, n )
353 CALL dtprfb(
'R',
'T',
'F',
'C', m, mb, ib, lb,
354 $ v( 1, i ), ldv, t( 1, i ), ldt,
355 $ a( 1, i ), lda, b, ldb, work, m )
subroutine dtpmqrt(side, trans, m, n, k, l, nb, v, ldv, t, ldt, a, lda, b, ldb, work, info)
DTPMQRT
subroutine dtprfb(side, trans, direct, storev, m, n, k, l, v, ldv, t, ldt, a, lda, b, ldb, work, ldwork)
DTPRFB applies a real "triangular-pentagonal" block reflector to a real matrix, which is composed of ...