version 1.7, 2010/12/21 13:53:47
|
version 1.8, 2011/07/22 07:38:16
|
Line 1
|
Line 1
|
SUBROUTINE ZHPTRD( UPLO, N, AP, D, E, TAU, INFO ) |
SUBROUTINE ZHPTRD( UPLO, N, AP, D, E, TAU, INFO ) |
* |
* |
* -- LAPACK routine (version 3.2) -- |
* -- LAPACK routine (version 3.3.1) -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* November 2006 |
* -- April 2011 -- |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER UPLO |
CHARACTER UPLO |
Line 74
|
Line 74
|
* |
* |
* Each H(i) has the form |
* Each H(i) has the form |
* |
* |
* H(i) = I - tau * v * v' |
* H(i) = I - tau * v * v**H |
* |
* |
* where tau is a complex scalar, and v is a complex vector with |
* where tau is a complex scalar, and v is a complex vector with |
* v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in AP, |
* v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in AP, |
Line 87
|
Line 87
|
* |
* |
* Each H(i) has the form |
* Each H(i) has the form |
* |
* |
* H(i) = I - tau * v * v' |
* H(i) = I - tau * v * v**H |
* |
* |
* where tau is a complex scalar, and v is a complex vector with |
* where tau is a complex scalar, and v is a complex vector with |
* v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in AP, |
* v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in AP, |
Line 147
|
Line 147
|
AP( I1+N-1 ) = DBLE( AP( I1+N-1 ) ) |
AP( I1+N-1 ) = DBLE( AP( I1+N-1 ) ) |
DO 10 I = N - 1, 1, -1 |
DO 10 I = N - 1, 1, -1 |
* |
* |
* Generate elementary reflector H(i) = I - tau * v * v' |
* Generate elementary reflector H(i) = I - tau * v * v**H |
* to annihilate A(1:i-1,i+1) |
* to annihilate A(1:i-1,i+1) |
* |
* |
ALPHA = AP( I1+I-1 ) |
ALPHA = AP( I1+I-1 ) |
Line 165
|
Line 165
|
CALL ZHPMV( UPLO, I, TAUI, AP, AP( I1 ), 1, ZERO, TAU, |
CALL ZHPMV( UPLO, I, TAUI, AP, AP( I1 ), 1, ZERO, TAU, |
$ 1 ) |
$ 1 ) |
* |
* |
* Compute w := y - 1/2 * tau * (y'*v) * v |
* Compute w := y - 1/2 * tau * (y**H *v) * v |
* |
* |
ALPHA = -HALF*TAUI*ZDOTC( I, TAU, 1, AP( I1 ), 1 ) |
ALPHA = -HALF*TAUI*ZDOTC( I, TAU, 1, AP( I1 ), 1 ) |
CALL ZAXPY( I, ALPHA, AP( I1 ), 1, TAU, 1 ) |
CALL ZAXPY( I, ALPHA, AP( I1 ), 1, TAU, 1 ) |
* |
* |
* Apply the transformation as a rank-2 update: |
* Apply the transformation as a rank-2 update: |
* A := A - v * w' - w * v' |
* A := A - v * w**H - w * v**H |
* |
* |
CALL ZHPR2( UPLO, I, -ONE, AP( I1 ), 1, TAU, 1, AP ) |
CALL ZHPR2( UPLO, I, -ONE, AP( I1 ), 1, TAU, 1, AP ) |
* |
* |
Line 192
|
Line 192
|
DO 20 I = 1, N - 1 |
DO 20 I = 1, N - 1 |
I1I1 = II + N - I + 1 |
I1I1 = II + N - I + 1 |
* |
* |
* Generate elementary reflector H(i) = I - tau * v * v' |
* Generate elementary reflector H(i) = I - tau * v * v**H |
* to annihilate A(i+2:n,i) |
* to annihilate A(i+2:n,i) |
* |
* |
ALPHA = AP( II+1 ) |
ALPHA = AP( II+1 ) |
Line 210
|
Line 210
|
CALL ZHPMV( UPLO, N-I, TAUI, AP( I1I1 ), AP( II+1 ), 1, |
CALL ZHPMV( UPLO, N-I, TAUI, AP( I1I1 ), AP( II+1 ), 1, |
$ ZERO, TAU( I ), 1 ) |
$ ZERO, TAU( I ), 1 ) |
* |
* |
* Compute w := y - 1/2 * tau * (y'*v) * v |
* Compute w := y - 1/2 * tau * (y**H *v) * v |
* |
* |
ALPHA = -HALF*TAUI*ZDOTC( N-I, TAU( I ), 1, AP( II+1 ), |
ALPHA = -HALF*TAUI*ZDOTC( N-I, TAU( I ), 1, AP( II+1 ), |
$ 1 ) |
$ 1 ) |
CALL ZAXPY( N-I, ALPHA, AP( II+1 ), 1, TAU( I ), 1 ) |
CALL ZAXPY( N-I, ALPHA, AP( II+1 ), 1, TAU( I ), 1 ) |
* |
* |
* Apply the transformation as a rank-2 update: |
* Apply the transformation as a rank-2 update: |
* A := A - v * w' - w * v' |
* A := A - v * w**H - w * v**H |
* |
* |
CALL ZHPR2( UPLO, N-I, -ONE, AP( II+1 ), 1, TAU( I ), 1, |
CALL ZHPR2( UPLO, N-I, -ONE, AP( II+1 ), 1, TAU( I ), 1, |
$ AP( I1I1 ) ) |
$ AP( I1I1 ) ) |