132 RECURSIVE SUBROUTINE dgelqt3( M, N, A, LDA, T, LDT, INFO )
140 INTEGER INFO, LDA, M, N, LDT
143 DOUBLE PRECISION A( lda, * ), T( ldt, * )
150 parameter( one = 1.0d+00 )
153 INTEGER I, I1, J, J1, M1, M2, N1, N2, IINFO
163 ELSE IF( n .LT. m )
THEN 165 ELSE IF( lda .LT. max( 1, m ) )
THEN 167 ELSE IF( ldt .LT. max( 1, m ) )
THEN 171 CALL xerbla(
'DGELQT3', -info )
179 CALL dlarfg( n, a, a( 1, min( 2, n ) ), lda, t )
192 CALL dgelqt3( m1, n, a, lda, t, ldt, iinfo )
198 t( i+m1, j ) = a( i+m1, j )
201 CALL dtrmm(
'R',
'U',
'T',
'U', m2, m1, one,
202 & a, lda, t( i1, 1 ), ldt )
204 CALL dgemm(
'N',
'T', m2, m1, n-m1, one, a( i1, i1 ), lda,
205 & a( 1, i1 ), lda, one, t( i1, 1 ), ldt)
207 CALL dtrmm(
'R',
'U',
'N',
'N', m2, m1, one,
208 & t, ldt, t( i1, 1 ), ldt )
210 CALL dgemm(
'N',
'N', m2, n-m1, m1, -one, t( i1, 1 ), ldt,
211 & a( 1, i1 ), lda, one, a( i1, i1 ), lda )
213 CALL dtrmm(
'R',
'U',
'N',
'U', m2, m1 , one,
214 & a, lda, t( i1, 1 ), ldt )
218 a( i+m1, j ) = a( i+m1, j ) - t( i+m1, j )
225 CALL dgelqt3( m2, n-m1, a( i1, i1 ), lda,
226 & t( i1, i1 ), ldt, iinfo )
232 t( j, i+m1 ) = (a( j, i+m1 ))
236 CALL dtrmm(
'R',
'U',
'T',
'U', m1, m2, one,
237 & a( i1, i1 ), lda, t( 1, i1 ), ldt )
239 CALL dgemm(
'N',
'T', m1, m2, n-m, one, a( 1, j1 ), lda,
240 & a( i1, j1 ), lda, one, t( 1, i1 ), ldt )
242 CALL dtrmm(
'L',
'U',
'N',
'N', m1, m2, -one, t, ldt,
245 CALL dtrmm(
'R',
'U',
'N',
'N', m1, m2, one,
246 & t( i1, i1 ), ldt, t( 1, i1 ), ldt )
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM
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).
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...