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, 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 strmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SGEMM
recursive subroutine sgelqt3(M, N, A, LDA, T, LDT, INFO)
SGELQT3
subroutine slarfg(N, ALPHA, X, INCX, TAU)
SLARFG generates an elementary reflector (Householder matrix).