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