210 SUBROUTINE zlabrd( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y,
218 INTEGER LDA, LDX, LDY, M, N, NB
221 DOUBLE PRECISION D( * ), E( * )
222 COMPLEX*16 A( LDA, * ), TAUP( * ), TAUQ( * ), X( LDX, * ),
230 parameter( zero = ( 0.0d+0, 0.0d+0 ),
231 $ one = ( 1.0d+0, 0.0d+0 ) )
247 IF( m.LE.0 .OR. n.LE.0 )
258 CALL zlacgv( i-1, y( i, 1 ), ldy )
259 CALL zgemv(
'No transpose', m-i+1, i-1, -one, a( i, 1 ),
260 $ lda, y( i, 1 ), ldy, one, a( i, i ), 1 )
261 CALL zlacgv( i-1, y( i, 1 ), ldy )
262 CALL zgemv(
'No transpose', m-i+1, i-1, -one, x( i, 1 ),
263 $ ldx, a( 1, i ), 1, one, a( i, i ), 1 )
268 CALL zlarfg( m-i+1, alpha, a( min( i+1, m ), i ), 1,
270 d( i ) = dble( alpha )
276 CALL zgemv(
'Conjugate transpose', m-i+1, n-i, one,
277 $ a( i, i+1 ), lda, a( i, i ), 1, zero,
279 CALL zgemv(
'Conjugate transpose', m-i+1, i-1, one,
280 $ a( i, 1 ), lda, a( i, i ), 1, zero,
282 CALL zgemv(
'No transpose', n-i, i-1, -one, y( i+1, 1 ),
283 $ ldy, y( 1, i ), 1, one, y( i+1, i ), 1 )
284 CALL zgemv(
'Conjugate transpose', m-i+1, i-1, one,
285 $ x( i, 1 ), ldx, a( i, i ), 1, zero,
287 CALL zgemv(
'Conjugate transpose', i-1, n-i, -one,
288 $ a( 1, i+1 ), lda, y( 1, i ), 1, one,
290 CALL zscal( n-i, tauq( i ), y( i+1, i ), 1 )
294 CALL zlacgv( n-i, a( i, i+1 ), lda )
295 CALL zlacgv( i, a( i, 1 ), lda )
296 CALL zgemv(
'No transpose', n-i, i, -one, y( i+1, 1 ),
297 $ ldy, a( i, 1 ), lda, one, a( i, i+1 ), lda )
298 CALL zlacgv( i, a( i, 1 ), lda )
299 CALL zlacgv( i-1, x( i, 1 ), ldx )
300 CALL zgemv(
'Conjugate transpose', i-1, n-i, -one,
301 $ a( 1, i+1 ), lda, x( i, 1 ), ldx, one,
303 CALL zlacgv( i-1, x( i, 1 ), ldx )
308 CALL zlarfg( n-i, alpha, a( i, min( i+2, n ) ), lda,
310 e( i ) = dble( alpha )
315 CALL zgemv(
'No transpose', m-i, n-i, one, a( i+1, i+1 ),
316 $ lda, a( i, i+1 ), lda, zero, x( i+1, i ), 1 )
317 CALL zgemv(
'Conjugate transpose', n-i, i, one,
318 $ y( i+1, 1 ), ldy, a( i, i+1 ), lda, zero,
320 CALL zgemv(
'No transpose', m-i, i, -one, a( i+1, 1 ),
321 $ lda, x( 1, i ), 1, one, x( i+1, i ), 1 )
322 CALL zgemv(
'No transpose', i-1, n-i, one, a( 1, i+1 ),
323 $ lda, a( i, i+1 ), lda, zero, x( 1, i ), 1 )
324 CALL zgemv(
'No transpose', m-i, i-1, -one, x( i+1, 1 ),
325 $ ldx, x( 1, i ), 1, one, x( i+1, i ), 1 )
326 CALL zscal( m-i, taup( i ), x( i+1, i ), 1 )
327 CALL zlacgv( n-i, a( i, i+1 ), lda )
338 CALL zlacgv( n-i+1, a( i, i ), lda )
339 CALL zlacgv( i-1, a( i, 1 ), lda )
340 CALL zgemv(
'No transpose', n-i+1, i-1, -one, y( i, 1 ),
341 $ ldy, a( i, 1 ), lda, one, a( i, i ), lda )
342 CALL zlacgv( i-1, a( i, 1 ), lda )
343 CALL zlacgv( i-1, x( i, 1 ), ldx )
344 CALL zgemv(
'Conjugate transpose', i-1, n-i+1, -one,
345 $ a( 1, i ), lda, x( i, 1 ), ldx, one, a( i, i ),
347 CALL zlacgv( i-1, x( i, 1 ), ldx )
352 CALL zlarfg( n-i+1, alpha, a( i, min( i+1, n ) ), lda,
354 d( i ) = dble( alpha )
360 CALL zgemv(
'No transpose', m-i, n-i+1, one, a( i+1, i ),
361 $ lda, a( i, i ), lda, zero, x( i+1, i ), 1 )
362 CALL zgemv(
'Conjugate transpose', n-i+1, i-1, one,
363 $ y( i, 1 ), ldy, a( i, i ), lda, zero,
365 CALL zgemv(
'No transpose', m-i, i-1, -one, a( i+1, 1 ),
366 $ lda, x( 1, i ), 1, one, x( i+1, i ), 1 )
367 CALL zgemv(
'No transpose', i-1, n-i+1, one, a( 1, i ),
368 $ lda, a( i, i ), lda, zero, x( 1, i ), 1 )
369 CALL zgemv(
'No transpose', m-i, i-1, -one, x( i+1, 1 ),
370 $ ldx, x( 1, i ), 1, one, x( i+1, i ), 1 )
371 CALL zscal( m-i, taup( i ), x( i+1, i ), 1 )
372 CALL zlacgv( n-i+1, a( i, i ), lda )
376 CALL zlacgv( i-1, y( i, 1 ), ldy )
377 CALL zgemv(
'No transpose', m-i, i-1, -one, a( i+1, 1 ),
378 $ lda, y( i, 1 ), ldy, one, a( i+1, i ), 1 )
379 CALL zlacgv( i-1, y( i, 1 ), ldy )
380 CALL zgemv(
'No transpose', m-i, i, -one, x( i+1, 1 ),
381 $ ldx, a( 1, i ), 1, one, a( i+1, i ), 1 )
386 CALL zlarfg( m-i, alpha, a( min( i+2, m ), i ), 1,
388 e( i ) = dble( alpha )
393 CALL zgemv(
'Conjugate transpose', m-i, n-i, one,
394 $ a( i+1, i+1 ), lda, a( i+1, i ), 1, zero,
396 CALL zgemv(
'Conjugate transpose', m-i, i-1, one,
397 $ a( i+1, 1 ), lda, a( i+1, i ), 1, zero,
399 CALL zgemv(
'No transpose', n-i, i-1, -one, y( i+1, 1 ),
400 $ ldy, y( 1, i ), 1, one, y( i+1, i ), 1 )
401 CALL zgemv(
'Conjugate transpose', m-i, i, one,
402 $ x( i+1, 1 ), ldx, a( i+1, i ), 1, zero,
404 CALL zgemv(
'Conjugate transpose', i, n-i, -one,
405 $ a( 1, i+1 ), lda, y( 1, i ), 1, one,
407 CALL zscal( n-i, tauq( i ), y( i+1, i ), 1 )
409 CALL zlacgv( n-i+1, a( i, i ), lda )
subroutine zgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
ZGEMV
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 zlacgv(n, x, incx)
ZLACGV conjugates a complex vector.
subroutine zlarfg(n, alpha, x, incx, tau)
ZLARFG generates an elementary reflector (Householder matrix).
subroutine zscal(n, za, zx, incx)
ZSCAL