170 SUBROUTINE cgelq( M, N, A, LDA, T, TSIZE, WORK, LWORK,
178 INTEGER INFO, , M, N, TSIZE, LWORK
181 COMPLEX A( LDA, * ), T( * ), WORK( * )
188 LOGICAL LQUERY, LMINWS, MINT, MINW
189 INTEGER MB, NB, MINTSZ, NBLCKS, LWMIN, LWOPT, LWREQ
211 lquery = ( tsize.EQ.-1 .OR. tsize.EQ.-2 .OR.
212 $ lwork.EQ.-1 .OR. lwork.EQ.-2 )
216 IF( tsize.EQ.-2 .OR. lwork.EQ.-2 )
THEN
217 IF( tsize.NE.-1 ) mint = .true.
218 IF( lwork.NE.-1 ) minw = .true.
223 IF(
min( m, n ).GT.0 )
THEN
224 mb = ilaenv( 1,
'CGELQ ',
' ', m, n, 1, -1 )
225 nb = ilaenv( 1,
'CGELQ ',
' ', m, n, 2, -1 )
231 IF( nb.GT.n .OR. nb.LE.m ) nb = n
233 IF( nb.GT.m .AND. n.GT.m )
THEN
234 IF( mod( n - m, nb - m ).EQ.0 )
THEN
235 nblcks = ( n - m ) / ( nb - m )
245 IF( ( n.LE.m ) .OR. ( nb.LE.m ) .OR. ( nb.GE.n ) )
THEN
247 lwopt =
max( 1, mb*n )
250 lwopt =
max( 1, mb*m )
253 IF( ( tsize.LT.
max( 1, mb*m*nblcks + 5 ) .OR. lwork.LT.lwopt )
254 $ .AND. ( lwork.GE.lwmin ) .AND. ( tsize.GE.mintsz )
255 $ .AND. ( .NOT.lquery )
THEN
256 IF( tsize.LT.
max( 1, mb*m*nblcks + 5 ) )
THEN
261 IF( lwork.LT.lwopt
THEN
266 IF( ( n.LE.m ) .OR. ( nb.LE.m ) .OR. ( nb.GE.n ) )
THEN
267 lwreq =
max( 1, mb*n )
269 lwreq =
max( 1, mb*m )
274 ELSE IF( n.LT.0 )
THEN
276 ELSE IF( lda.LT.
max( 1, m ) )
THEN
278 ELSE IF( tsize.LT.
max( 1, mb*m*nblcks + 5 )
279 $ .AND. ( .NOT.lquery ) .AND. ( .NOT.lminws ) )
THEN
281 ELSE IF( ( lwork.LT.lwreq ) .and .( .NOT.lquery )
282 $ .AND. ( .NOT.lminws
THEN
303 ELSE IF( lquery )
THEN
309 IF(
min( m, n ).EQ.0 )
THEN
315 IF( ( n.LE.m ) .OR. ( nb.LE.m ) .OR. ( nb.GE.n ) )
THEN
316 CALL cgelqt( m, n, mb, a, lda, t( 6 ), mb, work
318 CALL claswlq( m, n, mb, nb, a, lda, t( 6 ), mb, work,
subroutine cgelq(m, n, a, lda, t, tsize, work, lwork, info)
CGELQ
subroutine claswlq(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
CLASWLQ
subroutine cgelqt(m, n, mb, a, lda, t, ldt, work, info)
CGELQT