133 RECURSIVE SUBROUTINE dgeqrt3( M, N, A, LDA, T, LDT, INFO )
141 INTEGER INFO, LDA, M, N, LDT
144 DOUBLE PRECISION A( lda, * ), T( ldt, * )
151 parameter( one = 1.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(
'DGEQRT3', -info )
180 CALL dlarfg( m, a(1,1), a( min( 2, m ), 1 ), 1, t(1,1) )
193 CALL dgeqrt3( m, n1, a, lda, t, ldt, iinfo )
199 t( i, j+n1 ) = a( i, j+n1 )
202 CALL dtrmm(
'L',
'L',
'T',
'U', n1, n2, one,
203 & a, lda, t( 1, j1 ), ldt )
205 CALL dgemm(
'T',
'N', n1, n2, m-n1, one, a( j1, 1 ), lda,
206 & a( j1, j1 ), lda, one, t( 1, j1 ), ldt)
208 CALL dtrmm(
'L',
'U',
'T',
'N', n1, n2, one,
209 & t, ldt, t( 1, j1 ), ldt )
211 CALL dgemm(
'N',
'N', m-n1, n2, n1, -one, a( j1, 1 ), lda,
212 & t( 1, j1 ), ldt, one, a( j1, j1 ), lda )
214 CALL dtrmm(
'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 dgeqrt3( m-n1, n2, a( j1, j1 ), lda,
226 & t( j1, j1 ), ldt, iinfo )
232 t( i, j+n1 ) = (a( j+n1, i ))
236 CALL dtrmm(
'R',
'L',
'N',
'U', n1, n2, one,
237 & a( j1, j1 ), lda, t( 1, j1 ), ldt )
239 CALL dgemm(
'T',
'N', n1, n2, m-n, one, a( i1, 1 ), lda,
240 & a( i1, j1 ), lda, one, t( 1, j1 ), ldt )
242 CALL dtrmm(
'L',
'U',
'N',
'N', n1, n2, -one, t, ldt,
245 CALL dtrmm(
'R',
'U',
'N',
'N', n1, n2, one,
246 & t( j1, j1 ), ldt, t( 1, j1 ), ldt )
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM
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 dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dlarfg(N, ALPHA, X, INCX, TAU)
DLARFG generates an elementary reflector (Householder matrix).