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)
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 ...