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, a( min( 2, m ), 1 ), 1, t )
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 clarfg(N, ALPHA, X, INCX, TAU)
CLARFG generates an elementary reflector (Householder matrix).
subroutine cgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CGEMM