197 SUBROUTINE ctpmlqt( SIDE, TRANS, M, N, K, L, MB, V, LDV, T, LDT,
198 $ A, LDA, B, LDB, WORK, INFO )
205 CHARACTER SIDE, TRANS
206 INTEGER INFO, K, LDV, LDA, LDB, M, N, L, MB, LDT
209 COMPLEX V( ldv, * ), A( lda, * ), B( ldb, * ),
210 $ t( ldt, * ), work( * )
217 LOGICAL LEFT, RIGHT, TRAN, NOTRAN
218 INTEGER I, IB, NB, LB, KF, LDAQ
235 left = lsame( side,
'L' )
236 right = lsame( side,
'R' )
237 tran = lsame( trans,
'C' )
238 notran = lsame( trans,
'N' )
242 ELSE IF ( right )
THEN 245 IF( .NOT.left .AND. .NOT.right )
THEN 247 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN 249 ELSE IF( m.LT.0 )
THEN 251 ELSE IF( n.LT.0 )
THEN 253 ELSE IF( k.LT.0 )
THEN 255 ELSE IF( l.LT.0 .OR. l.GT.k )
THEN 257 ELSE IF( mb.LT.1 .OR. (mb.GT.k .AND. k.GT.0) )
THEN 259 ELSE IF( ldv.LT.k )
THEN 261 ELSE IF( ldt.LT.mb )
THEN 263 ELSE IF( lda.LT.ldaq )
THEN 265 ELSE IF( ldb.LT.max( 1, m ) )
THEN 270 CALL xerbla(
'CTPMLQT', -info )
276 IF( m.EQ.0 .OR. n.EQ.0 .OR. k.EQ.0 )
RETURN 278 IF( left .AND. notran )
THEN 281 ib = min( mb, k-i+1 )
282 nb = min( m-l+i+ib-1, m )
288 CALL ctprfb(
'L',
'C',
'F',
'R', nb, n, ib, lb,
289 $ v( i, 1 ), ldv, t( 1, i ), ldt,
290 $ a( i, 1 ), lda, b, ldb, work, ib )
293 ELSE IF( right .AND. tran )
THEN 296 ib = min( mb, k-i+1 )
297 nb = min( n-l+i+ib-1, n )
303 CALL ctprfb(
'R',
'N',
'F',
'R', m, nb, ib, lb,
304 $ v( i, 1 ), ldv, t( 1, i ), ldt,
305 $ a( 1, i ), lda, b, ldb, work, m )
308 ELSE IF( left .AND. tran )
THEN 312 ib = min( mb, k-i+1 )
313 nb = min( m-l+i+ib-1, m )
319 CALL ctprfb(
'L',
'N',
'F',
'R', nb, n, ib, lb,
320 $ v( i, 1 ), ldv, t( 1, i ), ldt,
321 $ a( i, 1 ), lda, b, ldb, work, ib )
324 ELSE IF( right .AND. notran )
THEN 328 ib = min( mb, k-i+1 )
329 nb = min( n-l+i+ib-1, n )
335 CALL ctprfb(
'R',
'C',
'F',
'R', m, nb, ib, lb,
336 $ v( i, 1 ), ldv, t( 1, i ), ldt,
337 $ a( 1, i ), lda, b, ldb, work, m )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ctpmlqt(SIDE, TRANS, M, N, K, L, MB, V, LDV, T, LDT, A, LDA, B, LDB, WORK, INFO)
CTPMLQT
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.