169 SUBROUTINE zgemlq( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
170 $ C, LDC, WORK, LWORK, INFO )
177 CHARACTER SIDE, TRANS
178 INTEGER INFO, LDA, M, N, K, TSIZE, LWORK, LDC
181 COMPLEX*16 A( LDA, * ), T( * ), C( LDC, * ), WORK( * )
188 LOGICAL LEFT, RIGHT, TRAN, NOTRAN, LQUERY
189 INTEGER MB, NB, LW, NBLCKS, MN
199 INTRINSIC int, max, min, mod
206 notran = lsame( trans,
'N' )
207 tran = lsame( trans,
'C' )
208 left = lsame( side,
'L' )
209 right = lsame( side,
'R' )
221 IF( ( nb.GT.k ) .AND. ( mn.GT.k ) )
THEN
222 IF( mod( mn - k, nb - k ) .EQ. 0 )
THEN
223 nblcks = ( mn - k ) / ( nb - k )
225 nblcks = ( mn - k ) / ( nb - k ) + 1
232 IF( .NOT.left .AND. .NOT.right )
THEN
234 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN
236 ELSE IF( m.LT.0 )
THEN
238 ELSE IF( n.LT.0 )
THEN
240 ELSE IF( k.LT.0 .OR. k.GT.mn )
THEN
242 ELSE IF( lda.LT.max( 1, k ) )
THEN
244 ELSE IF( tsize.LT.5 )
THEN
246 ELSE IF( ldc.LT.max( 1, m ) )
THEN
248 ELSE IF( ( lwork.LT.max( 1, lw ) ) .AND. ( .NOT.lquery ) )
THEN
257 CALL xerbla(
'ZGEMLQ', -info )
259 ELSE IF( lquery )
THEN
265 IF( min( m, n, k ).EQ.0 )
THEN
269 IF( ( left .AND. m.LE.k ) .OR. ( right .AND. n.LE.k )
270 $ .OR. ( nb.LE.k ) .OR. ( nb.GE.max( m, n, k ) ) )
THEN
271 CALL zgemlqt( side, trans, m, n, k, mb, a, lda,
272 $ t( 6 ), mb, c, ldc, work, info )
274 CALL zlamswlq( side, trans, m, n, k, mb, nb, a, lda, t( 6 ),
275 $ mb, c, ldc, work, lwork, info )
subroutine xerbla(srname, info)
subroutine zgemlq(side, trans, m, n, k, a, lda, t, tsize, c, ldc, work, lwork, info)
ZGEMLQ
subroutine zgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, work, info)
ZGEMLQT
subroutine zlamswlq(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, ldc, work, lwork, info)
ZLAMSWLQ