131 RECURSIVE SUBROUTINE dgeqrt3( M, N, A, LDA, T, LDT, INFO )
138 INTEGER INFO, LDA, M, N, LDT
141 DOUBLE PRECISION A( lda, * ), T( ldt, * )
148 parameter( one = 1.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(
'DGEQRT3', -info )
177 CALL dlarfg( m, a(1,1), a( min( 2, m ), 1 ), 1, t(1,1) )
190 CALL dgeqrt3( m, n1, a, lda, t, ldt, iinfo )
196 t( i, j+n1 ) = a( i, j+n1 )
199 CALL dtrmm(
'L',
'L',
'T',
'U', n1, n2, one,
200 & a, lda, t( 1, j1 ), ldt )
202 CALL dgemm(
'T',
'N', n1, n2, m-n1, one, a( j1, 1 ), lda,
203 & a( j1, j1 ), lda, one, t( 1, j1 ), ldt)
205 CALL dtrmm(
'L',
'U',
'T',
'N', n1, n2, one,
206 & t, ldt, t( 1, j1 ), ldt )
208 CALL dgemm(
'N',
'N', m-n1, n2, n1, -one, a( j1, 1 ), lda,
209 & t( 1, j1 ), ldt, one, a( j1, j1 ), lda )
211 CALL dtrmm(
'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 dgeqrt3( m-n1, n2, a( j1, j1 ), lda,
223 & t( j1, j1 ), ldt, iinfo )
229 t( i, j+n1 ) = (a( j+n1, i ))
233 CALL dtrmm(
'R',
'L',
'N',
'U', n1, n2, one,
234 & a( j1, j1 ), lda, t( 1, j1 ), ldt )
236 CALL dgemm(
'T',
'N', n1, n2, m-n, one, a( i1, 1 ), lda,
237 & a( i1, j1 ), lda, one, t( 1, j1 ), ldt )
239 CALL dtrmm(
'L',
'U',
'N',
'N', n1, n2, -one, t, ldt,
242 CALL dtrmm(
'R',
'U',
'N',
'N', n1, n2, one,
243 & t( j1, j1 ), ldt, t( 1, j1 ), ldt )
subroutine dlarfg(N, ALPHA, X, INCX, TAU)
DLARFG generates an elementary reflector (Householder matrix).
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM
recursive subroutine dgeqrt3(M, N, A, LDA, T, LDT, INFO)
DGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact...
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM