129 RECURSIVE SUBROUTINE cgeqrt3( M, N, A, LDA, T, LDT, INFO )
136 INTEGER info, lda, m, n, ldt
139 COMPLEX a( lda, * ), t( ldt, * )
146 parameter( one = (1.0,0.0) )
149 INTEGER i, i1, j, j1, n1, n2, iinfo
159 ELSE IF( m .LT. n )
THEN
161 ELSE IF( lda .LT. max( 1, m ) )
THEN
163 ELSE IF( ldt .LT. max( 1, n ) )
THEN
167 CALL xerbla(
'CGEQRT3', -info )
175 CALL clarfg( m, a(1,1), a( min( 2, m ), 1 ), 1, t(1,1) )
188 CALL cgeqrt3( m, n1, a, lda, t, ldt, iinfo )
194 t( i, j+n1 ) = a( i, j+n1 )
197 CALL ctrmm(
'L',
'L',
'C',
'U', n1, n2, one,
198 & a, lda, t( 1, j1 ), ldt )
200 CALL cgemm(
'C',
'N', n1, n2, m-n1, one, a( j1, 1 ), lda,
201 & a( j1, j1 ), lda, one, t( 1, j1 ), ldt)
203 CALL ctrmm(
'L',
'U',
'C',
'N', n1, n2, one,
204 & t, ldt, t( 1, j1 ), ldt )
206 CALL cgemm(
'N',
'N', m-n1, n2, n1, -one, a( j1, 1 ), lda,
207 & t( 1, j1 ), ldt, one, a( j1, j1 ), lda )
209 CALL ctrmm(
'L',
'L',
'N',
'U', n1, n2, one,
210 & a, lda, t( 1, j1 ), ldt )
214 a( i, j+n1 ) = a( i, j+n1 ) - t( i, j+n1 )
220 CALL cgeqrt3( m-n1, n2, a( j1, j1 ), lda,
221 & t( j1, j1 ), ldt, iinfo )
227 t( i, j+n1 ) = conjg(a( j+n1, i ))
231 CALL ctrmm(
'R',
'L',
'N',
'U', n1, n2, one,
232 & a( j1, j1 ), lda, t( 1, j1 ), ldt )
234 CALL cgemm(
'C',
'N', n1, n2, m-n, one, a( i1, 1 ), lda,
235 & a( i1, j1 ), lda, one, t( 1, j1 ), ldt )
237 CALL ctrmm(
'L',
'U',
'N',
'N', n1, n2, -one, t, ldt,
240 CALL ctrmm(
'R',
'U',
'N',
'N', n1, n2, one,
241 & t( j1, j1 ), ldt, t( 1, j1 ), ldt )
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM