151 SUBROUTINE cgemlqt( SIDE, TRANS, M, N, K, MB, V, LDV, T, LDT,
152 $ C, LDC, WORK, INFO )
159 CHARACTER SIDE, TRANS
160 INTEGER INFO, K, LDV, LDC, M, N, MB, LDT
163 COMPLEX V( ldv, * ), C( ldc, * ), T( ldt, * ), WORK( * )
170 LOGICAL LEFT, RIGHT, TRAN, NOTRAN
171 INTEGER I, IB, LDWORK, KF, Q
188 left = lsame( side,
'L' )
189 right = lsame( side,
'R' )
190 tran = lsame( trans,
'C' )
191 notran = lsame( trans,
'N' )
196 ELSE IF ( right )
THEN 200 IF( .NOT.left .AND. .NOT.right )
THEN 202 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN 204 ELSE IF( m.LT.0 )
THEN 206 ELSE IF( n.LT.0 )
THEN 208 ELSE IF( k.LT.0 .OR. k.GT.q )
THEN 210 ELSE IF( mb.LT.1 .OR. (mb.GT.k .AND. k.GT.0))
THEN 212 ELSE IF( ldv.LT.max( 1, k ) )
THEN 214 ELSE IF( ldt.LT.mb )
THEN 216 ELSE IF( ldc.LT.max( 1, m ) )
THEN 221 CALL xerbla(
'CGEMLQT', -info )
227 IF( m.EQ.0 .OR. n.EQ.0 .OR. k.EQ.0 )
RETURN 229 IF( left .AND. notran )
THEN 232 ib = min( mb, k-i+1 )
233 CALL clarfb(
'L',
'C',
'F',
'R', m-i+1, n, ib,
234 $ v( i, i ), ldv, t( 1, i ), ldt,
235 $ c( i, 1 ), ldc, work, ldwork )
238 ELSE IF( right .AND. tran )
THEN 241 ib = min( mb, k-i+1 )
242 CALL clarfb(
'R',
'N',
'F',
'R', m, n-i+1, ib,
243 $ v( i, i ), ldv, t( 1, i ), ldt,
244 $ c( 1, i ), ldc, work, ldwork )
247 ELSE IF( left .AND. tran )
THEN 251 ib = min( mb, k-i+1 )
252 CALL clarfb(
'L',
'N',
'F',
'R', m-i+1, n, ib,
253 $ v( i, i ), ldv, t( 1, i ), ldt,
254 $ c( i, 1 ), ldc, work, ldwork )
257 ELSE IF( right .AND. notran )
THEN 261 ib = min( mb, k-i+1 )
262 CALL clarfb(
'R',
'C',
'F',
'R', m, n-i+1, ib,
263 $ v( i, i ), ldv, t( 1, i ), ldt,
264 $ c( 1, i ), ldc, work, ldwork )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine clarfb(SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, T, LDT, C, LDC, WORK, LDWORK)
CLARFB applies a block reflector or its conjugate-transpose to a general rectangular matrix...
subroutine cgemlqt(SIDE, TRANS, M, N, K, MB, V, LDV, T, LDT, C, LDC, WORK, INFO)
CGEMLQT