|
! |
|
|
! $Header: /home/cvsroot/LMDZ4/libf/filtrez/eigen_sort.F,v 1.1.1.1 2004/05/19 12:53:09 lmdzadmin Exp $ |
|
|
! |
|
|
SUBROUTINE eigen_sort(d,v,n,np) |
|
|
INTEGER n,np |
|
|
REAL d(np),v(np,np) |
|
|
INTEGER i,j,k |
|
|
REAL p |
|
1 |
|
|
2 |
DO i=1,n-1 |
! $Header: /home/cvsroot/LMDZ4/libf/filtrez/eigen_sort.F,v 1.1.1.1 2004/05/19 |
3 |
k=i |
! 12:53:09 lmdzadmin Exp $ |
|
p=d(i) |
|
|
DO j=i+1,n |
|
|
IF(d(j).ge.p) THEN |
|
|
k=j |
|
|
p=d(j) |
|
|
ENDIF |
|
|
ENDDO |
|
|
|
|
|
IF(k.ne.i) THEN |
|
|
d(k)=d(i) |
|
|
d(i)=p |
|
|
DO j=1,n |
|
|
p=v(j,i) |
|
|
v(j,i)=v(j,k) |
|
|
v(j,k)=p |
|
|
ENDDO |
|
|
ENDIF |
|
|
ENDDO |
|
4 |
|
|
5 |
RETURN |
SUBROUTINE eigen_sort(d, v, n, np) |
6 |
END |
INTEGER n, np |
7 |
|
REAL d(np), v(np, np) |
8 |
|
INTEGER i, j, k |
9 |
|
REAL p |
10 |
|
|
11 |
|
DO i = 1, n - 1 |
12 |
|
k = i |
13 |
|
p = d(i) |
14 |
|
DO j = i + 1, n |
15 |
|
IF (d(j)>=p) THEN |
16 |
|
k = j |
17 |
|
p = d(j) |
18 |
|
END IF |
19 |
|
END DO |
20 |
|
|
21 |
|
IF (k/=i) THEN |
22 |
|
d(k) = d(i) |
23 |
|
d(i) = p |
24 |
|
DO j = 1, n |
25 |
|
p = v(j, i) |
26 |
|
v(j, i) = v(j, k) |
27 |
|
v(j, k) = p |
28 |
|
END DO |
29 |
|
END IF |
30 |
|
END DO |
31 |
|
|
32 |
|
RETURN |
33 |
|
END SUBROUTINE eigen_sort |