170 SUBROUTINE cgelq( M, N, A, LDA, T, TSIZE, WORK, LWORK,
178 INTEGER INFO, LDA, 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
199 INTRINSIC max, min, mod
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 )
230 IF( mb.GT.min( m, n ) .OR. mb.LT.1 ) mb = 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 )
237 nblcks = ( n - m ) / ( nb - m ) + 1
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
290 t( 1 ) = mb*m*nblcks + 5
301 CALL xerbla(
'CGELQ', -info )
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, info )
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 xerbla(SRNAME, INFO)
XERBLA
subroutine cgelqt(M, N, MB, A, LDA, T, LDT, WORK, INFO)
CGELQT