133 RECURSIVE SUBROUTINE zgeqrt3( M, N, A, LDA, T, LDT, INFO )
141 INTEGER INFO, LDA, M, N, LDT
144 COMPLEX*16 A( lda, * ), T( ldt, * )
151 parameter( one = (1.0d+00,0.0d+00) )
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(
'ZGEQRT3', -info )
180 CALL
zlarfg( m, a, a( min( 2, m ), 1 ), 1, t )
193 CALL
zgeqrt3( m, n1, a, lda, t, ldt, iinfo )
199 t( i, j+n1 ) = a( i, j+n1 )
202 CALL
ztrmm(
'L',
'L',
'C',
'U', n1, n2, one,
203 & a, lda, t( 1, j1 ), ldt )
205 CALL
zgemm(
'C',
'N', n1, n2, m-n1, one, a( j1, 1 ), lda,
206 & a( j1, j1 ), lda, one, t( 1, j1 ), ldt)
208 CALL
ztrmm(
'L',
'U',
'C',
'N', n1, n2, one,
209 & t, ldt, t( 1, j1 ), ldt )
211 CALL
zgemm(
'N',
'N', m-n1, n2, n1, -one, a( j1, 1 ), lda,
212 & t( 1, j1 ), ldt, one, a( j1, j1 ), lda )
214 CALL
ztrmm(
'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
zgeqrt3( 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
ztrmm(
'R',
'L',
'N',
'U', n1, n2, one,
237 & a( j1, j1 ), lda, t( 1, j1 ), ldt )
239 CALL
zgemm(
'C',
'N', n1, n2, m-n, one, a( i1, 1 ), lda,
240 & a( i1, j1 ), lda, one, t( 1, j1 ), ldt )
242 CALL
ztrmm(
'L',
'U',
'N',
'N', n1, n2, -one, t, ldt,
245 CALL
ztrmm(
'R',
'U',
'N',
'N', n1, n2, one,
246 & t( j1, j1 ), ldt, t( 1, j1 ), ldt )
subroutine zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZGEMM
subroutine xerbla(SRNAME, INFO)
XERBLA
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...
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