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, N1, N2, 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 )
recursive subroutine zgelqt3(M, N, A, LDA, T, LDT, INFO)
ZGELQT3 recursively computes a LQ factorization of a general real or complex matrix using the compact...
subroutine zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZGEMM
subroutine ztrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zlarfg(N, ALPHA, X, INCX, TAU)
ZLARFG generates an elementary reflector (Householder matrix).