212 SUBROUTINE zlabrd( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y,
221 INTEGER LDA, LDX, LDY, M, N, NB
224 DOUBLE PRECISION D( * ), E( * )
225 COMPLEX*16 A( lda, * ), TAUP( * ), TAUQ( * ), X( ldx, * ),
233 parameter ( zero = ( 0.0d+0, 0.0d+0 ),
234 $ one = ( 1.0d+0, 0.0d+0 ) )
250 IF( m.LE.0 .OR. n.LE.0 )
261 CALL zlacgv( i-1, y( i, 1 ), ldy )
262 CALL zgemv(
'No transpose', m-i+1, i-1, -one, a( i, 1 ),
263 $ lda, y( i, 1 ), ldy, one, a( i, i ), 1 )
264 CALL zlacgv( i-1, y( i, 1 ), ldy )
265 CALL zgemv(
'No transpose', m-i+1, i-1, -one, x( i, 1 ),
266 $ ldx, a( 1, i ), 1, one, a( i, i ), 1 )
271 CALL zlarfg( m-i+1, alpha, a( min( i+1, m ), i ), 1,
279 CALL zgemv(
'Conjugate transpose', m-i+1, n-i, one,
280 $ a( i, i+1 ), lda, a( i, i ), 1, zero,
282 CALL zgemv(
'Conjugate transpose', m-i+1, i-1, one,
283 $ a( i, 1 ), lda, a( i, i ), 1, zero,
285 CALL zgemv(
'No transpose', n-i, i-1, -one, y( i+1, 1 ),
286 $ ldy, y( 1, i ), 1, one, y( i+1, i ), 1 )
287 CALL zgemv(
'Conjugate transpose', m-i+1, i-1, one,
288 $ x( i, 1 ), ldx, a( i, i ), 1, zero,
290 CALL zgemv(
'Conjugate transpose', i-1, n-i, -one,
291 $ a( 1, i+1 ), lda, y( 1, i ), 1, one,
293 CALL zscal( n-i, tauq( i ), y( i+1, i ), 1 )
297 CALL zlacgv( n-i, a( i, i+1 ), lda )
298 CALL zlacgv( i, a( i, 1 ), lda )
299 CALL zgemv(
'No transpose', n-i, i, -one, y( i+1, 1 ),
300 $ ldy, a( i, 1 ), lda, one, a( i, i+1 ), lda )
301 CALL zlacgv( i, a( i, 1 ), lda )
302 CALL zlacgv( i-1, x( i, 1 ), ldx )
303 CALL zgemv(
'Conjugate transpose', i-1, n-i, -one,
304 $ a( 1, i+1 ), lda, x( i, 1 ), ldx, one,
306 CALL zlacgv( i-1, x( i, 1 ), ldx )
311 CALL zlarfg( n-i, alpha, a( i, min( i+2, n ) ), lda,
318 CALL zgemv(
'No transpose', m-i, n-i, one, a( i+1, i+1 ),
319 $ lda, a( i, i+1 ), lda, zero, x( i+1, i ), 1 )
320 CALL zgemv(
'Conjugate transpose', n-i, i, one,
321 $ y( i+1, 1 ), ldy, a( i, i+1 ), lda, zero,
323 CALL zgemv(
'No transpose', m-i, i, -one, a( i+1, 1 ),
324 $ lda, x( 1, i ), 1, one, x( i+1, i ), 1 )
325 CALL zgemv(
'No transpose', i-1, n-i, one, a( 1, i+1 ),
326 $ lda, a( i, i+1 ), lda, zero, x( 1, i ), 1 )
327 CALL zgemv(
'No transpose', m-i, i-1, -one, x( i+1, 1 ),
328 $ ldx, x( 1, i ), 1, one, x( i+1, i ), 1 )
329 CALL zscal( m-i, taup( i ), x( i+1, i ), 1 )
330 CALL zlacgv( n-i, a( i, i+1 ), lda )
341 CALL zlacgv( n-i+1, a( i, i ), lda )
342 CALL zlacgv( i-1, a( i, 1 ), lda )
343 CALL zgemv(
'No transpose', n-i+1, i-1, -one, y( i, 1 ),
344 $ ldy, a( i, 1 ), lda, one, a( i, i ), lda )
345 CALL zlacgv( i-1, a( i, 1 ), lda )
346 CALL zlacgv( i-1, x( i, 1 ), ldx )
347 CALL zgemv(
'Conjugate transpose', i-1, n-i+1, -one,
348 $ a( 1, i ), lda, x( i, 1 ), ldx, one, a( i, i ),
350 CALL zlacgv( i-1, x( i, 1 ), ldx )
355 CALL zlarfg( n-i+1, alpha, a( i, min( i+1, n ) ), lda,
363 CALL zgemv(
'No transpose', m-i, n-i+1, one, a( i+1, i ),
364 $ lda, a( i, i ), lda, zero, x( i+1, i ), 1 )
365 CALL zgemv(
'Conjugate transpose', n-i+1, i-1, one,
366 $ y( i, 1 ), ldy, a( i, i ), lda, zero,
368 CALL zgemv(
'No transpose', m-i, i-1, -one, a( i+1, 1 ),
369 $ lda, x( 1, i ), 1, one, x( i+1, i ), 1 )
370 CALL zgemv(
'No transpose', i-1, n-i+1, one, a( 1, i ),
371 $ lda, a( i, i ), lda, zero, x( 1, i ), 1 )
372 CALL zgemv(
'No transpose', m-i, i-1, -one, x( i+1, 1 ),
373 $ ldx, x( 1, i ), 1, one, x( i+1, i ), 1 )
374 CALL zscal( m-i, taup( i ), x( i+1, i ), 1 )
375 CALL zlacgv( n-i+1, a( i, i ), lda )
379 CALL zlacgv( i-1, y( i, 1 ), ldy )
380 CALL zgemv(
'No transpose', m-i, i-1, -one, a( i+1, 1 ),
381 $ lda, y( i, 1 ), ldy, one, a( i+1, i ), 1 )
382 CALL zlacgv( i-1, y( i, 1 ), ldy )
383 CALL zgemv(
'No transpose', m-i, i, -one, x( i+1, 1 ),
384 $ ldx, a( 1, i ), 1, one, a( i+1, i ), 1 )
389 CALL zlarfg( m-i, alpha, a( min( i+2, m ), i ), 1,
396 CALL zgemv(
'Conjugate transpose', m-i, n-i, one,
397 $ a( i+1, i+1 ), lda, a( i+1, i ), 1, zero,
399 CALL zgemv(
'Conjugate transpose', m-i, i-1, one,
400 $ a( i+1, 1 ), lda, a( i+1, i ), 1, zero,
402 CALL zgemv(
'No transpose', n-i, i-1, -one, y( i+1, 1 ),
403 $ ldy, y( 1, i ), 1, one, y( i+1, i ), 1 )
404 CALL zgemv(
'Conjugate transpose', m-i, i, one,
405 $ x( i+1, 1 ), ldx, a( i+1, i ), 1, zero,
407 CALL zgemv(
'Conjugate transpose', i, n-i, -one,
408 $ a( 1, i+1 ), lda, y( 1, i ), 1, one,
410 CALL zscal( n-i, tauq( i ), y( i+1, i ), 1 )
412 CALL zlacgv( n-i+1, a( i, i ), lda )
subroutine zgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGEMV
subroutine zlarfg(N, ALPHA, X, INCX, TAU)
ZLARFG generates an elementary reflector (Householder matrix).
subroutine zlabrd(M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y, LDY)
ZLABRD reduces the first nb rows and columns of a general matrix to a bidiagonal form.
subroutine zscal(N, ZA, ZX, INCX)
ZSCAL
subroutine zlacgv(N, X, INCX)
ZLACGV conjugates a complex vector.