131 RECURSIVE SUBROUTINE sgeqrt3( M, N, A, LDA, T, LDT, INFO )
138 INTEGER INFO, LDA, M, N, LDT
141 REAL A( lda, * ), T( ldt, * )
148 parameter( one = 1.0 )
151 INTEGER I, I1, J, J1, N1, N2, IINFO
161 ELSE IF( m .LT. n )
THEN 163 ELSE IF( lda .LT. max( 1, m ) )
THEN 165 ELSE IF( ldt .LT. max( 1, n ) )
THEN 169 CALL xerbla(
'SGEQRT3', -info )
177 CALL slarfg( m, a(1,1), a( min( 2, m ), 1 ), 1, t(1,1) )
190 CALL sgeqrt3( m, n1, a, lda, t, ldt, iinfo )
196 t( i, j+n1 ) = a( i, j+n1 )
199 CALL strmm(
'L',
'L',
'T',
'U', n1, n2, one,
200 & a, lda, t( 1, j1 ), ldt )
202 CALL sgemm(
'T',
'N', n1, n2, m-n1, one, a( j1, 1 ), lda,
203 & a( j1, j1 ), lda, one, t( 1, j1 ), ldt)
205 CALL strmm(
'L',
'U',
'T',
'N', n1, n2, one,
206 & t, ldt, t( 1, j1 ), ldt )
208 CALL sgemm(
'N',
'N', m-n1, n2, n1, -one, a( j1, 1 ), lda,
209 & t( 1, j1 ), ldt, one, a( j1, j1 ), lda )
211 CALL strmm(
'L',
'L',
'N',
'U', n1, n2, one,
212 & a, lda, t( 1, j1 ), ldt )
216 a( i, j+n1 ) = a( i, j+n1 ) - t( i, j+n1 )
222 CALL sgeqrt3( m-n1, n2, a( j1, j1 ), lda,
223 & t( j1, j1 ), ldt, iinfo )
229 t( i, j+n1 ) = (a( j+n1, i ))
233 CALL strmm(
'R',
'L',
'N',
'U', n1, n2, one,
234 & a( j1, j1 ), lda, t( 1, j1 ), ldt )
236 CALL sgemm(
'T',
'N', n1, n2, m-n, one, a( i1, 1 ), lda,
237 & a( i1, j1 ), lda, one, t( 1, j1 ), ldt )
239 CALL strmm(
'L',
'U',
'N',
'N', n1, n2, -one, t, ldt,
242 CALL strmm(
'R',
'U',
'N',
'N', n1, n2, one,
243 & t( j1, j1 ), ldt, t( 1, j1 ), 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
subroutine slarfg(N, ALPHA, X, INCX, TAU)
SLARFG generates an elementary reflector (Householder matrix).
recursive subroutine sgeqrt3(M, N, A, LDA, T, LDT, INFO)
SGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact...