=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/lib/weight,v retrieving revision 1.17 retrieving revision 1.36 diff -u -p -r1.17 -r1.36 --- OpenXM_contrib2/asir2000/lib/weight 2004/01/06 17:23:23 1.17 +++ OpenXM_contrib2/asir2000/lib/weight 2004/05/06 02:55:39 1.36 @@ -1,149 +1,243 @@ load("solve")$ load("gr")$ -def nonzerovec(A){ +#define EPS 1E-6 +#define TINY 1E-20 +#define MAX_ITER 100 - for(I=0;IB ? -1:0))$ + return 1; } -def worder(A,B){ - return (A[0]B[0] ? -1:0))$ -} +def jacobi(N,A,W){ -def bsort(A){ + S=OFFDIAG=0.0; - K=size(A)[0]-1$ - while(K>=0){ - J=-1$ - for(I=1;I<=K;I++) - if(A[I-1][0]=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 perm(I,P,TMP){ +def interval2value(A,Vars){ - if(I>0){ - TMP=perm(I-1,P,TMP)$ - for(J=I-1;J>=0;J--){ - T=P[I]$ - P[I]=P[J]$ - P[J]=T$ - TMP=perm(I-1,P,TMP)$ - T=P[I]$ - P[I]=P[J]$ - P[J]=T$ - } + B=atl(A)$ - return TMP$ + if(length(B)>2){ + print("bug")$ + return []$ } + else if(length(B)==0){ + if(fop(A)==0) + return [Vars,1]$ + else + return []$ + } + else if(length(B)==1){ + + C=fargs(B[0])$ + D=vars(C)$ + E=solve(C,D)$ + + if(fop(B[0])==15) + return [Vars,E[0][1]+1]$ + else if(fop(B[0])==11) + return [Vars,E[0][1]-1]$ + else if(fop(B[0])==8) + return [Vars,E[0][1]]$ + else + return []$ + } else{ - for(TMP0=[],K=0;K=1;I--){ + for(H=[],J=0;J 0$ } + else if (FLAG==1) + for(F=@true,I=0;I < N; I++ ) { F = F @&& A[I] @< 0$ } - RET=cons([TMP0,TMP1],RET)$ - } - - return RET$ - } + return fixpointmain(F,Vars)$ } -def derase(A){ +def junban(A,B){ + return (AB ? -1:0))$ +} - B=newvect(length(A),A)$ - B=qsort(B,junban)$ - C=[]$ - for(I=0;I=0){ + J=-1$ + for(I=1;I<=K;I++) + if(A[I-1][0]