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, a( min( 2, m ), 1 ), 1, t )
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 dlarfg(N, ALPHA, X, INCX, TAU)
DLARFG generates an elementary reflector (Householder matrix).
subroutine dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM
subroutine xerbla(SRNAME, INFO)
XERBLA
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