166 SUBROUTINE zgemlq( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
167 $ C, LDC, WORK, LWORK, INFO )
175 CHARACTER SIDE, TRANS
176 INTEGER INFO, LDA, M, N, K, TSIZE, LWORK, LDC
179 COMPLEX*16 A( lda, * ), T( * ), C( ldc, * ), WORK( * )
186 LOGICAL LEFT, RIGHT, TRAN, NOTRAN, LQUERY
187 INTEGER MB, NB, LW, NBLCKS, MN
197 INTRINSIC int, max, min, mod
204 notran = lsame( trans,
'N' )
205 tran = lsame( trans,
'C' )
206 left = lsame( side,
'L' )
207 right = lsame( side,
'R' )
219 IF( ( nb.GT.k ) .AND. ( mn.GT.k ) )
THEN 220 IF( mod( mn - k, nb - k ) .EQ. 0 )
THEN 221 nblcks = ( mn - k ) / ( nb - k )
223 nblcks = ( mn - k ) / ( nb - k ) + 1
230 IF( .NOT.left .AND. .NOT.right )
THEN 232 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN 234 ELSE IF( m.LT.0 )
THEN 236 ELSE IF( n.LT.0 )
THEN 238 ELSE IF( k.LT.0 .OR. k.GT.mn )
THEN 240 ELSE IF( lda.LT.max( 1, k ) )
THEN 242 ELSE IF( tsize.LT.5 )
THEN 244 ELSE IF( ldc.LT.max( 1, m ) )
THEN 246 ELSE IF( ( lwork.LT.max( 1, lw ) ) .AND. ( .NOT.lquery ) )
THEN 255 CALL xerbla(
'ZGEMLQ', -info )
257 ELSE IF( lquery )
THEN 263 IF( min( m, n, k ).EQ.0 )
THEN 267 IF( ( left .AND. m.LE.k ) .OR. ( right .AND. n.LE.k )
268 $ .OR. ( nb.LE.k ) .OR. ( nb.GE.max( m, n, k ) ) )
THEN 269 CALL zgemlqt( side, trans, m, n, k, mb, a, lda,
270 $ t( 6 ), mb, c, ldc, work, info )
272 CALL zlamswlq( side, trans, m, n, k, mb, nb, a, lda, t( 6 ),
273 $ mb, c, ldc, work, lwork, info )
subroutine zlamswlq(SIDE, TRANS, M, N, K, MB, NB, A, LDA, T, LDT, C, LDC, WORK, LWORK, INFO)
subroutine zgemlqt(SIDE, TRANS, M, N, K, MB, V, LDV, T, LDT, C, LDC, WORK, INFO)
ZGEMLQT
subroutine zgemlq(SIDE, TRANS, M, N, K, A, LDA, T, TSIZE, C, LDC, WORK, LWORK, INFO)
subroutine xerbla(SRNAME, INFO)
XERBLA