115 RECURSIVE SUBROUTINE sgelqt3( M, N, A, LDA, T, LDT, INFO )
122 INTEGER info, lda, m, n, ldt
125 REAL a( lda, * ), t( ldt, * )
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( 1, 1 ), a( 1, min( 2, n ) ), lda,
175 CALL sgelqt3( m1, n, a, lda, t, ldt, iinfo )
181 t( i+m1, j ) = a( i+m1, j )
184 CALL strmm(
'R',
'U',
'T',
'U', m2, m1, one,
185 & a, lda, t( i1, 1 ), ldt )
187 CALL sgemm(
'N',
'T', m2, m1, n-m1, one, a( i1, i1 ), lda,
188 & a( 1, i1 ), lda, one, t( i1, 1 ), ldt)
190 CALL strmm(
'R',
'U',
'N',
'N', m2, m1, one,
191 & t, ldt, t( i1, 1 ), ldt )
193 CALL sgemm(
'N',
'N', m2, n-m1, m1, -one, t( i1, 1 ), ldt,
194 & a( 1, i1 ), lda, one, a( i1, i1 ), lda )
196 CALL strmm(
'R',
'U',
'N',
'U', m2, m1 , one,
197 & a, lda, t( i1, 1 ), ldt )
201 a( i+m1, j ) = a( i+m1, j ) - t( i+m1, j )
208 CALL sgelqt3( m2, n-m1, a( i1, i1 ), lda,
209 & t( i1, i1 ), ldt, iinfo )
215 t( j, i+m1 ) = (a( j, i+m1 ))
219 CALL strmm(
'R',
'U',
'T',
'U', m1, m2, one,
220 & a( i1, i1 ), lda, t( 1, i1 ), ldt )
222 CALL sgemm(
'N',
'T', m1, m2, n-m, one, a( 1, j1 ), lda,
223 & a( i1, j1 ), lda, one, t( 1, i1 ), ldt )
225 CALL strmm(
'L',
'U',
'N',
'N', m1, m2, -one, t, ldt,
228 CALL strmm(
'R',
'U',
'N',
'N', m1, m2, one,
229 & t( i1, i1 ), ldt, t( 1, i1 ), ldt )
subroutine xerbla(srname, info)
recursive subroutine sgelqt3(m, n, a, lda, t, ldt, info)
SGELQT3
subroutine sgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
SGEMM
subroutine slarfg(n, alpha, x, incx, tau)
SLARFG generates an elementary reflector (Householder matrix).
subroutine strmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
STRMM