169 SUBROUTINE zgemqr( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
170 $ C, LDC, WORK, LWORK, INFO )
178 CHARACTER SIDE, TRANS
179 INTEGER INFO, LDA, M, N, K, TSIZE, LWORK, LDC
182 COMPLEX*16 A( lda, * ), T( * ), C( ldc, * ), WORK( * )
189 LOGICAL LEFT, RIGHT, TRAN, NOTRAN, LQUERY
190 INTEGER MB, NB, LW, NBLCKS, MN
200 INTRINSIC int, max, min, mod
207 notran = lsame( trans,
'N' )
208 tran = lsame( trans,
'C' )
209 left = lsame( side,
'L' )
210 right = lsame( side,
'R' )
222 IF( ( mb.GT.k ) .AND. ( mn.GT.k ) )
THEN 223 IF( mod( mn - k, mb - k ).EQ.0 )
THEN 224 nblcks = ( mn - k ) / ( mb - k )
226 nblcks = ( mn - k ) / ( mb - k ) + 1
233 IF( .NOT.left .AND. .NOT.right )
THEN 235 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN 237 ELSE IF( m.LT.0 )
THEN 239 ELSE IF( n.LT.0 )
THEN 241 ELSE IF( k.LT.0 .OR. k.GT.mn )
THEN 243 ELSE IF( lda.LT.max( 1, mn ) )
THEN 245 ELSE IF( tsize.LT.5 )
THEN 247 ELSE IF( ldc.LT.max( 1, m ) )
THEN 249 ELSE IF( ( lwork.LT.max( 1, lw ) ) .AND. ( .NOT.lquery ) )
THEN 258 CALL xerbla(
'ZGEMQR', -info )
260 ELSE IF( lquery )
THEN 266 IF( min( m, n, k ).EQ.0 )
THEN 270 IF( ( left .AND. m.LE.k ) .OR. ( right .AND. n.LE.k )
271 $ .OR. ( mb.LE.k ) .OR. ( mb.GE.max( m, n, k ) ) )
THEN 272 CALL zgemqrt( side, trans, m, n, k, nb, a, lda, t( 6 ),
273 $ nb, c, ldc, work, info )
275 CALL zlamtsqr( side, trans, m, n, k, mb, nb, a, lda, t( 6 ),
276 $ nb, c, ldc, work, lwork, info )
subroutine zgemqr(SIDE, TRANS, M, N, K, A, LDA, T, TSIZE, C, LDC, WORK, LWORK, INFO)
subroutine zgemqrt(SIDE, TRANS, M, N, K, NB, V, LDV, T, LDT, C, LDC, WORK, INFO)
ZGEMQRT
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zlamtsqr(SIDE, TRANS, M, N, K, MB, NB, A, LDA, T, LDT, C, LDC, WORK, LWORK, INFO)