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