210 SUBROUTINE zlabrd( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y,
218 INTEGER LDA, LDX, LDY, , N, NB
221 DOUBLE PRECISION D( * ), E( * )
222 COMPLEX*16 A( LDA, * ), TAUP( * ), TAUQ( * ), ( 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 ),
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 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 zlarfg(n, alpha, x, incx, tau)
ZLARFG generates an elementary reflector (Householder matrix).
subroutine zgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
ZGEMV