130 RECURSIVE SUBROUTINE dgelqt3( M, N, A, LDA, T, LDT, INFO )
137 INTEGER info, lda, m, n, ldt
140 DOUBLE PRECISION a( lda, * ), t( ldt, * )
147 parameter( one = 1.0d+00 )
150 INTEGER i, i1, j, j1, m1, m2, iinfo
160 ELSE IF( n .LT. m )
THEN
162 ELSE IF( lda .LT. max( 1, m ) )
THEN
164 ELSE IF( ldt .LT. max( 1, m ) )
THEN
168 CALL xerbla(
'DGELQT3', -info )
176 CALL dlarfg( n, a, a( 1, min( 2, n ) ), lda, t )
189 CALL dgelqt3( m1, n, a, lda, t, ldt, iinfo )
195 t( i+m1, j ) = a( i+m1, j )
198 CALL dtrmm(
'R',
'U',
'T',
'U', m2, m1, one,
199 & a, lda, t( i1, 1 ), ldt )
201 CALL dgemm(
'N',
'T', m2, m1, n-m1, one, a( i1, i1 ), lda,
202 & a( 1, i1 ), lda, one, t( i1, 1 ), ldt)
204 CALL dtrmm(
'R',
'U',
'N',
'N', m2, m1, one,
205 & t, ldt, t( i1, 1 ), ldt )
207 CALL dgemm(
'N',
'N', m2, n-m1, m1, -one, t( i1, 1 ), ldt,
208 & a( 1, i1 ), lda, one, a( i1, i1 ), lda )
210 CALL dtrmm(
'R',
'U',
'N',
'U', m2, m1 , one,
211 & a, lda, t( i1, 1 ), ldt )
215 a( i+m1, j ) = a( i+m1, j ) - t( i+m1, j )
222 CALL dgelqt3( m2, n-m1, a( i1, i1 ), lda,
223 & t( i1, i1 ), ldt, iinfo )
229 t( j, i+m1 ) = (a( j, i+m1 ))
233 CALL dtrmm(
'R',
'U',
'T',
'U', m1, m2, one,
234 & a( i1, i1 ), lda, t( 1, i1 ), ldt )
236 CALL dgemm(
'N',
'T', m1, m2, n-m, one, a( 1, j1 ), lda,
237 & a( i1, j1 ), lda, one, t( 1, i1 ), ldt )
239 CALL dtrmm(
'L',
'U',
'N',
'N', m1, m2, -one, t, ldt,
242 CALL dtrmm(
'R',
'U',
'N',
'N', m1, m2, one,
243 & t( i1, i1 ), ldt, t( 1, i1 ), ldt )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM
recursive subroutine dgelqt3(M, N, A, LDA, T, LDT, INFO)
DGELQT3 recursively computes a LQ factorization of a general real or complex matrix using the compact...
subroutine dlarfg(N, ALPHA, X, INCX, TAU)
DLARFG generates an elementary reflector (Householder matrix).