115 RECURSIVE SUBROUTINE sgelqt3( M, N, A, LDA, T, LDT, INFO )
122 INTEGER info, lda, m, n, ldt
125 REAL a( lda, * ), t( , * )
132 parameter( one = 1.0e+00 )
135 INTEGER i, i1, j, j1, m1, m2, iinfo
145 ELSE IF( n .LT. m )
THEN
147 ELSE IF( lda .LT.
max( 1, m ) )
THEN
149 ELSE IF( ldt .LT.
max( 1, m ) )
THEN
153 CALL xerbla(
'SGELQT3', -info )
161 CALL slarfg( n, a, a( 1,
min( 2, n ) ), lda, t )
174 CALL sgelqt3( m1, n, a, lda, t, ldt, iinfo )
180 t( i+m1, j ) = a( i+m1, j )
183 CALL strmm(
'R',
'U',
'T',
'U', m2, m1, one,
184 & a, lda, t( i1, 1 ), ldt )
186 CALL sgemm(
'N',
'T', m2, m1, n-m1, one, a( i1, i1 ), lda,
187 & a( 1, i1 ), lda, one, t( i1, 1 ), ldt)
189 CALL strmm(
'R',
'U',
'N',
'N', m2, m1, one,
190 & t, ldt, t( i1, 1 ), ldt )
192 CALL sgemm(
'N',
'N', m2, n-m1, m1, -one, t( i1, 1 ), ldt,
193 & a( 1, i1 ), lda, one, a( i1, i1 ), lda )
195 CALL strmm(
'R',
'U',
'N',
'U', m2, m1 , one,
196 & a, lda, t( i1, 1 ), ldt )
200 a( i+m1, j ) = a( i+m1, j ) - t( i+m1, j )
207 CALL sgelqt3( m2, n-m1, a( i1, i1 ), lda,
208 & t( i1, i1 ), ldt, iinfo )
214 t( j, i+m1 ) = (a( j, i+m1 ))
218 CALL strmm(
'R',
'U', 't
', 'u
', M1, M2, ONE,
219 & A( I1, I1 ), LDA, T( 1, I1 ), LDT )
221 CALL SGEMM( 'n
', 't
', M1, M2, N-M, ONE, A( 1, J1 ), LDA,
222 & A( I1, J1 ), LDA, ONE, T( 1, I1 ), LDT )
224 CALL STRMM( 'l
', 'u
', 'n
', 'n
', M1, M2, -ONE, T, LDT,
227 CALL STRMM( 'r
', 'u
', 'n
', 'n
', M1, M2, ONE,
228 & T( I1, I1 ), LDT, T( 1, I1 ), LDT )
subroutine slarfg(n, alpha, x, incx, tau)
SLARFG generates an elementary reflector (Householder matrix).
subroutine sgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
SGEMM
subroutine strmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
STRMM