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( 1, 1 ), a( 1, min( 2, n ) ), lda,
190 CALL dgelqt3( m1, n, a, lda, t, ldt, iinfo )
196 t( i+m1, j ) = a( i+m1, j )
199 CALL dtrmm(
'R',
'U',
'T',
'U', m2, m1, one,
200 & a, lda, t( i1, 1 ), ldt )
202 CALL dgemm(
'N',
'T', m2, m1, n-m1, one, a( i1, i1 ), lda,
203 & a( 1, i1 ), lda, one, t( i1, 1 ), ldt)
205 CALL dtrmm(
'R',
'U',
'N',
'N', m2, m1, one,
206 & t, ldt, t( i1, 1 ), ldt )
208 CALL dgemm(
'N',
'N', m2, n-m1, m1, -one, t( i1, 1 ), ldt,
209 & a( 1, i1 ), lda, one, a( i1, i1 ), lda )
211 CALL dtrmm(
'R',
'U',
'N',
'U', m2, m1 , one,
212 & a, lda, t( i1, 1 ), ldt )
216 a( i+m1, j ) = a( i+m1, j ) - t( i+m1, j )
223 CALL dgelqt3( m2, n-m1, a( i1, i1 ), lda,
224 & t( i1, i1 ), ldt, iinfo )
230 t( j, i+m1 ) = (a( j, i+m1 ))
234 CALL dtrmm(
'R',
'U',
'T',
'U', m1, m2, one,
235 & a( i1, i1 ), lda, t( 1, i1 ), ldt )
237 CALL dgemm(
'N',
'T', m1, m2, n-m, one, a( 1, j1 ), lda,
238 & a( i1, j1 ), lda, one, t( 1, i1 ), ldt )
240 CALL dtrmm(
'L',
'U',
'N',
'N', m1, m2, -one, t, ldt,
243 CALL dtrmm(
'R',
'U',
'N',
'N', m1, m2, one,
244 & t( i1, i1 ), ldt, t( 1, i1 ), ldt )
subroutine xerbla(srname, info)
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 dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
DGEMM
subroutine dlarfg(n, alpha, x, incx, tau)
DLARFG generates an elementary reflector (Householder matrix).
subroutine dtrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRMM