153 INTEGER M, NB, J1, LDA, LDH
157 COMPLEX A( LDA, * ), H( LDH, * ), WORK( * )
163 parameter( zero = (0.0e+0, 0.0e+0), one = (1.0e+0, 0.0e+0) )
172 EXTERNAL lsame, ilaenv,
icamax
179 INTRINSIC real, conjg,
max
190 IF( lsame( uplo,
'U' ) )
THEN
197 IF ( j.GT.
min(m, nb) )
226 CALL clacgv( j-k1, a( 1, j ), 1 )
227 CALL cgemv( 'no transpose
', MJ, J-K1,
228 $ -ONE, H( J, K1 ), LDH,
230 $ ONE, H( J, J ), 1 )
231 CALL CLACGV( J-K1, A( 1, J ), 1 )
236 CALL CCOPY( MJ, H( J, J ), 1, WORK( 1 ), 1 )
243 ALPHA = -CONJG( A( K-1, J ) )
244 CALL CAXPY( MJ, ALPHA, A( K-2, J ), LDA, WORK( 1 ), 1 )
249 A( K, J ) = REAL( WORK( 1 ) )
258 CALL CAXPY( M-J, ALPHA, A( K-1, J+1 ), LDA,
264 I2 = ICAMAX( M-J, WORK( 2 ), 1 ) + 1
269.NE..AND..NE.
IF( (I22) (PIV0) ) THEN
274 WORK( I2 ) = WORK( I1 )
281 CALL CSWAP( I2-I1-1, A( J1+I1-1, I1+1 ), LDA,
282 $ A( J1+I1, I2 ), 1 )
283 CALL CLACGV( I2-I1, A( J1+I1-1, I1+1 ), LDA )
284 CALL CLACGV( I2-I1-1, A( J1+I1, I2 ), 1 )
289 $ CALL CSWAP( M-I2, A( J1+I1-1, I2+1 ), LDA,
290 $ A( J1+I2-1, I2+1 ), LDA )
294 PIV = A( I1+J1-1, I1 )
295 A( J1+I1-1, I1 ) = A( J1+I2-1, I2 )
296 A( J1+I2-1, I2 ) = PIV
300 CALL CSWAP( I1-1, H( I1, 1 ), LDH, H( I2, 1 ), LDH )
303.GT.
IF( I1(K1-1) ) THEN
308 CALL CSWAP( I1-K1+1, A( 1, I1 ), 1,
317 A( K, J+1 ) = WORK( 2 )
323 CALL CCOPY( M-J, A( K+1, J+1 ), LDA,
330.LT.
IF( J(M-1) ) THEN
331.NE.
IF( A( K, J+1 )ZERO ) THEN
332 ALPHA = ONE / A( K, J+1 )
333 CALL CCOPY( M-J-1, WORK( 3 ), 1, A( K, J+2 ), LDA )
334 CALL CSCAL( M-J-1, ALPHA, A( K, J+2 ), LDA )
336 CALL CLASET( 'full
', 1, M-J-1, ZERO, ZERO,
352.GT.
IF( JMIN( M, NB ) )
381 CALL CLACGV( J-K1, A( J, 1 ), LDA )
382 CALL CGEMV( 'no transpose
', MJ, J-K1,
383 $ -ONE, H( J, K1 ), LDH,
385 $ ONE, H( J, J ), 1 )
386 CALL CLACGV( J-K1, A( J, 1 ), LDA )
391 CALL CCOPY( MJ, H( J, J ), 1, WORK( 1 ), 1 )
398 ALPHA = -CONJG( A( J, K-1 ) )
399 CALL CAXPY( MJ, ALPHA, A( J, K-2 ), 1, WORK( 1 ), 1 )
404 A( J, K ) = REAL( WORK( 1 ) )
413 CALL CAXPY( M-J, ALPHA, A( J+1, K-1 ), 1,
419 I2 = ICAMAX( M-J, WORK( 2 ), 1 ) + 1
424.NE..AND..NE.
IF( (I22) (PIV0) ) THEN
429 WORK( I2 ) = WORK( I1 )
436 CALL CSWAP( I2-I1-1, A( I1+1, J1+I1-1 ), 1,
437 $ A( I2, J1+I1 ), LDA )
438 CALL CLACGV( I2-I1, A( I1+1, J1+I1-1 ), 1 )
439 CALL CLACGV( I2-I1-1, A( I2, J1+I1 ), LDA )
444 $ CALL CSWAP( M-I2, A( I2+1, J1+I1-1 ), 1,
445 $ A( I2+1, J1+I2-1 ), 1 )
449 PIV = A( I1, J1+I1-1 )
450 A( I1, J1+I1-1 ) = A( I2, J1+I2-1 )
451 A( I2, J1+I2-1 ) = PIV
455 CALL CSWAP( I1-1, H( I1, 1 ), LDH, H( I2, 1 ), LDH )
458.GT.
IF( I1(K1-1) ) THEN
463 CALL CSWAP( I1-K1+1, A( I1, 1 ), LDA,
472 A( J+1, K ) = WORK( 2 )
478 CALL CCOPY( M-J, A( J+1, K+1 ), 1,
485.LT.
IF( J(M-1) ) THEN
486.NE.
IF( A( J+1, K )ZERO ) THEN
487 ALPHA = ONE / A( J+1, K )
488 CALL CCOPY( M-J-1, WORK( 3 ), 1, A( J+2, K ), 1 )
489 CALL CSCAL( M-J-1, ALPHA, A( J+2, K ), 1 )
491 CALL CLASET( 'full
', M-J-1, 1, ZERO, ZERO,
subroutine xerbla(srname, info)
XERBLA
integer function icamax(n, cx, incx)
ICAMAX
subroutine clacgv(n, x, incx)
CLACGV conjugates a complex vector.
subroutine claset(uplo, m, n, alpha, beta, a, lda)
CLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine clahef_aa(uplo, j1, m, nb, a, lda, ipiv, h, ldh, work)
CLAHEF_AA
subroutine caxpy(n, ca, cx, incx, cy, incy)
CAXPY
subroutine cswap(n, cx, incx, cy, incy)
CSWAP
subroutine ccopy(n, cx, incx, cy, incy)
CCOPY
subroutine cscal(n, ca, cx, incx)
CSCAL
subroutine cgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
CGEMV