191 SUBROUTINE cgebd2( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO )
199 INTEGER INFO, LDA, M, N
203 COMPLEX A( lda, * ), TAUP( * ), TAUQ( * ), WORK( * )
210 parameter( zero = ( 0.0e+0, 0.0e+0 ),
211 $ one = ( 1.0e+0, 0.0e+0 ) )
221 INTRINSIC conjg, max, min
230 ELSE IF( n.LT.0 )
THEN
232 ELSE IF( lda.LT.max( 1, m ) )
THEN
236 CALL xerbla(
'CGEBD2', -info )
249 CALL clarfg( m-i+1, alpha, a( min( i+1, m ), i ), 1,
257 $
CALL clarf(
'Left', m-i+1, n-i, a( i, i ), 1,
258 $ conjg( tauq( i ) ), a( i, i+1 ), lda, work )
266 CALL clacgv( n-i, a( i, i+1 ), lda )
268 CALL clarfg( n-i, alpha, a( i, min( i+2, n ) ),
275 CALL clarf(
'Right', m-i, n-i, a( i, i+1 ), lda,
276 $ taup( i ), a( i+1, i+1 ), lda, work )
277 CALL clacgv( n-i, a( i, i+1 ), lda )
291 CALL clacgv( n-i+1, a( i, i ), lda )
293 CALL clarfg( n-i+1, alpha, a( i, min( i+1, n ) ), lda,
301 $
CALL clarf(
'Right', m-i, n-i+1, a( i, i ), lda,
302 $ taup( i ), a( i+1, i ), lda, work )
303 CALL clacgv( n-i+1, a( i, i ), lda )
312 CALL clarfg( m-i, alpha, a( min( i+2, m ), i ), 1,
319 CALL clarf(
'Left', m-i, n-i, a( i+1, i ), 1,
320 $ 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 xerbla(SRNAME, INFO)
XERBLA
subroutine clacgv(N, X, INCX)
CLACGV conjugates a complex vector.
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.