214 SUBROUTINE ctpmqrt( 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 COMPLEX V( ldv, * ), A( lda, * ), B( ldb, * ), T( ldt, * ),
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,
'C' )
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(
'CTPMQRT', -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 ctprfb(
'L',
'C',
'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 ctprfb(
'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 ctprfb(
'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 ctprfb(
'R',
'C',
'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 ctpmqrt(SIDE, TRANS, M, N, K, L, NB, V, LDV, T, LDT, A, LDA, B, LDB, WORK, INFO)
CTPMQRT
subroutine ctprfb(SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V, LDV, T, LDT, A, LDA, B, LDB, WORK, LDWORK)
CTPRFB applies a complex "triangular-pentagonal" block reflector to a complex matrix, which is composed of two blocks.