132 RECURSIVE SUBROUTINE zgelqt3( M, N, A, LDA, T, LDT, INFO )
140 INTEGER info, lda, m, n, ldt
143 COMPLEX*16 a( lda, * ), t( ldt, * )
150 parameter( one = (1.0d+00,0.0d+00) )
151 parameter( zero = (0.0d+00,0.0d+00))
154 INTEGER i, i1, j, j1, m1, m2, iinfo
164 ELSE IF( n .LT. m )
THEN
166 ELSE IF( lda .LT. max( 1, m ) )
THEN
168 ELSE IF( ldt .LT. max( 1, m ) )
THEN
172 CALL xerbla(
'ZGELQT3', -info )
180 CALL zlarfg( n, a, a( 1, min( 2, n ) ), lda, t )
194 CALL zgelqt3( m1, n, a, lda, t, ldt, iinfo )
200 t( i+m1, j ) = a( i+m1, j )
203 CALL ztrmm(
'R',
'U',
'C',
'U', m2, m1, one,
204 & a, lda, t( i1, 1 ), ldt )
206 CALL zgemm(
'N',
'C', m2, m1, n-m1, one, a( i1, i1 ), lda,
207 & a( 1, i1 ), lda, one, t( i1, 1 ), ldt)
209 CALL ztrmm(
'R',
'U',
'N',
'N', m2, m1, one,
210 & t, ldt, t( i1, 1 ), ldt )
212 CALL zgemm(
'N',
'N', m2, n-m1, m1, -one, t( i1, 1 ), ldt,
213 & a( 1, i1 ), lda, one, a( i1, i1 ), lda )
215 CALL ztrmm(
'R',
'U',
'N',
'U', m2, m1 , one,
216 & a, lda, t( i1, 1 ), ldt )
220 a( i+m1, j ) = a( i+m1, j ) - t( i+m1, j )
227 CALL zgelqt3( m2, n-m1, a( i1, i1 ), lda,
228 & t( i1, i1 ), ldt, iinfo )
234 t( j, i+m1 ) = (a( j, i+m1 ))
238 CALL ztrmm(
'R',
'U',
'C',
'U', m1, m2, one,
239 & a( i1, i1 ), lda, t( 1, i1 ), ldt )
241 CALL zgemm(
'N',
'C', m1, m2, n-m, one, a( 1, j1 ), lda,
242 & a( i1, j1 ), lda, one, t( 1, i1 ), ldt )
244 CALL ztrmm(
'L',
'U',
'N',
'N', m1, m2, -one, t, ldt,
247 CALL ztrmm(
'R',
'U',
'N',
'N', m1, m2, one,
248 & t( i1, i1 ), ldt, t( 1, i1 ), ldt )