170 SUBROUTINE cgemqr( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
171 $ C, LDC, WORK, LWORK, INFO )
178 CHARACTER side, trans
179 INTEGER info, lda, m, n, k, tsize, lwork, ldc
182 COMPLEX 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(
'CGEMQR', -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 cgemqrt( side, trans, m, n, k, nb, a, lda, t( 6 ),
273 $ nb, c, ldc, work, info )
275 CALL clamtsqr( side, trans, m, n, k, mb, nb, a, lda, t( 6 ),
276 $ nb, c, ldc, work, lwork, info )
logical function lsame(CA, CB)
LSAME
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cgemqrt(SIDE, TRANS, M, N, K, NB, V, LDV, T, LDT, C, LDC, WORK, INFO)
CGEMQRT