210 SUBROUTINE clabrd( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y,
218 INTEGER LDA, LDX, LDY, M, N, NB
222 COMPLEX A( LDA, * ), TAUP( * ), TAUQ( * ), X( LDX, * ),
230 parameter( zero = ( 0.0e+0, 0.0e+0 ),
231 $ one = ( 1.0e+0, 0.0e+0 ) )
247 IF( m.LE.0 .OR. n.LE.0 )
258 CALL clacgv( i-1, y( i, 1 ), ldy )
259 CALL cgemv(
'No transpose', m-i+1, i-1, -one, a( i, 1 ),
260 $ lda, y( i, 1 ), ldy, one, a( i, i ), 1 )
261 CALL clacgv( i-1, y( i, 1 ), ldy )
262 CALL cgemv(
'No transpose', m-i+1, i-1, -one, x( i, 1 ),
263 $ ldx, a( 1, i ), 1, one, a( i, i ), 1 )
268 CALL clarfg( m-i+1, alpha, a( min( i+1, m ), i ), 1,
270 d( i ) = real( alpha )
276 CALL cgemv(
'Conjugate transpose', m-i+1, n-i, one,
277 $ a( i, i+1 ), lda, a( i, i ), 1, zero,
279 CALL cgemv(
'Conjugate transpose', m-i+1, i-1, one,
280 $ a( i, 1 ), lda, a( i, i ), 1, zero,
282 CALL cgemv(
'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 cgemv(
'Conjugate transpose', m-i+1, i-1, one,
285 $ x( i, 1 ), ldx, a( i, i ), 1, zero,
287 CALL cgemv(
'Conjugate transpose', i-1, n-i, -one,
288 $ a( 1, i+1 ), lda, y( 1, i ), 1, one,
290 CALL cscal( n-i, tauq( i ), y( i+1, i ), 1 )
294 CALL clacgv( n-i, a( i, i+1 ), lda )
295 CALL clacgv( i, a( i, 1 ), lda )
296 CALL cgemv(
'No transpose', n-i, i, -one, y( i+1, 1 ),
297 $ ldy, a( i, 1 ), lda, one, a( i, i+1 ), lda )
298 CALL clacgv( i, a( i, 1 ), lda )
299 CALL clacgv( i-1, x( i, 1 ), ldx )
300 CALL cgemv(
'Conjugate transpose', i-1, n-i, -one,
301 $ a( 1, i+1 ), lda, x( i, 1 ), ldx, one,
303 CALL clacgv( i-1, x( i, 1 ), ldx )
308 CALL clarfg( n-i, alpha, a( i, min( i+2, n ) ),
310 e( i ) = real( alpha )
315 CALL cgemv(
'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 cgemv(
'Conjugate transpose', n-i, i, one,
318 $ y( i+1, 1 ), ldy, a( i, i+1 ), lda, zero,
320 CALL cgemv(
'No transpose', m-i, i, -one, a( i+1, 1 ),
321 $ lda, x( 1, i ), 1, one, x( i+1, i ), 1 )
322 CALL cgemv(
'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 cgemv(
'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 cscal( m-i, taup( i ), x( i+1, i ), 1 )
327 CALL clacgv( n-i, a( i, i+1 ), lda )
338 CALL clacgv( n-i+1, a( i, i ), lda )
339 CALL clacgv( i-1, a( i, 1 ), lda )
340 CALL cgemv(
'No transpose', n-i+1, i-1, -one, y( i, 1 ),
341 $ ldy, a( i, 1 ), lda, one, a( i, i ), lda )
342 CALL clacgv( i-1, a( i, 1 ), lda )
343 CALL clacgv( i-1, x( i, 1 ), ldx )
344 CALL cgemv(
'Conjugate transpose', i-1, n-i+1, -one,
345 $ a( 1, i ), lda, x( i, 1 ), ldx, one, a( i, i ),
347 CALL clacgv( i-1, x( i, 1 ), ldx )
352 CALL clarfg( n-i+1, alpha, a( i, min( i+1, n ) ), lda,
354 d( i ) = real( alpha )
360 CALL cgemv(
'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 cgemv(
'Conjugate transpose', n-i+1, i-1, one,
363 $ y( i, 1 ), ldy, a( i, i ), lda, zero,
365 CALL cgemv(
'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 cgemv(
'No transpose', i-1, n-i+1, one, a( 1, i ),
368 $ lda, a( i, i ), lda, zero, x( 1, i ), 1 )
369 CALL cgemv(
'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 cscal( m-i, taup( i ), x( i+1, i ), 1 )
372 CALL clacgv( n-i+1, a( i, i ), lda )
376 CALL clacgv( i-1, y( i, 1 ), ldy )
377 CALL cgemv(
'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 clacgv( i-1, y( i, 1 ), ldy )
380 CALL cgemv(
'No transpose', m-i, i, -one, x( i+1, 1 ),
381 $ ldx, a( 1, i ), 1, one, a( i+1, i ), 1 )
386 CALL clarfg( m-i, alpha, a( min( i+2, m ), i ), 1,
388 e( i ) = real( alpha )
393 CALL cgemv(
'Conjugate transpose', m-i, n-i, one,
394 $ a( i+1, i+1 ), lda, a( i+1, i ), 1, zero,
396 CALL cgemv(
'Conjugate transpose', m-i, i-1, one,
397 $ a( i+1, 1 ), lda, a( i+1, i ), 1, zero,
399 CALL cgemv(
'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 cgemv(
'Conjugate transpose', m-i, i, one,
402 $ x( i+1, 1 ), ldx, a( i+1, i ), 1, zero,
404 CALL cgemv(
'Conjugate transpose', i, n-i, -one,
405 $ a( 1, i+1 ), lda, y( 1, i ), 1, one,
407 CALL cscal( n-i, tauq( i ), y( i+1, i ), 1 )
409 CALL clacgv( n-i+1, a( i, i ), lda )
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).
subroutine cscal(n, ca, cx, incx)
CSCAL