168 SUBROUTINE zgemlqt( SIDE, TRANS, M, N, K, MB, V, LDV, T, LDT,
169 $ C, LDC, WORK, INFO )
177 CHARACTER SIDE, TRANS
178 INTEGER INFO, K, LDV, LDC, M, N, MB, LDT
181 COMPLEX*16 V( ldv, * ), C( ldc, * ), T( ldt, * ), WORK( * )
188 LOGICAL LEFT, RIGHT, TRAN, NOTRAN
189 INTEGER I, IB, LDWORK, KF, Q
206 left = lsame( side,
'L' )
207 right = lsame( side,
'R' )
208 tran = lsame( trans,
'C' )
209 notran = lsame( trans,
'N' )
213 ELSE IF ( right )
THEN 216 IF( .NOT.left .AND. .NOT.right )
THEN 218 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN 220 ELSE IF( m.LT.0 )
THEN 222 ELSE IF( n.LT.0 )
THEN 224 ELSE IF( k.LT.0)
THEN 226 ELSE IF( mb.LT.1 .OR. (mb.GT.k .AND. k.GT.0))
THEN 228 ELSE IF( ldv.LT.max( 1, k ) )
THEN 230 ELSE IF( ldt.LT.mb )
THEN 232 ELSE IF( ldc.LT.max( 1, m ) )
THEN 237 CALL xerbla(
'ZGEMLQT', -info )
243 IF( m.EQ.0 .OR. n.EQ.0 .OR. k.EQ.0 )
RETURN 245 IF( left .AND. notran )
THEN 248 ib = min( mb, k-i+1 )
249 CALL zlarfb(
'L',
'C',
'F',
'R', m-i+1, n, ib,
250 $ v( i, i ), ldv, t( 1, i ), ldt,
251 $ c( i, 1 ), ldc, work, ldwork )
254 ELSE IF( right .AND. tran )
THEN 257 ib = min( mb, k-i+1 )
258 CALL zlarfb(
'R',
'N',
'F',
'R', m, n-i+1, ib,
259 $ v( i, i ), ldv, t( 1, i ), ldt,
260 $ c( 1, i ), ldc, work, ldwork )
263 ELSE IF( left .AND. tran )
THEN 267 ib = min( mb, k-i+1 )
268 CALL zlarfb(
'L',
'N',
'F',
'R', m-i+1, n, ib,
269 $ v( i, i ), ldv, t( 1, i ), ldt,
270 $ c( i, 1 ), ldc, work, ldwork )
273 ELSE IF( right .AND. notran )
THEN 277 ib = min( mb, k-i+1 )
278 CALL zlarfb(
'R',
'C',
'F',
'R', m, n-i+1, ib,
279 $ v( i, i ), ldv, t( 1, i ), ldt,
280 $ c( 1, i ), ldc, work, ldwork )
subroutine zgemlqt(SIDE, TRANS, M, N, K, MB, V, LDV, T, LDT, C, LDC, WORK, INFO)
ZGEMLQT
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zlarfb(SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, T, LDT, C, LDC, WORK, LDWORK)
ZLARFB applies a block reflector or its conjugate-transpose to a general rectangular matrix...