133 RECURSIVE SUBROUTINE cgeqrt3( M, N, A, LDA, T, LDT, INFO )
141 INTEGER INFO, LDA, M, N, LDT
144 COMPLEX A( lda, * ), T( ldt, * )
151 parameter( one = (1.0,0.0) )
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(
'CGEQRT3', -info )
180 CALL clarfg( m, a(1,1), a( min( 2, m ), 1 ), 1, t(1,1) )
193 CALL cgeqrt3( m, n1, a, lda, t, ldt, iinfo )
199 t( i, j+n1 ) = a( i, j+n1 )
202 CALL ctrmm(
'L',
'L',
'C',
'U', n1, n2, one,
203 & a, lda, t( 1, j1 ), ldt )
205 CALL cgemm(
'C',
'N', n1, n2, m-n1, one, a( j1, 1 ), lda,
206 & a( j1, j1 ), lda, one, t( 1, j1 ), ldt)
208 CALL ctrmm(
'L',
'U',
'C',
'N', n1, n2, one,
209 & t, ldt, t( 1, j1 ), ldt )
211 CALL cgemm(
'N',
'N', m-n1, n2, n1, -one, a( j1, 1 ), lda,
212 & t( 1, j1 ), ldt, one, a( j1, j1 ), lda )
214 CALL ctrmm(
'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 cgeqrt3( 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 ctrmm(
'R',
'L',
'N',
'U', n1, n2, one,
237 & a( j1, j1 ), lda, t( 1, j1 ), ldt )
239 CALL cgemm(
'C',
'N', n1, n2, m-n, one, a( i1, 1 ), lda,
240 & a( i1, j1 ), lda, one, t( 1, j1 ), ldt )
242 CALL ctrmm(
'L',
'U',
'N',
'N', n1, n2, -one, t, ldt,
245 CALL ctrmm(
'R',
'U',
'N',
'N', n1, n2, one,
246 & t( j1, j1 ), ldt, t( 1, j1 ), ldt )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ctrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRMM
recursive subroutine cgeqrt3(M, N, A, LDA, T, LDT, INFO)
CGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact...
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).