version 1.15, 2018/05/29 07:18:19
|
version 1.16, 2023/08/07 08:39:23
|
Line 117
|
Line 117
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date April 2012 |
|
* |
|
*> \ingroup complex16HEcomputational |
*> \ingroup complex16HEcomputational |
* |
* |
*> \par References: |
*> \par References: |
Line 132
|
Line 130
|
* ===================================================================== |
* ===================================================================== |
SUBROUTINE ZHEEQUB( UPLO, N, A, LDA, S, SCOND, AMAX, WORK, INFO ) |
SUBROUTINE ZHEEQUB( UPLO, N, A, LDA, S, SCOND, AMAX, WORK, INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.8.0) -- |
* -- LAPACK computational routine -- |
* -- 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..-- |
* April 2012 |
|
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
INTEGER INFO, LDA, N |
INTEGER INFO, LDA, N |
Line 266
|
Line 263
|
* avg = s^T beta / n |
* avg = s^T beta / n |
AVG = 0.0D0 |
AVG = 0.0D0 |
DO I = 1, N |
DO I = 1, N |
AVG = AVG + S( I )*WORK( I ) |
AVG = AVG + DBLE( S( I )*WORK( I ) ) |
END DO |
END DO |
AVG = AVG / N |
AVG = AVG / N |
|
|
STD = 0.0D0 |
STD = 0.0D0 |
DO I = N+1, N |
DO I = N+1, 2*N |
WORK( I ) = S( I-N ) * WORK( I-N ) - AVG |
WORK( I ) = S( I-N ) * WORK( I-N ) - AVG |
END DO |
END DO |
CALL ZLASSQ( N, WORK( N+1 ), 1, SCALE, SUMSQ ) |
CALL ZLASSQ( N, WORK( N+1 ), 1, SCALE, SUMSQ ) |
Line 283
|
Line 280
|
T = CABS1( A( I, I ) ) |
T = CABS1( A( I, I ) ) |
SI = S( I ) |
SI = S( I ) |
C2 = ( N-1 ) * T |
C2 = ( N-1 ) * T |
C1 = ( N-2 ) * ( WORK( I ) - T*SI ) |
C1 = ( N-2 ) * ( DBLE( WORK( I ) ) - T*SI ) |
C0 = -(T*SI)*SI + 2*WORK( I )*SI - N*AVG |
C0 = -(T*SI)*SI + 2 * DBLE( WORK( I ) ) * SI - N*AVG |
D = C1*C1 - 4*C0*C2 |
D = C1*C1 - 4*C0*C2 |
|
|
IF ( D .LE. 0 ) THEN |
IF ( D .LE. 0 ) THEN |
Line 319
|
Line 316
|
END DO |
END DO |
END IF |
END IF |
|
|
AVG = AVG + ( U + WORK( I ) ) * D / N |
AVG = AVG + ( U + DBLE( WORK( I ) ) ) * D / N |
S( I ) = SI |
S( I ) = SI |
END DO |
END DO |
END DO |
END DO |