diff --git a/SRC/dstedc.f b/SRC/dstedc.f index 02c3719fb..30d6cd759 100644 --- a/SRC/dstedc.f +++ b/SRC/dstedc.f @@ -212,7 +212,6 @@ SUBROUTINE DSTEDC( COMPZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, * .. * .. External Subroutines .. EXTERNAL DGEMM, DLACPY, DLAED0, DLASCL, DLASET, - $ DLASRT, $ DSTEQR, DSTERF, DSWAP, XERBLA * .. * .. Intrinsic Functions .. @@ -437,33 +436,25 @@ SUBROUTINE DSTEDC( COMPZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, * * endwhile * - IF( ICOMPZ.EQ.0 ) THEN * -* Use Quick Sort +* Use Selection Sort to minimize swaps of eigenvectors * - CALL DLASRT( 'I', N, D, INFO ) -* - ELSE -* -* Use Selection Sort to minimize swaps of eigenvectors -* - DO 40 II = 2, N - I = II - 1 - K = I - P = D( I ) - DO 30 J = II, N - IF( D( J ).LT.P ) THEN - K = J - P = D( J ) - END IF + DO 40 II = 2, N + I = II - 1 + K = I + P = D( I ) + DO 30 J = II, N + IF( D( J ).LT.P ) THEN + K = J + P = D( J ) + END IF 30 CONTINUE - IF( K.NE.I ) THEN - D( K ) = D( I ) - D( I ) = P - CALL DSWAP( N, Z( 1, I ), 1, Z( 1, K ), 1 ) - END IF + IF( K.NE.I ) THEN + D( K ) = D( I ) + D( I ) = P + CALL DSWAP( N, Z( 1, I ), 1, Z( 1, K ), 1 ) + END IF 40 CONTINUE - END IF END IF * 50 CONTINUE diff --git a/SRC/sstedc.f b/SRC/sstedc.f index 140a51a88..9e6f34c52 100644 --- a/SRC/sstedc.f +++ b/SRC/sstedc.f @@ -213,7 +213,6 @@ SUBROUTINE SSTEDC( COMPZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, * .. * .. External Subroutines .. EXTERNAL SGEMM, SLACPY, SLAED0, SLASCL, SLASET, - $ SLASRT, $ SSTEQR, SSTERF, SSWAP, XERBLA * .. * .. Intrinsic Functions .. @@ -438,33 +437,25 @@ SUBROUTINE SSTEDC( COMPZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, * * endwhile * - IF( ICOMPZ.EQ.0 ) THEN * -* Use Quick Sort +* Use Selection Sort to minimize swaps of eigenvectors * - CALL SLASRT( 'I', N, D, INFO ) -* - ELSE -* -* Use Selection Sort to minimize swaps of eigenvectors -* - DO 40 II = 2, N - I = II - 1 - K = I - P = D( I ) - DO 30 J = II, N - IF( D( J ).LT.P ) THEN - K = J - P = D( J ) - END IF + DO 40 II = 2, N + I = II - 1 + K = I + P = D( I ) + DO 30 J = II, N + IF( D( J ).LT.P ) THEN + K = J + P = D( J ) + END IF 30 CONTINUE - IF( K.NE.I ) THEN - D( K ) = D( I ) - D( I ) = P - CALL SSWAP( N, Z( 1, I ), 1, Z( 1, K ), 1 ) - END IF + IF( K.NE.I ) THEN + D( K ) = D( I ) + D( I ) = P + CALL SSWAP( N, Z( 1, I ), 1, Z( 1, K ), 1 ) + END IF 40 CONTINUE - END IF END IF * 50 CONTINUE