210 SUBROUTINE dtpmlqt( SIDE, TRANS, M, N, K, L, MB, V, LDV, T,
212 $ A, LDA, B, LDB, WORK, INFO )
219 CHARACTER SIDE, TRANS
220 INTEGER INFO, K, LDV, LDA, LDB, M, N, L, MB, LDT
223 DOUBLE PRECISION V( LDV, * ), A( LDA, * ), B( LDB, * ),
224 $ T( LDT, * ), WORK( * )
231 LOGICAL LEFT, RIGHT, TRAN, NOTRAN
232 INTEGER I, IB, NB, LB, KF, LDAQ
249 left = lsame( side,
'L' )
250 right = lsame( side,
'R' )
251 tran = lsame( trans,
'T' )
252 notran = lsame( trans,
'N' )
256 ELSE IF ( right )
THEN
259 IF( .NOT.left .AND. .NOT.right )
THEN
261 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN
263 ELSE IF( m.LT.0 )
THEN
265 ELSE IF( n.LT.0 )
THEN
267 ELSE IF( k.LT.0 )
THEN
269 ELSE IF( l.LT.0 .OR. l.GT.k )
THEN
271 ELSE IF( mb.LT.1 .OR. (mb.GT.k .AND. k.GT.0) )
THEN
273 ELSE IF( ldv.LT.k )
THEN
275 ELSE IF( ldt.LT.mb )
THEN
277 ELSE IF( lda.LT.ldaq )
THEN
279 ELSE IF( ldb.LT.max( 1, m ) )
THEN
284 CALL xerbla(
'DTPMLQT', -info )
290 IF( m.EQ.0 .OR. n.EQ.0 .OR. k.EQ.0 )
RETURN
292 IF( left .AND. notran )
THEN
295 ib = min( mb, k-i+1 )
296 nb = min( m-l+i+ib-1, m )
302 CALL dtprfb(
'L',
'T',
'F',
'R', nb, n, ib, lb,
303 $ v( i, 1 ), ldv, t( 1, i ), ldt,
304 $ a( i, 1 ), lda, b, ldb, work, ib )
307 ELSE IF( right .AND. tran )
THEN
310 ib = min( mb, k-i+1 )
311 nb = min( n-l+i+ib-1, n )
317 CALL dtprfb(
'R',
'N',
'F',
'R', m, nb, ib, lb,
318 $ v( i, 1 ), ldv, t( 1, i ), ldt,
319 $ a( 1, i ), lda, b, ldb, work, m )
322 ELSE IF( left .AND. tran )
THEN
326 ib = min( mb, k-i+1 )
327 nb = min( m-l+i+ib-1, m )
333 CALL dtprfb(
'L',
'N',
'F',
'R', nb, n, ib, lb,
334 $ v( i, 1 ), ldv, t( 1, i ), ldt,
335 $ a( i, 1 ), lda, b, ldb, work, ib )
338 ELSE IF( right .AND. notran )
THEN
342 ib = min( mb, k-i+1 )
343 nb = min( n-l+i+ib-1, n )
349 CALL dtprfb(
'R',
'T',
'F',
'R', m, nb, ib, lb,
350 $ v( i, 1 ), ldv, t( 1, i ), ldt,
351 $ a( 1, i ), lda, b, ldb, work, m )
subroutine dtpmlqt(side, trans, m, n, k, l, mb, v, ldv, t, ldt, a, lda, b, ldb, work, info)
DTPMLQT
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 ...