131 RECURSIVE SUBROUTINE zgeqrt3( M, N, A, LDA, T, LDT, INFO )
138 INTEGER INFO, LDA, M, N, LDT
141 COMPLEX*16 A( lda, * ), T( ldt, * )
148 parameter( one = (1.0d+00,0.0d+00) )
151 INTEGER I, I1, J, J1, N1, N2, IINFO
161 ELSE IF( m .LT. n )
THEN 163 ELSE IF( lda .LT. max( 1, m ) )
THEN 165 ELSE IF( ldt .LT. max( 1, n ) )
THEN 169 CALL xerbla(
'ZGEQRT3', -info )
177 CALL zlarfg( m, a(1,1), a( min( 2, m ), 1 ), 1, t(1,1) )
190 CALL zgeqrt3( m, n1, a, lda, t, ldt, iinfo )
196 t( i, j+n1 ) = a( i, j+n1 )
199 CALL ztrmm(
'L',
'L',
'C',
'U', n1, n2, one,
200 & a, lda, t( 1, j1 ), ldt )
202 CALL zgemm(
'C',
'N', n1, n2, m-n1, one, a( j1, 1 ), lda,
203 & a( j1, j1 ), lda, one, t( 1, j1 ), ldt)
205 CALL ztrmm(
'L',
'U',
'C',
'N', n1, n2, one,
206 & t, ldt, t( 1, j1 ), ldt )
208 CALL zgemm(
'N',
'N', m-n1, n2, n1, -one, a( j1, 1 ), lda,
209 & t( 1, j1 ), ldt, one, a( j1, j1 ), lda )
211 CALL ztrmm(
'L',
'L',
'N',
'U', n1, n2, one,
212 & a, lda, t( 1, j1 ), ldt )
216 a( i, j+n1 ) = a( i, j+n1 ) - t( i, j+n1 )
222 CALL zgeqrt3( m-n1, n2, a( j1, j1 ), lda,
223 & t( j1, j1 ), ldt, iinfo )
229 t( i, j+n1 ) = conjg(a( j+n1, i ))
233 CALL ztrmm(
'R',
'L',
'N',
'U', n1, n2, one,
234 & a( j1, j1 ), lda, t( 1, j1 ), ldt )
236 CALL zgemm(
'C',
'N', n1, n2, m-n, one, a( i1, 1 ), lda,
237 & a( i1, j1 ), lda, one, t( 1, j1 ), ldt )
239 CALL ztrmm(
'L',
'U',
'N',
'N', n1, n2, -one, t, ldt,
242 CALL ztrmm(
'R',
'U',
'N',
'N', n1, n2, one,
243 & t( j1, j1 ), ldt, t( 1, j1 ), 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
subroutine zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZGEMM
recursive subroutine zgeqrt3(M, N, A, LDA, T, LDT, INFO)
ZGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact...