188 SUBROUTINE zgebd2( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO )
195 INTEGER INFO, LDA, M, N
198 DOUBLE PRECISION D( * ), E( * )
199 COMPLEX*16 A( lda, * ), TAUP( * ), TAUQ( * ), WORK( * )
206 parameter( zero = ( 0.0d+0, 0.0d+0 ),
207 $ one = ( 1.0d+0, 0.0d+0 ) )
217 INTRINSIC dconjg, max, min
226 ELSE IF( n.LT.0 )
THEN 228 ELSE IF( lda.LT.max( 1, m ) )
THEN 232 CALL xerbla(
'ZGEBD2', -info )
245 CALL zlarfg( m-i+1, alpha, a( min( i+1, m ), i ), 1,
247 d( i ) = dble( alpha )
253 $
CALL zlarf(
'Left', m-i+1, n-i, a( i, i ), 1,
254 $ dconjg( tauq( i ) ), a( i, i+1 ), lda, work )
262 CALL zlacgv( n-i, a( i, i+1 ), lda )
264 CALL zlarfg( n-i, alpha, a( i, min( i+2, n ) ), lda,
266 e( i ) = dble( alpha )
271 CALL zlarf(
'Right', m-i, n-i, a( i, i+1 ), lda,
272 $ taup( i ), a( i+1, i+1 ), lda, work )
273 CALL zlacgv( n-i, a( i, i+1 ), lda )
287 CALL zlacgv( n-i+1, a( i, i ), lda )
289 CALL zlarfg( n-i+1, alpha, a( i, min( i+1, n ) ), lda,
291 d( i ) = dble( alpha )
297 $
CALL zlarf(
'Right', m-i, n-i+1, a( i, i ), lda,
298 $ taup( i ), a( i+1, i ), lda, work )
299 CALL zlacgv( n-i+1, a( i, i ), lda )
308 CALL zlarfg( m-i, alpha, a( min( i+2, m ), i ), 1,
310 e( i ) = dble( alpha )
315 CALL zlarf(
'Left', m-i, n-i, a( i+1, i ), 1,
316 $ dconjg( tauq( i ) ), a( i+1, i+1 ), lda,
subroutine zlarf(SIDE, M, N, V, INCV, TAU, C, LDC, WORK)
ZLARF applies an elementary reflector to a general rectangular matrix.
subroutine zlarfg(N, ALPHA, X, INCX, TAU)
ZLARFG generates an elementary reflector (Householder matrix).
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zgebd2(M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO)
ZGEBD2 reduces a general matrix to bidiagonal form using an unblocked algorithm.
subroutine zlacgv(N, X, INCX)
ZLACGV conjugates a complex vector.