115 RECURSIVE SUBROUTINE cgelqt3( M, N, A, LDA, T, LDT, INFO )
122 INTEGER info, lda, m, n, ldt
125 COMPLEX a( lda, * ), t( ldt, * )
132 parameter( one = (1.0e+00,0.0e+00) )
133 parameter( zero = (0.0e+00,0.0e+00))
136 INTEGER i, i1, j, j1, m1, m2, iinfo
146 ELSE IF( n .LT. m )
THEN
148 ELSE IF( lda .LT. max( 1, m ) )
THEN
150 ELSE IF( ldt .LT. max( 1, m ) )
THEN
154 CALL xerbla(
'CGELQT3', -info )
162 CALL clarfg( n, a( 1, 1 ), a( 1, min( 2, n ) ), lda,
177 CALL cgelqt3( m1, n, a, lda, t, ldt, iinfo )
183 t( i+m1, j ) = a( i+m1, j )
186 CALL ctrmm(
'R',
'U',
'C',
'U', m2, m1, one,
187 & a, lda, t( i1, 1 ), ldt )
189 CALL cgemm(
'N',
'C', m2, m1, n-m1, one, a( i1, i1 ), lda,
190 & a( 1, i1 ), lda, one, t( i1, 1 ), ldt)
192 CALL ctrmm(
'R',
'U',
'N',
'N', m2, m1, one,
193 & t, ldt, t( i1, 1 ), ldt )
195 CALL cgemm(
'N',
'N', m2, n-m1, m1, -one, t( i1, 1 ), ldt,
196 & a( 1, i1 ), lda, one, a( i1, i1 ), lda )
198 CALL ctrmm(
'R',
'U',
'N',
'U', m2, m1 , one,
199 & a, lda, t( i1, 1 ), ldt )
203 a( i+m1, j ) = a( i+m1, j ) - t( i+m1, j )
210 CALL cgelqt3( m2, n-m1, a( i1, i1 ), lda,
211 & t( i1, i1 ), ldt, iinfo )
217 t( j, i+m1 ) = (a( j, i+m1 ))
221 CALL ctrmm(
'R',
'U',
'C',
'U', m1, m2, one,
222 & a( i1, i1 ), lda, t( 1, i1 ), ldt )
224 CALL cgemm(
'N',
'C', m1, m2, n-m, one, a( 1, j1 ), lda,
225 & a( i1, j1 ), lda, one, t( 1, i1 ), ldt )
227 CALL ctrmm(
'L',
'U',
'N',
'N', m1, m2, -one, t, ldt,
230 CALL ctrmm(
'R',
'U',
'N',
'N', m1, m2, one,
231 & t( i1, i1 ), ldt, t( 1, i1 ), ldt )
subroutine xerbla(srname, info)
recursive subroutine cgelqt3(m, n, a, lda, t, ldt, info)
CGELQT3
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM
subroutine clarfg(n, alpha, x, incx, tau)
CLARFG generates an elementary reflector (Householder matrix).
subroutine ctrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
CTRMM