=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/lib/weight,v retrieving revision 1.17 retrieving revision 1.18 diff -u -p -r1.17 -r1.18 --- OpenXM_contrib2/asir2000/lib/weight 2004/01/06 17:23:23 1.17 +++ OpenXM_contrib2/asir2000/lib/weight 2004/01/07 06:33:31 1.18 @@ -1,6 +1,116 @@ load("solve")$ load("gr")$ +#define EPS 1E-6 +#define TINY 1E-20 +#define MAX_ITER 100 + +def rotate(A,I,J,K,L,C,S){ + + X=A[I][J]; + Y=A[K][L]; + A[I][J]=X*C-Y*S; + A[K][L]=X*S+Y*C; + + return 1; +} + +def jacobi(N,A,W){ + + S=OFFDIAG=0.0; + + for(J=0;J=0.0) + T=1.0/(T+dsqrt(T*T+1)); + else + T=1.0/(T-dsqrt(T*T+1)); + + C=1.0/dsqrt(T*T+1); + + S=T*C; + + T*=A[J][K]; + + A[J][J]-=T; + A[K][K]+=T; + A[J][K]=0.0; + + for(I=0;I MAX_ITER) + return 0; + + for(I=0;IT){ + K=J; + T=A[K][K]; + } + + A[K][K]=A[I][I]; + + A[I][I]=T; + + V=W[K]; + + W[K]=W[I]; + + W[I]=V; + } + + return 1; +} + def nonzerovec(A){ for(I=0;I