214 SUBROUTINE dtpmqrt( SIDE, TRANS, M, N, K, L, NB, V, LDV, T, LDT,
215 $ A, LDA, B, LDB, WORK, INFO )
222 CHARACTER SIDE, TRANS
223 INTEGER INFO, K, LDV, LDA, LDB, M, N, L, NB, LDT
226 DOUBLE PRECISION V( ldv, * ), A( lda, * ), B( ldb, * ),
227 $ t( ldt, * ), work( * )
234 LOGICAL LEFT, RIGHT, TRAN, NOTRAN
235 INTEGER I, IB, MB, LB, KF, LDAQ, LDVQ
252 left = lsame( side,
'L' )
253 right = lsame( side,
'R' )
254 tran = lsame( trans,
'T' )
255 notran = lsame( trans,
'N' )
260 ELSE IF ( right )
THEN 264 IF( .NOT.left .AND. .NOT.right )
THEN 266 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN 268 ELSE IF( m.LT.0 )
THEN 270 ELSE IF( n.LT.0 )
THEN 272 ELSE IF( k.LT.0 )
THEN 274 ELSE IF( l.LT.0 .OR. l.GT.k )
THEN 276 ELSE IF( nb.LT.1 .OR. (nb.GT.k .AND. k.GT.0) )
THEN 278 ELSE IF( ldv.LT.ldvq )
THEN 280 ELSE IF( ldt.LT.nb )
THEN 282 ELSE IF( lda.LT.ldaq )
THEN 284 ELSE IF( ldb.LT.max( 1, m ) )
THEN 289 CALL xerbla(
'DTPMQRT', -info )
295 IF( m.EQ.0 .OR. n.EQ.0 .OR. k.EQ.0 )
RETURN 297 IF( left .AND. tran )
THEN 300 ib = min( nb, k-i+1 )
301 mb = min( m-l+i+ib-1, m )
307 CALL dtprfb(
'L',
'T',
'F',
'C', mb, n, ib, lb,
308 $ v( 1, i ), ldv, t( 1, i ), ldt,
309 $ a( i, 1 ), lda, b, ldb, work, ib )
312 ELSE IF( right .AND. notran )
THEN 315 ib = min( nb, k-i+1 )
316 mb = min( n-l+i+ib-1, n )
322 CALL dtprfb(
'R',
'N',
'F',
'C', m, mb, ib, lb,
323 $ v( 1, i ), ldv, t( 1, i ), ldt,
324 $ a( 1, i ), lda, b, ldb, work, m )
327 ELSE IF( left .AND. notran )
THEN 331 ib = min( nb, k-i+1 )
332 mb = min( m-l+i+ib-1, m )
338 CALL dtprfb(
'L',
'N',
'F',
'C', mb, n, ib, lb,
339 $ v( 1, i ), ldv, t( 1, i ), ldt,
340 $ a( i, 1 ), lda, b, ldb, work, ib )
343 ELSE IF( right .AND. tran )
THEN 347 ib = min( nb, k-i+1 )
348 mb = min( n-l+i+ib-1, n )
354 CALL dtprfb(
'R',
'T',
'F',
'C', m, mb, ib, lb,
355 $ v( 1, i ), ldv, t( 1, i ), ldt,
356 $ a( 1, i ), lda, b, ldb, work, m )
subroutine xerbla(SRNAME, INFO)
XERBLA
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 ...