167 SUBROUTINE zgemlq( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
168 $ 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 xerbla(SRNAME, INFO)
XERBLA
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)
ZGEMLQ
subroutine zlamswlq(SIDE, TRANS, M, N, K, MB, NB, A, LDA, T, LDT, C, LDC, WORK, LWORK, INFO)
ZLAMSWLQ