136      SUBROUTINE zgeqlf( M, N, A, LDA, TAU, WORK, LWORK, INFO )
 
  143      INTEGER            INFO, LDA, LWORK, M, N
 
  146      COMPLEX*16         A( LDA, * ), TAU( * ), WORK( * )
 
  153      INTEGER            I, IB, IINFO, IWS, K, KI, KK, LDWORK, LWKOPT,
 
  154     $                   MU, NB, NBMIN, NU, NX
 
  171      lquery = ( lwork.EQ.-1 )
 
  174      ELSE IF( n.LT.0 ) 
THEN 
  176      ELSE IF( lda.LT.max( 1, m ) ) 
THEN 
  185            nb = ilaenv( 1, 
'ZGEQLF', 
' ', m, n, -1, -1 )
 
  190         IF( .NOT.lquery ) 
THEN 
  191            IF( lwork.LE.0 .OR. ( m.GT.0 .AND. lwork.LT.max( 1, n ) ) )
 
  197         CALL xerbla( 
'ZGEQLF', -info )
 
  199      ELSE IF( lquery ) 
THEN 
  212      IF( nb.GT.1 .AND. nb.LT.k ) 
THEN 
  216         nx = max( 0, ilaenv( 3, 
'ZGEQLF', 
' ', m, n, -1, -1 ) )
 
  223            IF( lwork.LT.iws ) 
THEN 
  229               nbmin = max( 2, ilaenv( 2, 
'ZGEQLF', 
' ', m, n, -1,
 
  235      IF( nb.GE.nbmin .AND. nb.LT.k .AND. nx.LT.k ) 
THEN 
  240         ki = ( ( k-nx-1 ) / nb )*nb
 
  243         DO 10 i = k - kk + ki + 1, k - kk + 1, -nb
 
  244            ib = min( k-i+1, nb )
 
  249            CALL zgeql2( m-k+i+ib-1, ib, a( 1, n-k+i ), lda,
 
  252            IF( n-k+i.GT.1 ) 
THEN 
  257               CALL zlarft( 
'Backward', 
'Columnwise', m-k+i+ib-1, ib,
 
  258     $                      a( 1, n-k+i ), lda, tau( i ), work, ldwork )
 
  262               CALL zlarfb( 
'Left', 
'Conjugate transpose',
 
  264     $                      
'Columnwise', m-k+i+ib-1, n-k+i-1, ib,
 
  265     $                      a( 1, n-k+i ), lda, work, ldwork, a, lda,
 
  266     $                      work( ib+1 ), ldwork )
 
  269         mu = m - k + i + nb - 1
 
  270         nu = n - k + i + nb - 1
 
  278      IF( mu.GT.0 .AND. nu.GT.0 )
 
  279     $   
CALL zgeql2( mu, nu, a, lda, tau, work, iinfo )
 
 
subroutine zgeql2(m, n, a, lda, tau, work, info)
ZGEQL2 computes the QL factorization of a general rectangular matrix using an unblocked algorithm.
subroutine zgeqlf(m, n, a, lda, tau, work, lwork, info)
ZGEQLF
subroutine zlarfb(side, trans, direct, storev, m, n, k, v, ldv, t, ldt, c, ldc, work, ldwork)
ZLARFB applies a block reflector or its conjugate-transpose to a general rectangular matrix.
recursive subroutine zlarft(direct, storev, n, k, v, ldv, tau, t, ldt)
ZLARFT forms the triangular factor T of a block reflector H = I - vtvH