129 RECURSIVE SUBROUTINE dgeqrt3( M, N, A, LDA, T, LDT, INFO )
136 INTEGER info, lda, m, n, ldt
139 DOUBLE PRECISION a( lda, * ), t( ldt, * )
146 parameter( one = 1.0d+00 )
149 INTEGER i, i1, j, j1, n1, n2, iinfo
159 ELSE IF( m .LT. n )
THEN
161 ELSE IF( lda .LT. max( 1, m ) )
THEN
163 ELSE IF( ldt .LT. max( 1, n ) )
THEN
167 CALL xerbla(
'DGEQRT3', -info )
175 CALL dlarfg( m, a(1,1), a( min( 2, m ), 1 ), 1, t(1,1) )
188 CALL dgeqrt3( m, n1, a, lda, t, ldt, iinfo )
194 t( i, j+n1 ) = a( i, j+n1 )
197 CALL dtrmm(
'L',
'L',
'T',
'U', n1, n2, one,
198 & a, lda, t( 1, j1 ), ldt )
200 CALL dgemm(
'T',
'N', n1, n2, m-n1, one, a( j1, 1 ), lda,
201 & a( j1, j1 ), lda, one, t( 1, j1 ), ldt)
203 CALL dtrmm(
'L',
'U',
'T',
'N', n1, n2, one,
204 & t, ldt, t( 1, j1 ), ldt )
206 CALL dgemm(
'N',
'N', m-n1, n2, n1, -one, a( j1, 1 ), lda,
207 & t( 1, j1 ), ldt, one, a( j1, j1 ), lda )
209 CALL dtrmm(
'L',
'L',
'N',
'U', n1, n2, one,
210 & a, lda, t( 1, j1 ), ldt )
214 a( i, j+n1 ) = a( i, j+n1 ) - t( i, j+n1 )
220 CALL dgeqrt3( m-n1, n2, a( j1, j1 ), lda,
221 & t( j1, j1 ), ldt, iinfo )
227 t( i, j+n1 ) = (a( j+n1, i ))
231 CALL dtrmm(
'R',
'L',
'N',
'U', n1, n2, one,
232 & a( j1, j1 ), lda, t( 1, j1 ), ldt )
234 CALL dgemm(
'T',
'N', n1, n2, m-n, one, a( i1, 1 ), lda,
235 & a( i1, j1 ), lda, one, t( 1, j1 ), ldt )
237 CALL dtrmm(
'L',
'U',
'N',
'N', n1, n2, -one, t, ldt,
240 CALL dtrmm(
'R',
'U',
'N',
'N', n1, n2, one,
241 & t( j1, j1 ), ldt, t( 1, j1 ), ldt )
subroutine dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
DGEMM