version 1.12, 2014/01/27 09:28:27
|
version 1.14, 2016/08/27 15:34:38
|
Line 1
|
Line 1
|
*> \brief \b DSTEBZ |
*> \brief \b DSTEDC |
* |
* |
* =========== DOCUMENTATION =========== |
* =========== DOCUMENTATION =========== |
* |
* |
Line 174
|
Line 174
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date November 2011 |
*> \date November 2015 |
* |
* |
*> \ingroup auxOTHERcomputational |
*> \ingroup auxOTHERcomputational |
* |
* |
Line 189
|
Line 189
|
SUBROUTINE DSTEDC( COMPZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, |
SUBROUTINE DSTEDC( COMPZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, |
$ LIWORK, INFO ) |
$ LIWORK, INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.4.0) -- |
* -- LAPACK computational routine (version 3.6.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..-- |
* November 2011 |
* November 2015 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER COMPZ |
CHARACTER COMPZ |
Line 443
|
Line 443
|
* |
* |
* endwhile |
* endwhile |
* |
* |
* If the problem split any number of times, then the eigenvalues |
IF( ICOMPZ.EQ.0 ) THEN |
* will not be properly ordered. Here we permute the eigenvalues |
|
* (and the associated eigenvectors) into ascending order. |
|
* |
* |
IF( M.NE.N ) THEN |
* Use Quick Sort |
IF( ICOMPZ.EQ.0 ) THEN |
|
* |
* |
* Use Quick Sort |
CALL DLASRT( 'I', N, D, INFO ) |
* |
* |
CALL DLASRT( 'I', N, D, INFO ) |
ELSE |
* |
|
ELSE |
|
* |
* |
* Use Selection Sort to minimize swaps of eigenvectors |
* Use Selection Sort to minimize swaps of eigenvectors |
* |
* |
DO 40 II = 2, N |
DO 40 II = 2, N |
I = II - 1 |
I = II - 1 |
K = I |
K = I |
P = D( I ) |
P = D( I ) |
DO 30 J = II, N |
DO 30 J = II, N |
IF( D( J ).LT.P ) THEN |
IF( D( J ).LT.P ) THEN |
K = J |
K = J |
P = D( J ) |
P = D( J ) |
END IF |
END IF |
30 CONTINUE |
30 CONTINUE |
IF( K.NE.I ) THEN |
IF( K.NE.I ) THEN |
D( K ) = D( I ) |
D( K ) = D( I ) |
D( I ) = P |
D( I ) = P |
CALL DSWAP( N, Z( 1, I ), 1, Z( 1, K ), 1 ) |
CALL DSWAP( N, Z( 1, I ), 1, Z( 1, K ), 1 ) |
END IF |
END IF |
40 CONTINUE |
40 CONTINUE |
END IF |
|
END IF |
END IF |
END IF |
END IF |
* |
* |