133 RECURSIVE SUBROUTINE zgeqrt3( M, N, A, LDA, T, LDT, INFO )
141 INTEGER info, lda, m, n, ldt
144 COMPLEX*16 a( lda, * ), t( ldt, * )
151 parameter( one = (1.0d+00,0.0d+00) )
154 INTEGER i, i1, j, j1, n1, n2, iinfo
164 ELSE IF( m .LT. n )
THEN
166 ELSE IF( lda .LT. max( 1, m ) )
THEN
168 ELSE IF( ldt .LT. max( 1, n ) )
THEN
172 CALL
xerbla(
'ZGEQRT3', -info )
180 CALL
zlarfg( m, a, a( min( 2, m ), 1 ), 1, t )
193 CALL
zgeqrt3( m, n1, a, lda, t, ldt, iinfo )
199 t( i, j+n1 ) = a( i, j+n1 )
202 CALL
ztrmm(
'L',
'L',
'C',
'U', n1, n2, one,
203 & a, lda, t( 1, j1 ), ldt )
205 CALL
zgemm(
'C',
'N', n1, n2, m-n1, one, a( j1, 1 ), lda,
206 & a( j1, j1 ), lda, one, t( 1, j1 ), ldt)
208 CALL
ztrmm(
'L',
'U',
'C',
'N', n1, n2, one,
209 & t, ldt, t( 1, j1 ), ldt )
211 CALL
zgemm(
'N',
'N', m-n1, n2, n1, -one, a( j1, 1 ), lda,
212 & t( 1, j1 ), ldt, one, a( j1, j1 ), lda )
214 CALL
ztrmm(
'L',
'L',
'N',
'U', n1, n2, one,
215 & a, lda, t( 1, j1 ), ldt )
219 a( i, j+n1 ) = a( i, j+n1 ) - t( i, j+n1 )
225 CALL
zgeqrt3( m-n1, n2, a( j1, j1 ), lda,
226 & t( j1, j1 ), ldt, iinfo )
232 t( i, j+n1 ) = conjg(a( j+n1, i ))
236 CALL
ztrmm(
'R',
'L',
'N',
'U', n1, n2, one,
237 & a( j1, j1 ), lda, t( 1, j1 ), ldt )
239 CALL
zgemm(
'C',
'N', n1, n2, m-n, one, a( i1, 1 ), lda,
240 & a( i1, j1 ), lda, one, t( 1, j1 ), ldt )
242 CALL
ztrmm(
'L',
'U',
'N',
'N', n1, n2, -one, t, ldt,
245 CALL
ztrmm(
'R',
'U',
'N',
'N', n1, n2, one,
246 & t( j1, j1 ), ldt, t( 1, j1 ), ldt )