212 SUBROUTINE clabrd( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y,
221 INTEGER LDA, LDX, LDY, M, N, NB
225 COMPLEX A( lda, * ), TAUP( * ), TAUQ( * ), X( ldx, * ),
233 parameter ( zero = ( 0.0e+0, 0.0e+0 ),
234 $ one = ( 1.0e+0, 0.0e+0 ) )
250 IF( m.LE.0 .OR. n.LE.0 )
261 CALL clacgv( i-1, y( i, 1 ), ldy )
262 CALL cgemv(
'No transpose', m-i+1, i-1, -one, a( i, 1 ),
263 $ lda, y( i, 1 ), ldy, one, a( i, i ), 1 )
264 CALL clacgv( i-1, y( i, 1 ), ldy )
265 CALL cgemv(
'No transpose', m-i+1, i-1, -one, x( i, 1 ),
266 $ ldx, a( 1, i ), 1, one, a( i, i ), 1 )
271 CALL clarfg( m-i+1, alpha, a( min( i+1, m ), i ), 1,
279 CALL cgemv(
'Conjugate transpose', m-i+1, n-i, one,
280 $ a( i, i+1 ), lda, a( i, i ), 1, zero,
282 CALL cgemv(
'Conjugate transpose', m-i+1, i-1, one,
283 $ a( i, 1 ), lda, a( i, i ), 1, zero,
285 CALL cgemv(
'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 cgemv(
'Conjugate transpose', m-i+1, i-1, one,
288 $ x( i, 1 ), ldx, a( i, i ), 1, zero,
290 CALL cgemv(
'Conjugate transpose', i-1, n-i, -one,
291 $ a( 1, i+1 ), lda, y( 1, i ), 1, one,
293 CALL cscal( n-i, tauq( i ), y( i+1, i ), 1 )
297 CALL clacgv( n-i, a( i, i+1 ), lda )
298 CALL clacgv( i, a( i, 1 ), lda )
299 CALL cgemv(
'No transpose', n-i, i, -one, y( i+1, 1 ),
300 $ ldy, a( i, 1 ), lda, one, a( i, i+1 ), lda )
301 CALL clacgv( i, a( i, 1 ), lda )
302 CALL clacgv( i-1, x( i, 1 ), ldx )
303 CALL cgemv(
'Conjugate transpose', i-1, n-i, -one,
304 $ a( 1, i+1 ), lda, x( i, 1 ), ldx, one,
306 CALL clacgv( i-1, x( i, 1 ), ldx )
311 CALL clarfg( n-i, alpha, a( i, min( i+2, n ) ),
318 CALL cgemv(
'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 cgemv(
'Conjugate transpose', n-i, i, one,
321 $ y( i+1, 1 ), ldy, a( i, i+1 ), lda, zero,
323 CALL cgemv(
'No transpose', m-i, i, -one, a( i+1, 1 ),
324 $ lda, x( 1, i ), 1, one, x( i+1, i ), 1 )
325 CALL cgemv(
'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 cgemv(
'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 cscal( m-i, taup( i ), x( i+1, i ), 1 )
330 CALL clacgv( n-i, a( i, i+1 ), lda )
341 CALL clacgv( n-i+1, a( i, i ), lda )
342 CALL clacgv( i-1, a( i, 1 ), lda )
343 CALL cgemv(
'No transpose', n-i+1, i-1, -one, y( i, 1 ),
344 $ ldy, a( i, 1 ), lda, one, a( i, i ), lda )
345 CALL clacgv( i-1, a( i, 1 ), lda )
346 CALL clacgv( i-1, x( i, 1 ), ldx )
347 CALL cgemv(
'Conjugate transpose', i-1, n-i+1, -one,
348 $ a( 1, i ), lda, x( i, 1 ), ldx, one, a( i, i ),
350 CALL clacgv( i-1, x( i, 1 ), ldx )
355 CALL clarfg( n-i+1, alpha, a( i, min( i+1, n ) ), lda,
363 CALL cgemv(
'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 cgemv(
'Conjugate transpose', n-i+1, i-1, one,
366 $ y( i, 1 ), ldy, a( i, i ), lda, zero,
368 CALL cgemv(
'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 cgemv(
'No transpose', i-1, n-i+1, one, a( 1, i ),
371 $ lda, a( i, i ), lda, zero, x( 1, i ), 1 )
372 CALL cgemv(
'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 cscal( m-i, taup( i ), x( i+1, i ), 1 )
375 CALL clacgv( n-i+1, a( i, i ), lda )
379 CALL clacgv( i-1, y( i, 1 ), ldy )
380 CALL cgemv(
'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 clacgv( i-1, y( i, 1 ), ldy )
383 CALL cgemv(
'No transpose', m-i, i, -one, x( i+1, 1 ),
384 $ ldx, a( 1, i ), 1, one, a( i+1, i ), 1 )
389 CALL clarfg( m-i, alpha, a( min( i+2, m ), i ), 1,
396 CALL cgemv(
'Conjugate transpose', m-i, n-i, one,
397 $ a( i+1, i+1 ), lda, a( i+1, i ), 1, zero,
399 CALL cgemv(
'Conjugate transpose', m-i, i-1, one,
400 $ a( i+1, 1 ), lda, a( i+1, i ), 1, zero,
402 CALL cgemv(
'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 cgemv(
'Conjugate transpose', m-i, i, one,
405 $ x( i+1, 1 ), ldx, a( i+1, i ), 1, zero,
407 CALL cgemv(
'Conjugate transpose', i, n-i, -one,
408 $ a( 1, i+1 ), lda, y( 1, i ), 1, one,
410 CALL cscal( n-i, tauq( i ), y( i+1, i ), 1 )
412 CALL clacgv( n-i+1, a( i, i ), lda )
subroutine cscal(N, CA, CX, INCX)
CSCAL
subroutine cgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGEMV
subroutine clabrd(M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y, LDY)
CLABRD reduces the first nb rows and columns of a general matrix to a bidiagonal form.
subroutine clacgv(N, X, INCX)
CLACGV conjugates a complex vector.
subroutine clarfg(N, ALPHA, X, INCX, TAU)
CLARFG generates an elementary reflector (Householder matrix).