version 1.13, 2012/12/14 12:30:25
|
version 1.15, 2014/01/27 09:24:34
|
Line 140
|
Line 140
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date September 2012 |
*> \date November 2013 |
* |
* |
*> \ingroup auxOTHERauxiliary |
*> \ingroup auxOTHERauxiliary |
* |
* |
Line 153
|
Line 153
|
* ===================================================================== |
* ===================================================================== |
SUBROUTINE DLASD4( N, I, D, Z, DELTA, RHO, SIGMA, WORK, INFO ) |
SUBROUTINE DLASD4( N, I, D, Z, DELTA, RHO, SIGMA, WORK, INFO ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.4.2) -- |
* -- LAPACK auxiliary routine (version 3.5.0) -- |
* -- 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..-- |
* September 2012 |
* November 2013 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
INTEGER I, INFO, N |
INTEGER I, INFO, N |
Line 223
|
Line 223
|
* |
* |
EPS = DLAMCH( 'Epsilon' ) |
EPS = DLAMCH( 'Epsilon' ) |
RHOINV = ONE / RHO |
RHOINV = ONE / RHO |
|
TAU2= ZERO |
* |
* |
* The case I = N |
* The case I = N |
* |
* |
Line 275
|
Line 276
|
ELSE |
ELSE |
TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C ) |
TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C ) |
END IF |
END IF |
|
TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) |
END IF |
END IF |
* |
* |
* It can be proved that |
* It can be proved that |
Line 293
|
Line 295
|
ELSE |
ELSE |
TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C ) |
TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C ) |
END IF |
END IF |
|
TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) |
|
|
* |
* |
* It can be proved that |
* It can be proved that |
* D(N)^2 < D(N)^2+TAU2 < SIGMA(N)^2 < D(N)^2+RHO/2 |
* D(N)^2 < D(N)^2+TAU2 < SIGMA(N)^2 < D(N)^2+RHO/2 |
Line 301
|
Line 305
|
* |
* |
* The following TAU is to approximate SIGMA_n - D( N ) |
* The following TAU is to approximate SIGMA_n - D( N ) |
* |
* |
TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) |
* TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) |
* |
* |
SIGMA = D( N ) + TAU |
SIGMA = D( N ) + TAU |
DO 30 J = 1, N |
DO 30 J = 1, N |