189 SUBROUTINE cgebd2( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO )
196 INTEGER INFO, LDA, M, N
200 COMPLEX A( LDA, * ), TAUP( * ), TAUQ( * ), WORK( *
207 parameter( zero = ( 0.0e+0, 0.0e+0 ),
208 $ one = ( 1.0e+0, 0.0e+0 ) )
229 ELSE IF( lda.LT.
max( 1, m ) )
THEN
233 CALL xerbla(
'CGEBD2', -info )
246 CALL clarfg( m-i+1, alpha, a(
min( i+1, m ), i ), 1,
248 d( i ) = real( alpha )
254 $
CALL clarf(
'Left', m-i+1, n-i, a( i, i
255 $ conjg( tauq( i ) ), a( i, i+1 ), lda, work )
263 CALL clacgv( n-i, a( i, i+1 ), lda )
265 CALL clarfg( n-i, alpha, a( i,
min( i+2, n ) ),
267 e( i ) = real( alpha )
272 CALL clarf(
'Right', m-i, n-i, a( i, i+1 ), lda,
273 $ taup( i ), a( i+1, i+1 ), lda, work )
274 CALL clacgv( n-i, a( i, i+1 ), lda )
288 CALL clacgv( n-i+1, a( i, i ), lda )
290 CALL clarfg( n-i+1, alpha, a( i,
min( i+1, n ) ), lda,
292 d( i ) = real( alpha )
298 $
CALL clarf(
'Right', m-i, n-i+1, a( i, i ), lda,
299 $ taup( i ), a( i+1, i ), lda, work )
300 CALL clacgv( n-i+1, a( i, i ), lda )
309 CALL clarfg( m-i, alpha, a(
min( i+2, m ), i ), 1,
311 e( i ) = real( alpha )
316 CALL clarf(
'Left', m-i, n-i, a( i+1, i ), 1,
317 $ conjg( tauq( i ) ), a( i+1, i+1 ), lda,
subroutine cgebd2(m, n, a, lda, d, e, tauq, taup, work, info)
CGEBD2 reduces a general matrix to bidiagonal form using an unblocked algorithm.
subroutine clarfg(n, alpha, x, incx, tau)
CLARFG generates an elementary reflector (Householder matrix).
subroutine clarf(side, m, n, v, incv, tau, c, ldc, work)
CLARF applies an elementary reflector to a general rectangular matrix.