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 sgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
SGEMM