208 SUBROUTINE clabrd( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX,
217 INTEGER LDA, LDX, LDY, M, N, NB
221 COMPLEX A( LDA, * ), TAUP( * ), TAUQ( * ), X( LDX, * ),
229 PARAMETER ( ZERO = ( 0.0e+0, 0.0e+0 ),
230 $ one = ( 1.0e+0, 0.0e+0 ) )
246 IF( m.LE.0 .OR. n.LE.0 )
257 CALL clacgv( i-1, y( i, 1 ), ldy )
258 CALL cgemv(
'No transpose', m-i+1, i-1, -one, a( i, 1 ),
259 $ lda, y( i, 1 ), ldy, one, a( i, i ), 1 )
260 CALL clacgv( i-1, y( i, 1 ), ldy )
261 CALL cgemv(
'No transpose', m-i+1, i-1, -one, x( i, 1 ),
262 $ ldx, a( 1, i ), 1, one, a( i, i ), 1 )
267 CALL clarfg( m-i+1, alpha, a( min( i+1, m ), i ), 1,
269 d( i ) = real( alpha )
275 CALL cgemv(
'Conjugate transpose', m-i+1, n-i, one,
276 $ a( i, i+1 ), lda, a( i, i ), 1, zero,
278 CALL cgemv(
'Conjugate transpose', m-i+1, i-1, one,
279 $ a( i, 1 ), lda, a( i, i ), 1, zero,
281 CALL cgemv(
'No transpose', n-i, i-1, -one, y( i+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,
317 $ lda, a( i, i+1 ), lda, zero, x( i+1, i ), 1 )
318 CALL cgemv(
'Conjugate transpose', n-i, i, one,
319 $ y( i+1, 1 ), ldy, a( i, i+1 ), lda, zero,
321 CALL cgemv(
'No transpose', m-i, i, -one, a( i+1, 1 ),
322 $ lda, x( 1, i ), 1, one, x( i+1, i ), 1 )
323 CALL cgemv(
'No transpose', i-1, n-i, one, a( 1,
325 $ lda, a( i, i+1 ), lda, zero, x( 1, i ), 1 )
326 CALL cgemv(
'No transpose', m-i, i-1, -one, x( i+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,
357 d( i ) = real( alpha )
363 CALL cgemv(
'No transpose', m-i, n-i+1, one, a( i+1,
365 $ lda, a( i, i ), lda, zero, x( i+1, i ), 1 )
366 CALL cgemv(
'Conjugate transpose', n-i+1, i-1, one,
367 $ y( i, 1 ), ldy, a( i, i ), lda, zero,
369 CALL cgemv(
'No transpose', m-i, i-1, -one, a( i+1,
371 $ lda, x( 1, i ), 1, one, x( i+1, i ), 1 )
372 CALL cgemv(
'No transpose', i-1, n-i+1, one, a( 1,
374 $ lda, a( i, i ), lda, zero, x( 1, i ), 1 )
375 CALL cgemv(
'No transpose', m-i, i-1, -one, x( i+1,
377 $ ldx, x( 1, i ), 1, one, x( i+1, i ), 1 )
378 CALL cscal( m-i, taup( i ), x( i+1, i ), 1 )
379 CALL clacgv( n-i+1, a( i, i ), lda )
383 CALL clacgv( i-1, y( i, 1 ), ldy )
384 CALL cgemv(
'No transpose', m-i, i-1, -one, a( i+1,
386 $ lda, y( i, 1 ), ldy, one, a( i+1, i ), 1 )
387 CALL clacgv( i-1, y( i, 1 ), ldy )
388 CALL cgemv(
'No transpose', m-i, i, -one, x( i+1, 1 ),
389 $ ldx, a( 1, i ), 1, one, a( i+1, i ), 1 )
394 CALL clarfg( m-i, alpha, a( min( i+2, m ), i ), 1,
396 e( i ) = real( alpha )
401 CALL cgemv(
'Conjugate transpose', m-i, n-i, one,
402 $ a( i+1, i+1 ), lda, a( i+1, i ), 1, zero,
404 CALL cgemv(
'Conjugate transpose', m-i, i-1, one,
405 $ a( i+1, 1 ), lda, a( i+1, i ), 1, zero,
407 CALL cgemv(
'No transpose', n-i, i-1, -one, y( i+1,
409 $ ldy, y( 1, i ), 1, one, y( i+1, i ), 1 )
410 CALL cgemv(
'Conjugate transpose', m-i, i, one,
411 $ x( i+1, 1 ), ldx, a( i+1, i ), 1, zero,
413 CALL cgemv(
'Conjugate transpose', i, n-i, -one,
414 $ a( 1, i+1 ), lda, y( 1, i ), 1, one,
416 CALL cscal( n-i, tauq( i ), y( i+1, i ), 1 )
418 CALL clacgv( n-i+1, a( i, i ), lda )