=================================================================== RCS file: /home/cvs/OpenXM/src/asir-contrib/testing/noro/Attic/new_pd.rr,v retrieving revision 1.1 retrieving revision 1.3 diff -u -p -r1.1 -r1.3 --- OpenXM/src/asir-contrib/testing/noro/Attic/new_pd.rr 2011/01/16 08:46:10 1.1 +++ OpenXM/src/asir-contrib/testing/noro/Attic/new_pd.rr 2011/01/19 04:52:03 1.3 @@ -6,10 +6,10 @@ static GBCheck,F4,EProcs,Procs,SatHomo,GBRat$ localf get_lc,tomonic$ localf para_exec,nd_gr_rat,competitive_exec,call_func$ localf call_ideal_list_intersection$ +localf call_colon,call_prime_dec$ localf first_second$ localf third$ localf locsat,iso_comp_para,extract_qj,colon_prime_dec,extract_comp$ -localf colon_prime_dec1$ localf separator$ localf member,mingen,compute_gbsyz,redcoef,recompute_trace3,dtop,topnum$ localf ideal_colon1$ @@ -284,6 +284,12 @@ T0 = time(); if ( First ) { PtR = prime_dec(G,V|indep=1,lexdec=Lexdec,mod=Mod,radical=1); Pt = PtR[0]; IntPt = PtR[1]; Rad = IntPt; + if ( gen_gb_comp(G,Rad,Mod) ) { + /* Gt is radical and Gt = cap Pt */ + for ( T = Pt, Qt = []; T != []; T = cdr(T) ) + Qt = cons([car(T)[0],car(T)[0],car(T)[1]],Qt); + return [reverse(Qt)]; + } } else Pt = colon_prime_dec(G,IntQ,V|lexdec=Lexdec,mod=Mod,para=Para); ACCUM_TIME(Tpd,RTpd) @@ -359,21 +365,40 @@ def colon_prime_dec(G,IntQ,V) { if ( type(Mod=getopt(mod)) == -1 ) Mod = 0; if ( type(Lexdec=getopt(lexdec)) == -1 ) Lexdec = 0; if ( type(Para=getopt(para)) == -1 ) Para = 0; + if ( !Para ) { + print("colon_pd:",2); print(length(IntQ),2); + } if ( !Mod ) M = mingen(IntQ,V); else M = IntQ; if ( Para ) { L = length(M); - for ( Task = [], J = 0, RI = []; J < L; J++ ) + for ( Task = [], J = 0; J < L; J++ ) if ( gen_nf(M[J],G,V,Ord,Mod) ) { - T = ["noro_pd.colon_prime_dec1",G,M[J],Mod,V]; + T = ["noro_pd.call_colon",G,M[J],V,Mod,1]; Task = cons(T,Task); } Task = reverse(Task); R = para_exec(Para,Task); + R = pd_simp_comp(R,V|mod=Mod); L = length(R); + + for ( Task = [], J = 0; J < L; J++ ) { + T = ["noro_pd.call_prime_dec",R[J],V,1,Lexdec,Mod]; + Task = cons(T,Task); + } + Task = reverse(Task); + R = para_exec(Para,Task); + for ( Pt = [], T = R; T != []; T = cdr(T) ) Pt = append(Pt,car(T)); } else { - for ( Pt = [], T = M; T != []; T = cdr(T) ) { - Pi = colon_prime_dec1(G,car(T),Mod,V); + for ( R = [], T = M; T != []; T = cdr(T) ) { + Ci = colon(G,car(T),V|isgb=1,mod=Mod); + R = cons(Ci,R); + } + print("->",2); print(length(M),2); + R = pd_simp_comp(R,V|mod=Mod); + print("->",2); print(length(R)); + for ( Pt = [], T = R; T != []; T = cdr(T) ) { + Pi = prime_dec(car(T),V|indep=1,lexdec=Lexdec,mod=Mod); Pt = append(Pt,Pi); } } @@ -381,11 +406,15 @@ def colon_prime_dec(G,IntQ,V) { return Pt; } -def colon_prime_dec1(G,F,Mod,V) +def call_colon(G,F,V,Mod,IsGB) { - Ci = colon(G,F,V|isgb=1,mod=Mod); - if ( type(Ci[0]) != 1 ) - Pi = prime_dec(Ci,V|indep=1,lexdec=Lexdec,mod=Mod); + return colon(G,F,V|isgb=1,mod=Mod); +} + +def call_prime_dec(G,V,Indep,Lexdec,Mod) +{ + if ( type(G[0]) != 1 ) + Pi = prime_dec(G,V|indep=Indep,lexdec=Lexdec,mod=Mod); else Pi = []; return Pi; @@ -1458,7 +1487,7 @@ def elim_gb(G,V,PV,Mod,Ord) return G1; } else #if 1 -#if 1 +#if 0 G = dp_gr_main(G,V,0,0,Ord); #else G = nd_gr_trace(G,V,1,1,Ord); @@ -1656,20 +1685,29 @@ def ideal_list_intersection(L,V,Ord) N = length(L); if ( N == 0 ) return [1]; if ( N == 1 ) return fast_gb(L[0],V,Mod,Ord); - N2 = idiv(N,2); - for ( L1 = [], I = 0; I < N2; I++ ) L1 = cons(L[I],L1); - for ( L2 = []; I < N; I++ ) L2 = cons(L[I],L2); - if ( length(Para) >= 2 ) { - T1 = ["noro_pd.call_ideal_list_intersection",L1,V,Mod,Ord]; - T2 = ["noro_pd.call_ideal_list_intersection",L2,V,Mod,Ord]; - R = para_exec(Para,[T1,T2]); - I1 = R[0]; I2 = R[1]; + if ( N > 2 && (Len = length(Para)) >= 2 ) { + Div = N >= 2*Len ? Len : 2; + QR = iqr(N,Div); Q = QR[0]; R = QR[1]; + T = []; K = 0; + for ( I = 0; I < Div; I++ ) { + LenI = I