167      SUBROUTINE claswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
 
  175      INTEGER            INFO, LDA, M, N, MB, NB, LWORK, LDT
 
  178      COMPLEX            A( LDA, * ), WORK( * ), T( LDT, * )
 
  186      INTEGER            I, II, KK, CTR, MINMN, LWMIN
 
  192      EXTERNAL           lsame, ilaenv, sroundup_lwork
 
  198      INTRINSIC          max, min, mod
 
  206      lquery = ( lwork.EQ.-1 )
 
  209      IF( minmn.EQ.0 ) 
THEN 
  217      ELSE IF( n.LT.0 .OR. n.LT.m ) 
THEN 
  219      ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ) ) 
THEN 
  221      ELSE IF( nb.LE.0 ) 
THEN 
  223      ELSE IF( lda.LT.max( 1, m ) ) 
THEN 
  225      ELSE IF( ldt.LT.mb ) 
THEN 
  227      ELSE IF( lwork.LT.lwmin .AND. (.NOT.lquery) ) 
THEN 
  232        work( 1 ) = sroundup_lwork( lwmin )
 
  236        CALL xerbla( 
'CLASWLQ', -info )
 
  238      ELSE IF( lquery ) 
THEN 
  244      IF( minmn.EQ.0 ) 
THEN 
  250      IF( (m.GE.n) .OR. (nb.LE.m) .OR. (nb.GE.n) ) 
THEN 
  251        CALL cgelqt( m, n, mb, a, lda, t, ldt, work, info)
 
  255      kk = mod((n-m),(nb-m))
 
  260      CALL cgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info)
 
  263      DO i = nb+1, ii-nb+m , (nb-m)
 
  267        CALL ctplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
 
  276        CALL ctplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
 
  277     $                  lda, t(1,ctr*m+1), ldt,
 
  281      work( 1 ) = sroundup_lwork( lwmin )
 
 
subroutine cgelqt(m, n, mb, a, lda, t, ldt, work, info)
CGELQT
subroutine claswlq(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
CLASWLQ
subroutine ctplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)
CTPLQT