166 SUBROUTINE zgemlqt( SIDE, TRANS, M, N, K, MB, V, LDV, T, LDT,
167 $ C, LDC, WORK, INFO )
174 CHARACTER SIDE, TRANS
175 INTEGER INFO, K, LDV, LDC, M, N, MB,
178 COMPLEX*16 V( LDV, * ), C( LDC, * ), T( LDT, * ), WORK( * )
185 LOGICAL LEFT, RIGHT, TRAN, NOTRAN
186 INTEGER I, IB, LDWORK, , Q
203 left = lsame( side,
'L' )
204 right = lsame( side, 'r
' )
205 TRAN = LSAME( TRANS, 'c
' )
206 NOTRAN = LSAME( TRANS, 'n
' )
211 ELSE IF ( RIGHT ) THEN
215.NOT..AND..NOT.
IF( LEFT RIGHT ) THEN
217.NOT..AND..NOT.
ELSE IF( TRAN NOTRAN ) THEN
219.LT.
ELSE IF( M0 ) THEN
221.LT.
ELSE IF( N0 ) THEN
223.LT..OR..GT.
ELSE IF( K0 KQ ) THEN
225.LT..OR..GT..AND..GT.
ELSE IF( MB1 (MBK K0)) THEN
227.LT.
ELSE IF( LDVMAX( 1, K ) ) THEN
229.LT.
ELSE IF( LDTMB ) THEN
231.LT.
ELSE IF( LDCMAX( 1, M ) ) THEN
236 CALL XERBLA( 'zgemlqt', -INFO )
242.EQ..OR..EQ..OR..EQ.
IF( M0 N0 K0 ) RETURN
244.AND.
IF( LEFT NOTRAN ) THEN
247 IB = MIN( MB, K-I+1 )
248 CALL ZLARFB( 'l
', 'c
', 'f
', 'r
', M-I+1, N, IB,
249 $ V( I, I ), LDV, T( 1, I ), LDT,
250 $ C( I, 1 ), LDC, WORK, LDWORK )
253.AND.
ELSE IF( RIGHT TRAN ) THEN
256 IB = MIN( MB, K-I+1 )
257 CALL ZLARFB( 'r
', 'n
', 'f
', 'r
', M, N-I+1, IB,
258 $ V( I, I ), LDV, T( 1, I ), LDT,
259 $ C( 1, I ), LDC, WORK, LDWORK )
262.AND.
ELSE IF( LEFT TRAN ) THEN
266 IB = MIN( MB, K-I+1 )
267 CALL ZLARFB( 'l
', 'n
', 'f
', 'r
', M-I+1, N, IB,
268 $ V( I, I ), LDV, T( 1, I ), LDT,
269 $ C( I, 1 ), LDC, WORK, LDWORK )
272.AND.
ELSE IF( RIGHT NOTRAN ) THEN
276 IB = MIN( MB, K-I+1 )
277 CALL ZLARFB( 'r
', 'c
', 'f
', 'r
', M, N-I+1, IB,
278 $ V( I, I ), LDV, T( 1, I ), LDT,
279 $ C( 1, I ), LDC, WORK, LDWORK )
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.
subroutine zgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, work, info)
ZGEMLQT