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( 1, 1 ), a( 1, min( 2, n ) ), lda,
192 CALL zgelqt3( m1, n, a, lda, t, ldt, iinfo )
198 t( i+m1, j ) = a( i+m1, j )
201 CALL ztrmm(
'R',
'U',
'C',
'U', m2, m1, one,
202 & a, lda, t( i1, 1 ), ldt )
204 CALL zgemm(
'N',
'C', m2, m1, n-m1, one, a( i1, i1 ), lda,
205 & a( 1, i1 ), lda, one, t( i1, 1 ), ldt)
207 CALL ztrmm(
'R',
'U',
'N',
'N', m2, m1, one,
208 & t, ldt, t( i1, 1 ), ldt )
210 CALL zgemm(
'N',
'N', m2, n-m1, m1, -one, t( i1, 1 ), ldt,
211 & a( 1, i1 ), lda, one, a( i1, i1 ), lda )
213 CALL ztrmm(
'R',
'U',
'N',
'U', m2, m1 , one,
214 & a, lda, t( i1, 1 ), ldt )
218 a( i+m1, j ) = a( i+m1, j ) - t( i+m1, j )
225 CALL zgelqt3( m2, n-m1, a( i1, i1 ), lda,
226 & t( i1, i1 ), ldt, iinfo )
232 t( j, i+m1 ) = (a( j, i+m1 ))
236 CALL ztrmm(
'R',
'U',
'C',
'U', m1, m2, one,
237 & a( i1, i1 ), lda, t( 1, i1 ), ldt )
239 CALL zgemm(
'N',
'C', m1, m2, n-m, one, a( 1, j1 ), lda,
240 & a( i1, j1 ), lda, one, t( 1, i1 ), ldt )
242 CALL ztrmm(
'L',
'U',
'N',
'N', m1, m2, -one, t, ldt,
245 CALL ztrmm(
'R',
'U',
'N',
'N', m1, m2, one,
246 & t( i1, i1 ), ldt, t( 1, i1 ), ldt )
subroutine xerbla(srname, info)
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 zlarfg(n, alpha, x, incx, tau)
ZLARFG generates an elementary reflector (Householder matrix).
subroutine ztrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
ZTRMM