130 RECURSIVE SUBROUTINE zgelqt3( M, N, A, LDA, T, LDT, INFO )
137 INTEGER INFO, LDA, M, N, LDT
140 COMPLEX*16 A( lda, * ), T( ldt, * )
147 parameter( one = (1.0d+00,0.0d+00) )
148 parameter( zero = (0.0d+00,0.0d+00))
151 INTEGER I, I1, J, J1, M1, M2, IINFO
161 ELSE IF( n .LT. m )
THEN 163 ELSE IF( lda .LT. max( 1, m ) )
THEN 165 ELSE IF( ldt .LT. max( 1, m ) )
THEN 169 CALL xerbla(
'ZGELQT3', -info )
177 CALL zlarfg( n, a, a( 1, min( 2, n ) ), lda, t )
191 CALL zgelqt3( m1, n, a, lda, t, ldt, iinfo )
197 t( i+m1, j ) = a( i+m1, j )
200 CALL ztrmm(
'R',
'U',
'C',
'U', m2, m1, one,
201 & a, lda, t( i1, 1 ), ldt )
203 CALL zgemm(
'N',
'C', m2, m1, n-m1, one, a( i1, i1 ), lda,
204 & a( 1, i1 ), lda, one, t( i1, 1 ), ldt)
206 CALL ztrmm(
'R',
'U',
'N',
'N', m2, m1, one,
207 & t, ldt, t( i1, 1 ), ldt )
209 CALL zgemm(
'N',
'N', m2, n-m1, m1, -one, t( i1, 1 ), ldt,
210 & a( 1, i1 ), lda, one, a( i1, i1 ), lda )
212 CALL ztrmm(
'R',
'U',
'N',
'U', m2, m1 , one,
213 & a, lda, t( i1, 1 ), ldt )
217 a( i+m1, j ) = a( i+m1, j ) - t( i+m1, j )
224 CALL zgelqt3( m2, n-m1, a( i1, i1 ), lda,
225 & t( i1, i1 ), ldt, iinfo )
231 t( j, i+m1 ) = (a( j, i+m1 ))
235 CALL ztrmm(
'R',
'U',
'C',
'U', m1, m2, one,
236 & a( i1, i1 ), lda, t( 1, i1 ), ldt )
238 CALL zgemm(
'N',
'C', m1, m2, n-m, one, a( 1, j1 ), lda,
239 & a( i1, j1 ), lda, one, t( 1, i1 ), ldt )
241 CALL ztrmm(
'L',
'U',
'N',
'N', m1, m2, -one, t, ldt,
244 CALL ztrmm(
'R',
'U',
'N',
'N', m1, m2, one,
245 & t( i1, i1 ), ldt, t( 1, i1 ), ldt )
subroutine ztrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRMM
subroutine zlarfg(N, ALPHA, X, INCX, TAU)
ZLARFG generates an elementary reflector (Householder matrix).
subroutine xerbla(SRNAME, INFO)
XERBLA
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