Changeset dbf609 in git
- Timestamp:
- Feb 5, 2015, 3:13:02 PM (9 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- 4052dce8271d3f66d409017a24c00744665f670a
- Parents:
- 7023cea48460891d8d8145b55190cccabdc8074170bc378d051d27d991eb0d71f4a460fa0f1007b1
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
.gdbinit
r7023ce rdbf609 1 1 break dErrorBreak 2 2 3 #break omReportError # use in case of problems with omaloc 4 #break dPolyReportError # use in case of problems with polynomial arithmetic 5 3 6 4 7 -
Singular/LIB/dmod.lib
r7023ce rdbf609 6311 6311 vector V = M2[1]; 6312 6312 number bcand = leadcoef(V[1]); // 1st component 6313 V [1]=0;6313 V=V-V[1]; 6314 6314 number ct = content(V); // content of the cofactors 6315 6315 poly CF = ct*V[ncols(J)]; // polynomial in K[s]<x,dx>, cofactor to F -
Singular/LIB/general.lib
r7023ce rdbf609 682 682 " 683 683 { int ii,jj,s,n = 0,0,1,0; 684 string id_typ=typeof(id); 685 if ((id_typ!="ideal") 686 and (id_typ!="module") 687 and (id_typ!="matrix") 688 and (id_typ!="list") 689 and (id_typ!="intvec")) { return (id,0); } 684 690 intvec v; 685 691 if ( defined(basering) ) { def P = basering; } -
Singular/LIB/gmssing.lib
r7023ce rdbf609 932 932 module U,U0,U1,U2; 933 933 matrix N; 934 s=0;935 934 for(i=size(F);i>=1;i--) 936 935 { -
Singular/LIB/grobcov.lib
r7023ce rdbf609 85 85 @* grobcov, cgsdr, 86 86 @* generate the global rings 87 @* @R (Q[a][x]),88 @* @P (Q[a]),89 @* @RP (Q[x,a])87 @* Grobcov::@R (Q[a][x]), 88 @* Grobcov::@P (Q[a]), 89 @* Grobcov::@RP (Q[x,a]) 90 90 @* that are used inside and killed before the output. 91 91 @* If you want to use some internal routine you must -
Singular/LIB/grwalk.lib
r70bc37 rdbf609 255 255 } 256 256 257 proc gwalk(ideal Go, list #)258 "SYNTAX: gwalk(ideal i );259 gwalk(ideal i, int vec v, intvec w);257 proc gwalk(ideal Go, int reduction,int printout, list #) 258 "SYNTAX: gwalk(ideal i, int reduction, int printout); 259 gwalk(ideal i, int reduction, int printout, intvec v, intvec w); 260 260 TYPE: ideal 261 261 PURPOSE: compute the standard basis of the ideal, calculated via … … 284 284 //print("//** help ring = " + string(basering)); 285 285 ideal G = fetch(xR, Go); 286 G = system("Mwalk", G, curr_weight, target_weight,basering );286 G = system("Mwalk", G, curr_weight, target_weight,basering,reduction,printout); 287 287 288 288 setring xR; … … 300 300 ring r = 32003,(z,y,x), lp; 301 301 ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z; 302 gwalk(I );302 gwalk(I,0,1); 303 303 } 304 304 … … 346 346 } 347 347 348 proc fwalk(ideal Go, list #)349 "SYNTAX: fwalk(ideal i );350 fwalk(ideal i, int vec v, intvec w);348 proc fwalk(ideal Go, int reduction, int printout, list #) 349 "SYNTAX: fwalk(ideal i,int reductioin); 350 fwalk(ideal i, int reduction intvec v, intvec w); 351 351 TYPE: ideal 352 352 PURPOSE: compute the standard basis of the ideal w.r.t. the … … 372 372 373 373 ideal G = fetch(xR, Go); 374 G = system("Mfwalk", G, curr_weight, target_weight );374 G = system("Mfwalk", G, curr_weight, target_weight, reduction, printout); 375 375 376 376 setring xR; … … 387 387 ring r = 32003,(z,y,x), lp; 388 388 ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z; 389 fwalk(I); 389 int reduction = 1; 390 int printout = 1; 391 fwalk(I,reduction,printout); 390 392 } 391 393 … … 437 439 } 438 440 439 proc pwalk(ideal Go, int n1, int n2, list #)440 "SYNTAX: pwalk(int d, ideal i, int n1, int n2 );441 pwalk(int d, ideal i, int n1, int n2, int vec v, intvec w);441 proc pwalk(ideal Go, int n1, int n2, int reduction, int printout, list #) 442 "SYNTAX: pwalk(int d, ideal i, int n1, int n2, int reduction, int printout); 443 pwalk(int d, ideal i, int n1, int n2, int reduction, int printout, intvec v, intvec w); 442 444 TYPE: ideal 443 445 PURPOSE: compute the standard basis of the ideal, calculated via … … 477 479 ideal G = fetch(xR, Go); 478 480 481 <<<<<<< HEAD 482 G = system("Mpwalk",G,n1,n2,curr_weight,target_weight,nP,reduction,printout); 483 484 ======= 479 485 G = system("Mpwalk", G, n1, n2, curr_weight, target_weight,nP); 480 486 487 >>>>>>> f533f6f7667328bccb271b19b2f603aaebe41596 481 488 setring xR; 482 489 //kill Go; … … 492 499 ring r = 32003,(z,y,x), lp; 493 500 ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z; 494 //I = std(I); 495 //ring rr = 32003,(z,y,x),lp; 496 //ideal I = fetch(r,I); 497 pwalk(I,2,2); 501 int reduction = 1; 502 int printout = 2; 503 pwalk(I,2,2,reduction,printout); 498 504 } 499 505 -
Singular/LIB/modwalk.lib
-
Property
mode
changed from
100644
to100755
r70bc37 rdbf609 16 16 17 17 PROCEDURES: 18 modpWalk(ideal,int,int,int[,int,int,int,int]) standard basis conversion of I in prime characteristic 18 19 modWalk(ideal,int,int[,int,int,int,int]); standard basis conversion of I using modular methods (chinese remainder) 19 20 "; … … 29 30 //////////////////////////////////////////////////////////////////////////////// 30 31 31 static proc modpWalk(def II, int p, int variant, list #)32 proc modpWalk(def II, int p, int variant, int reduction, list #) 32 33 "USAGE: modpWalk(I,p,#); I ideal, p integer, variant integer 33 34 ASSUME: If size(#) > 0, then … … 80 81 } 81 82 } 83 <<<<<<< HEAD 84 ======= 82 85 83 86 //------------------------- make i homogeneous ----------------------------- … … 106 109 } 107 110 111 >>>>>>> f533f6f7667328bccb271b19b2f603aaebe41596 108 112 //------------------------- compute a standard basis mod p ----------------------------- 109 110 113 if(variant == 1) 111 114 { 112 115 if(size(#)>0) 113 116 { 114 i = rwalk(i,radius,pert_deg,#); 115 // rwalk(i,radius,pert_deg,#); std(i); 117 i = rwalk(i,radius,pert_deg,reduction,#); 116 118 } 117 119 else 118 120 { 119 i = rwalk(i,radius,pert_deg );121 i = rwalk(i,radius,pert_deg,reduction); 120 122 } 121 123 } … … 124 126 if(size(#) == 2) 125 127 { 126 i = gwalk(i, #);128 i = gwalk(i,reduction,#); 127 129 } 128 130 else 129 131 { 130 i = gwalk(i );132 i = gwalk(i,reduction); 131 133 } 132 134 } … … 135 137 if(size(#) == 2) 136 138 { 137 i = frandwalk(i,radius, #);139 i = frandwalk(i,radius,reduction,#); 138 140 } 139 141 else 140 142 { 141 i = frandwalk(i,radius );143 i = frandwalk(i,radius,reduction); 142 144 } 143 145 } … … 157 159 if(size(#) == 2) 158 160 { 159 i=prwalk(i,radius,pert_deg,pert_deg, #);161 i=prwalk(i,radius,pert_deg,pert_deg,reduction,#); 160 162 } 161 163 else 162 164 { 163 i=prwalk(i,radius,pert_deg,pert_deg );165 i=prwalk(i,radius,pert_deg,pert_deg,reduction); 164 166 } 165 167 } … … 168 170 if(size(#) == 2) 169 171 { 170 i=pwalk(i,pert_deg,pert_deg, #);172 i=pwalk(i,pert_deg,pert_deg,reduction,#); 171 173 } 172 174 else 173 175 { 176 <<<<<<< HEAD 177 i=pwalk(i,pert_deg,pert_deg,reduction); 178 ======= 174 179 i=pwalk(i,pert_deg,pert_deg); 175 180 } … … 189 194 kill HomR; 190 195 } 191 } 192 } 196 >>>>>>> f533f6f7667328bccb271b19b2f603aaebe41596 197 } 198 } 199 193 200 setring R0; 194 201 return(list(fetch(@r,i),p)); … … 204 211 ring ra = 0,x(1..4),(a(a),lp); 205 212 ideal I = std(cyclic(4)); 213 int reduction = 1; 206 214 ring rb = 0,x(1..4),(a(b),lp); 207 215 ideal I = imap(ra,I); 208 modpWalk(I,p,1, a,b);216 modpWalk(I,p,1,reduction,a,b); 209 217 std(I); 210 218 } … … 212 220 //////////////////////////////////////////////////////////////////////////////// 213 221 214 proc modWalk(def II, int variant, list #)222 proc modWalk(def II, int variant, int reduction, list #) 215 223 "USAGE: modWalk(II); II ideal or list(ideal,int) 216 224 ASSUME: If variant = … … 487 495 if(n2 > 4) 488 496 { 489 //L[5] = prime(random(an,en));497 L[5] = prime(random(an,en)); 490 498 } 491 499 if(printlevel >= 10) … … 504 512 for(i=1; i<=size(L); i++) 505 513 { 506 Arguments[i] = list(II,L[i],variant, list(curr_weight,target_weight));514 Arguments[i] = list(II,L[i],variant,reduction,list(curr_weight,target_weight)); 507 515 } 508 516 } … … 511 519 for(i=1; i<=size(L); i++) 512 520 { 513 Arguments[i] = list(II,L[i],variant );521 Arguments[i] = list(II,L[i],variant,reduction); 514 522 } 515 523 } … … 528 536 //------------------- Now all leading ideals are the same -------------------- 529 537 //------------------- Lift results to basering via farey --------------------- 530 531 538 tt = timer; rt = rtimer; 532 539 N = T2[1]; … … 545 552 546 553 //---------------- Test if we already have a standard basis of I -------------- 547 548 554 tt = timer; rt = rtimer; 549 pTest = pTestSB(I,J,L,variant); 550 //pTest = primeTestSB(I,J,L,variant); 555 pTest = primeTest(J, prime(random(1000000000,2134567879))); 551 556 if(printlevel >= 10) 552 557 { … … 596 601 } 597 602 //-------------- We do not already have a standard basis of I, therefore do the main computation for more primes -------------- 598 599 603 T1 = H; 600 604 T2 = N; … … 613 617 for(i=j; i<=size(L); i++) 614 618 { 615 //Arguments[i-j+1] = list(II,L[i],variant,list(curr_weight,target_weight)); 616 Arguments[size(Arguments)+1] = list(II,L[i],variant,list(curr_weight,target_weight)); 619 Arguments[size(Arguments)+1] = list(II,L[i],variant,reduction,list(curr_weight,target_weight)); 617 620 } 618 621 } … … 621 624 for(i=j; i<=size(L); i++) 622 625 { 623 //Arguments[i-j+1] = list(II,L[i],variant); 624 Arguments[size(Arguments)+1] = list(II,L[i],variant); 626 Arguments[size(Arguments)+1] = list(II,L[i],variant,reduction); 625 627 } 626 628 } … … 632 634 for(i=1; i<=size(PP); i++) 633 635 { 634 //P[size(P) + 1] = PP[i];635 636 T1[size(T1) + 1] = PP[i][1]; 636 637 T2[size(T2) + 1] = bigint(PP[i][2]); … … 649 650 echo = 2; 650 651 ring R=0,(x,y,z),lp; 651 ideal I= -x+y2z-z,xz+1,x2+y2-1;652 // I is a standard basis in dp653 ideal J = modWalk(I,1 );652 ideal I= y3+xyz+y2z+xz3, 3+xy+x2y+y2z; 653 int reduction = 0; 654 ideal J = modWalk(I,1,1); 654 655 J; 655 656 } … … 772 773 return(J); 773 774 } 774 ////////////////////////////////////////////////////////////////////////////////// 775 static proc primeTestSB(def II, ideal J, list L, int variant, list #) 776 "USAGE: primeTestSB(I,J,L,variant,#); I,J ideals, L intvec of primes, variant int 777 RETURN: 1 (resp. 0) if for a randomly chosen prime p that is not in L 778 J mod p is (resp. is not) a standard basis of I mod p 779 EXAMPLE: example primeTestSB; shows an example 780 " 781 { 782 if(typeof(II) == "ideal") 783 { 784 ideal I = II; 785 int radius = 2; 786 } 787 if(typeof(II) == "list") 788 { 789 ideal I = II[1]; 790 int radius = II[2]; 791 } 792 793 int i,j,k,p; 794 def R = basering; 795 list r = ringlist(R); 796 797 while(!j) 798 { 799 j = 1; 800 p = prime(random(1000000000,2134567879)); 801 for(i = 1; i <= size(L); i++) 802 { 803 if(p == L[i]) 804 { 805 j = 0; 806 break; 807 } 808 } 809 if(j) 810 { 811 for(i = 1; i <= ncols(I); i++) 812 { 813 for(k = 2; k <= size(I[i]); k++) 814 { 815 if((denominator(leadcoef(I[i][k])) mod p) == 0) 816 { 817 j = 0; 818 break; 819 } 820 } 821 if(!j) 822 { 823 break; 824 } 825 } 826 } 827 if(j) 828 { 829 if(!primeTest(I,p)) 830 { 831 j = 0; 832 } 833 } 834 } 835 r[1] = p; 836 def @R = ring(r); 837 setring @R; 838 ideal I = imap(R,I); 839 ideal J = imap(R,J); 840 attrib(J,"isSB",1); 841 842 int t = timer; 843 j = 1; 844 if(isIncluded(I,J) == 0) 845 { 846 j = 0; 847 } 848 if(printlevel >= 11) 849 { 850 "isIncluded(I,J) takes "+string(timer - t)+" seconds"; 851 "j = "+string(j); 852 } 853 t = timer; 854 if(j) 855 { 856 if(size(#) > 0) 857 { 858 ideal K = modpWalk(I,p,variant,#)[1]; 859 } 860 else 861 { 862 ideal K = modpWalk(I,p,variant)[1]; 863 } 864 t = timer; 865 if(isIncluded(J,K) == 0) 866 { 867 j = 0; 868 } 869 if(printlevel >= 11) 870 { 871 "isIncluded(K,J) takes "+string(timer - t)+" seconds"; 872 "j = "+string(j); 873 } 874 } 875 setring R; 876 877 return(j); 878 } 879 example 880 { "EXAMPLE:"; echo = 2; 881 intvec L = 2,3,5; 882 ring r = 0,(x,y,z),lp; 883 ideal I = x+1,x+y+1; 884 ideal J = x+1,y; 885 primeTestSB(I,I,L,1); 886 primeTestSB(I,J,L,1); 887 } 888 889 //////////////////////////////////////////////////////////////////////////////// 890 static proc pTestSB(ideal I, ideal J, list L, int variant, list #) 891 "USAGE: pTestSB(I,J,L,variant,#); I,J ideals, L intvec of primes, variant int 892 RETURN: 1 (resp. 0) if for a randomly chosen prime p that is not in L 893 J mod p is (resp. is not) a standard basis of I mod p 894 EXAMPLE: example pTestSB; shows an example 895 " 896 { 897 int i,j,k,p; 898 def R = basering; 899 list r = ringlist(R); 900 901 while(!j) 902 { 903 j = 1; 904 p = prime(random(1000000000,2134567879)); 905 for(i = 1; i <= size(L); i++) 906 { 907 if(p == L[i]) { j = 0; break; } 908 } 909 if(j) 910 { 911 for(i = 1; i <= ncols(I); i++) 912 { 913 for(k = 2; k <= size(I[i]); k++) 914 { 915 if((denominator(leadcoef(I[i][k])) mod p) == 0) { j = 0; break; } 916 } 917 if(!j){ break; } 918 } 919 } 920 if(j) 921 { 922 if(!primeTest(I,p)) { j = 0; } 923 } 924 } 925 r[1] = p; 926 def @R = ring(r); 927 setring @R; 928 ideal I = imap(R,I); 929 ideal J = imap(R,J); 930 attrib(J,"isSB",1); 931 932 int t = timer; 933 j = 1; 934 if(isIncluded(I,J) == 0) { j = 0; } 935 936 if(printlevel >= 11) 937 { 938 "isIncluded(I,J) takes "+string(timer - t)+" seconds"; 939 "j = "+string(j); 940 } 941 942 t = timer; 943 if(j) 944 { 945 if(size(#) > 0) 946 { 947 ideal K = modpStd(I,p,variant,#[1])[1]; 948 } 949 else 950 { 951 ideal K = groebner(I); 952 } 953 t = timer; 954 if(isIncluded(J,K) == 0) { j = 0; } 955 956 if(printlevel >= 11) 957 { 958 "isIncluded(J,K) takes "+string(timer - t)+" seconds"; 959 "j = "+string(j); 960 } 961 } 962 setring R; 963 return(j); 964 } 965 example 966 { "EXAMPLE:"; echo = 2; 967 intvec L = 2,3,5; 968 ring r = 0,(x,y,z),dp; 969 ideal I = x+1,x+y+1; 970 ideal J = x+1,y; 971 pTestSB(I,I,L,2); 972 pTestSB(I,J,L,2); 973 } 775 974 776 //////////////////////////////////////////////////////////////////////////////// 975 777 static proc mixedTest() -
Property
mode
changed from
-
Singular/LIB/reszeta.lib
r7023ce rdbf609 4265 4265 if(savedCent==1) 4266 4266 { 4267 vector otherComp; 4268 otherComp[M[int(leadcoef(path[1,ncols(path)])),size(BO[4])-1]] 4269 =1; 4267 vector otherComp= 4268 gen(M[int(leadcoef(path[1,ncols(path)])),size(BO[4])-1]); 4270 4269 } 4271 4270 kill savedCent; -
Singular/LIB/rwalk.lib
-
Property
mode
changed from
100644
to100755
r70bc37 rdbf609 10 10 rwalk(ideal,int,int[,intvec,intvec]); standard basis of ideal via Random Walk algorithm 11 11 rwalk(ideal,int[,intvec,intvec]); standard basis of ideal via Random Perturbation Walk algorithm 12 fr walk(ideal,int[,intvec,intvec]); standard basis of ideal via Random Fractal Walk algorithm12 frandwalk(ideal,int[,intvec,intvec]); standard basis of ideal via Random Fractal Walk algorithm 13 13 "; 14 14 … … 141 141 * Random Walk * 142 142 ****************/ 143 proc rwalk(ideal Go, int radius, int pert_deg, list #)143 proc rwalk(ideal Go, int radius, int pert_deg, int reduction, int printout, list #) 144 144 "SYNTAX: rwalk(ideal i, int radius); 145 145 if size(#)>0 then rwalk(ideal i, int radius, intvec v, intvec w); 146 intermediate Groebner bases are not reduced if reduction = 0 146 147 TYPE: ideal 147 148 PURPOSE: compute the standard basis of the ideal, calculated via … … 178 179 179 180 ideal G = fetch(xR, Go); 180 G = system("Mrwalk", G, curr_weight, target_weight, radius, pert_deg, basering);181 G = system("Mrwalk", G, curr_weight, target_weight, radius, pert_deg, reduction, printout); 181 182 182 183 setring xR; … … 196 197 int radius = 1; 197 198 int perturb_deg = 2; 198 rwalk(I,radius,perturb_deg); 199 int reduction = 0; 200 int printout = 1; 201 rwalk(I,radius,perturb_deg,reduction,printout); 199 202 } 200 203 … … 202 205 * Perturbation Walk with random element * 203 206 *****************************************/ 204 proc prwalk(ideal Go, int radius, int o_pert_deg, int t_pert_deg, list #)207 proc prwalk(ideal Go, int radius, int o_pert_deg, int t_pert_deg, int reduction, int printout, list #) 205 208 "SYNTAX: rwalk(ideal i, int radius); 206 209 if size(#)>0 then rwalk(ideal i, int radius, intvec v, intvec w); … … 227 230 OSCTW= OrderStringalp_NP("al", #); 228 231 } 232 int nP = OSCTW[1]; 229 233 string ord_str = OSCTW[2]; 230 234 intvec curr_weight = OSCTW[3]; // original weight vector … … 238 242 239 243 ideal G = fetch(xR, Go); 240 G = system("Mprwalk", G, curr_weight, target_weight, radius, o_pert_deg, t_pert_deg, basering); 244 G = system("Mprwalk", G, curr_weight, target_weight, radius, o_pert_deg, t_pert_deg, 245 nP, reduction, printout); 241 246 242 247 setring xR; … … 257 262 int o_perturb_deg = 2; 258 263 int t_perturb_deg = 2; 259 prwalk(I,radius,o_perturb_deg,t_perturb_deg); 264 int reduction = 0; 265 int printout = 2; 266 prwalk(I,radius,o_perturb_deg,t_perturb_deg,reduction,printout); 260 267 } 261 268 … … 263 270 * Fractal Walk with random element * 264 271 ************************************/ 265 proc frandwalk(ideal Go, int radius, list #)266 "SYNTAX: frwalk(ideal i, int radius );267 frwalk(ideal i, int radius, int vec v, intvec w);272 proc frandwalk(ideal Go, int radius, int reduction, int printout, list #) 273 "SYNTAX: frwalk(ideal i, int radius, int reduction, int printout); 274 frwalk(ideal i, int radius, int reduction, int printout, intvec v, intvec w); 268 275 TYPE: ideal 269 276 PURPOSE: compute the standard basis of the ideal, calculated via … … 299 306 ideal G = fetch(xR, Go); 300 307 int pert_deg = 2; 301 G = system("Mfrwalk", G, curr_weight, target_weight, radius); 308 309 G = system("Mfrwalk", G, curr_weight, target_weight, radius, reduction, printout); 302 310 303 311 setring xR; … … 314 322 ring r = 0,(z,y,x), lp; 315 323 ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z; 316 frandwalk(I,2); 317 } 324 int reduction = 0; 325 frandwalk(I,2,0,1); 326 } -
Property
mode
changed from
-
Singular/LIB/schreyer.lib
r7023ce rdbf609 1 /////////////////////////////////////////////////////////////////////////// 1 /////////////////////////////////////////////////////////////////////////////// 2 2 version="version schreyer.lib 4.0.0.0 Jun_2013 "; // $Id$ 3 3 category="General purpose"; 4 4 info=" 5 LIBRARY: schreyer.lib Schreyer resolution computations and helpers for @code{derham.lib}5 LIBRARY: schreyer.lib Schreyer resolution computations and helpers for derham.lib 6 6 AUTHOR: Oleksandr Motsak <U@D>, where U={motsak}, D={mathematik.uni-kl.de} 7 7 KEYWORDS: Schreyer ordering; Schreyer resolution; syzygy 8 8 OVERVIEW: 9 @* The library contains several procedures for computing a/part of Schreyer resoltion (cf. [SFO]), 10 and some helpers for @code{derham.lib} (which requires resolutions over the homogenized Weyl algebra) for that purpose. 11 @* The input for any resolution computation is a set of vectors @code{M} in form of a module over some basering @code{R}. 12 The helpers works both in the commutative and non-commutative setting (cf. [MO]), that is the ring @code{R} may be non-commutative, 13 in which case the ring ordering over it must be global. They produce/work with partial Schreyer resolutions of @code{(R^rank(M))/M} 14 in form of a specially constructed ring (endowed with a special ring ordering that will be extended in the 15 course of a resolution computation) containing a list of modules @code{RES} and a module @code{MRES}: 16 @* @code{RES}: the list of modules contains the images of maps (also called syzygy modules) substituting the 17 computed beginning of a Schreyer resolution, that is, each syzygy module is given by a Groebner basis 18 with respect to the corresponding Schreyer ordering. 19 @* @code{RES}: the list of modules which starts with a zero map given by @code{rank(M)} zero generators indicating that the image of 20 the first differential map is zero. The second map @code{RES[2]} is given by @code{M}, which indicates that 21 the resolution of @code{(R^rank(M))/M} is being computed. 22 @* @code{MRES}: the module is a direct sum of modules from @code{RES} and thus comprises all computed differentials. 23 @* Syzygies are shifted so that @code{gen(i)} is mapped to @code{MRES[i]} under the differential map. 24 NOTE: 25 @* Here, we call a free resolution a Schreyer resolution if each syzygy module is given by a Groebner basis 26 with respect to the corresponding Schreyer ordering. 27 @* A Schreyer resolution can be much bigger than a minimal resolution of the same module, but may be easier to construct. 28 @* The Schreyer ordering succesively extends the starting module ordering on @code{M} (defined in Singular by the basering @code{R}) 29 and is extended to higher syzygies using the following definition: 30 @* a < b if and only if (d(a) < d(b)) OR ( (d(a) = d(b) AND (comp(a) < comp(b)) ), 31 @* where @code{d(a)} is the image of an under the differential (given by @code{MRES}), 32 and @code{comp(a)} is the module component, for any module terms @code{a} and @code{b} from the same higher syzygy module. 33 NOTE: 34 @* most comutations require the dynamic or built-in module @code{syzextra}, which will be auto-leaded on demand. 35 PROCEDURES: 36 Sres(M,len) helper for computing Schreyer resolution of module M of maximal length len 37 Ssyz(M) helper for computing Schreyer resolution of module M of length 1 38 Scontinue(len) helper for extending currently active resolution by (at most) len syszygies 39 s_res(M, len) compute Schreyer resolution of module M of maximal length len via LiftTree method from [BMSS] 9 The library contains several procedures for computing a/part of Schreyer 10 resoltion (cf. [SFO]), and some helpers for derham.lib (which requires 11 resolutions over the homogenized Weyl algebra) for that purpose. 12 The input for any resolution computation is a set of vectors M in form of a 13 module over some basering R. The helpers works both in the commutative and 14 non-commutative setting (cf. [MO]), that is the ring R may be non-commutative, 15 in which case the ring ordering over it must be global. They produce/work with 16 partial Schreyer resolutions of (R^rank(M))/M in form of a specially constructed 17 ring (endowed with a special ring ordering that will be extended in the course 18 of a resolution computation) containing the following objects: 19 @* RES: the list of modules contains the images of maps (also called syzygy 20 modules) substituting the computed beginning of a Schreyer resolution, that is, 21 each syzygy module is given by a Groebner basis with respect to the 22 corresponding Schreyer ordering. RES starts with a zero map given by rank(M) 23 zero generators indicating that the image of the first differential map is 24 zero. The second map RES[2] is given by M, which indicates that the resolution 25 of (R^rank(M))/M is being computed. 26 @* MRES: the module is a direct sum of modules from RES and thus comprises all 27 computed differentials. Syzygies are shifted so that gen(i) is mapped to MRES[i] 28 under the differential map. 29 @* Here, we call a free resolution a Schreyer resolution if each syzygy 30 module is given by a Groebner basis with respect to the corresponding Schreyer 31 ordering. A Schreyer resolution can be much bigger than a minimal resolution of 32 the same module, but may be easier to construct. The Schreyer ordering 33 succesively extends the starting module ordering on M (defined in Singular by 34 the basering R) and is extended to higher syzygies using the following 35 definition: 36 @* a < b if and only if (d(a)<d(b)) OR ( (d(a)=d(b) AND (comp(a)<comp(b)) ), 37 @* where d(a) is the image of an under the differential (given by MRES), and 38 comp(a) is the module component, for any module terms a and b from the same 39 higher syzygy module. 40 41 NOTE: Since most comutations require the module syzextra.so, please be make sure 42 to build it into Singular on Windows. 43 40 44 REFERENCES: 41 45 @* 42 [BMSS] Burcin, E., Motsak, O., Schreyer, F.-O., Steenpass, A.: NEW ALGORITHMS TO COMPUTE SYZYGIES, 2014. 46 [BMSS] Burcin, E., Motsak, O., Schreyer, F.-O., Steenpass, A.: 47 Refined algorithms to compute syzygies, 2015 (to appear). 43 48 @* 44 [SFO] Schreyer, F.O.: Die Berechnung von Syzygien mit dem verallgemeinerten Weierstrassschen Divisionssatz,45 49 [SFO] Schreyer, F.O.: Die Berechnung von Syzygien mit dem verallgemeinerten 50 Weierstrassschen Divisionssatz, Master's thesis, Univ. Hamburg, 1980. 46 51 @* 47 [MO] Motsak, O.: Non-commutative Computer Algebra with applications: Graded commutative algebra and related 48 structures in Singular with applications, Ph.D. thesis, TU Kaiserslautern, 2010. 52 [MO] Motsak, O.: Non-commutative Computer Algebra with applications: 53 Graded commutative algebra and related structures in Singular with applications, 54 Ph.D. thesis, TU Kaiserslautern, 2010. 55 56 PROCEDURES: 57 s_res(M,l) compute Schreyer resolution via LiftTree method from [BMSS] 58 Sres(M,l) helper for computing Schreyer resolution 59 Ssyz(M) helper for computing Schreyer resolution of module M of length 1 60 Scontinue(l) helper for extending currently active resolution 61 62 SEE ALSO: syz, sres, lres, res 49 63 "; 50 64 … … 600 614 } 601 615 602 def opts = option(get); 616 def opts = option(get); 603 617 option(redSB); option(redTail); 604 618 M = simplify(interred(groebner(M)), 1 + 2 + 4 + 32); // NOTE: we require interreduced GB for input 605 619 option(set, opts); kill opts; 606 620 607 621 // int @IS_A_SB = attrib(M, "isSB"); if( !@IS_A_SB ) { } else { } 608 622 // attrib(M, "isSB", 1); … … 789 803 attrib(S, "NOCACHING", 0); 790 804 } 791 805 792 806 793 807 // maybe resetting existing ring attributes! … … 1402 1416 def @c = Syzextra::leadcomp(s); int k = int(@c); 1403 1417 1404 1418 if( @TREEOUTPUT ){ "\CHILD{", (s), "}{", ( @b*L[k]), "}"; } 1405 1419 1406 1420 s = s + SSTraverseTail(@b, T[k], L, T, #); // !!! … … 1563 1577 { 1564 1578 @b = Syzextra::leadmonomial(syz_2); 1565 1566 1567 1579 k = int( Syzextra::leadcomp(syz_2)); 1580 1581 if( @TREEOUTPUT ){ "\CHILD{", (syz_2), "}{", ( lead(spoly)), "}"; } 1568 1582 1569 1583 spoly = spoly + @b * T[k]; … … 2158 2172 2159 2173 // cannot be automatically used via overloading :( 2160 proc SRES_list(def SR)2174 static proc SRES_list(def SR) 2161 2175 "USAGE: SRES_list(resolution) 2162 2176 RETURN: list … … 2474 2488 } 2475 2489 2490 2491 // Further recognized switches are the following attributes of @code{Schreyer::SSinit} procedure: 2492 // LEAD2SYZ, TAILREDSYZ, HYBRIDNF, DEBUG, ... 2493 2476 2494 proc s_res(def I, int l) 2477 2495 "USAGE: s_res(ideal/module M, int len) 2478 RETURN: resolution object o r SRES2479 PURPOSE: compute a Schreyer resolution of M of length at most len (see [BMSS])2496 RETURN: resolution object over basering 2497 PURPOSE: compute a non-minimal Schreyer free resolution of M of length at most len via the LiftTree algorithm described in [BMSS]. 2480 2498 NOTE: If given len is zero then nvars(basering) + 1 is used instead. 2481 @* This functions is not related to other helpers from this library.2499 @* This functions is not related to the helpers from this library. This procedure works in only in commutative case. 2482 2500 @* One can switch on computation protocol and statistic (depending on the build) by setting the @code{prot} option. 2483 @* Further recognized switches are the following attributes of @code{Schreyer::SSinit} procedure: 2484 LEAD2SYZ, TAILREDSYZ, HYBRIDNF 2485 DEBUG, ... 2486 SEE ALSO: sres 2501 SEE ALSO: sres, lres, Sres 2487 2502 EXAMPLE: example s_res; shows an example 2488 2503 " … … 2518 2533 ring R; 2519 2534 module M = maxideal(1); M; 2520 def rs = s_res(M, 0); 2521 print(rs); 2522 print(betti(rs, 0)); // non-minimal betties 2523 print(SRES_list(rs)); 2524 print(betti(rs, 1)); //minimal betties 2535 s_res(M, 0); // Koszul complex 2536 list rs = _; // get syzygies 2537 print(betti(rs, 0), "betti"); // non-minimal betties 2525 2538 print(minres(rs)); 2539 print(betti(rs, 1), "betti"); //minimal betties 2526 2540 } 2527 2541 … … 2732 2746 attrib(SSinit, "PROFILE", 0); 2733 2747 attrib(SSinit, "IGNORETAILS", 0); // not only frame 2734 2748 2735 2749 attrib(SSinit, "NOCACHING", 0); 2736 2750 … … 2787 2801 ideal I = -x2y+26/17xy2+70/17y3+96/121x2z+63/82xyz+115/11y2z-8114xz2-40/79yz2+16/125z3+3023x2u-123/70xyu+3395y2u-81/119xzu-23/66yzu+3626z2u+18/53xu2+111/58yu2-34/39zu2+53/40u3-94/17x2v-10/19xyv+81/88y2v-91/33xzv-9967yzv-103/4z2v-26/109xuv+69/97yuv+92/17zuv-19/96u2v+10/21xv2+6147yv2+32/113zv2-79/82uv2-77/51v3,4347x2y-9017xy2+11327y3+18/79x2z-93/43xyz-35/47y2z+14704xz2+10727yz2-1764z3-612x2u+20/107xyu-103/89y2u-39/2xzu+2345yzu+10251z2u-9984xu2-10299yu2+113/118zu2+37/91u3+2/31x2v+9552xyv-47/100y2v-3242xzv+113/27yzv-11271z2v-13/79xuv+15917yuv+5/114zuv+103/119u2v-21/55xv2-59/19yv2+101/68zv2-7817uv2-112/29v3,7228x2y-111/113xy2+5913y3+6/43x2z-11251xyz+27/121y2z+97/96xz2-7398yz2-97/114z3+38/15x2u+5005xyu-41/126y2u-61/116xzu+89/9yzu-4087z2u+26/15xu2-92/103yu2+21/68zu2-4027u3+97/91x2v+5150xyv-4/47y2v-2310xzv+7307yzv-77/86z2v+30/83xuv+413yuv-50zuv-103/106u2v+105/73xv2-109/98yv2+59/63zv2+715uv2+963v3,x3+3487x2y-9744xy2-13276y3-15213x2z-118/51xyz+101/104y2z+2754xz2+9111yz2-17/94z3+11136x2u-43/82xyu-9/41y2u-7306xzu-6839yzu+5692z2u-14682xu2+37/80yu2-85/97zu2-6186u3+34/15x2v+84/109xyv+5086y2v+27/112xzv-3/40yzv+19/120z2v+11222xuv+38/55yuv-24/83zuv+15814u2v-111/61xv2+49/44yv2+125/81zv2+1933uv2-19/71v3; 2788 2802 TestSSresAttribs(I, Name); 2789 kill @p, Name, R; 2803 kill @p, Name, R; 2790 2804 2791 2805 string Name = "rat.d8.g6"; int @p=31991; ring R = (@p),(x,y,z,u,v), dp; -
Singular/LIB/swalk.lib
-
Property
mode
changed from
100644
to100755
-
Property
mode
changed from
-
Singular/extra.cc
r70bc37 rdbf609 1864 1864 if (strcmp(sys_cmd, "Mwalk") == 0) 1865 1865 { 1866 const short t[]={ 4,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,RING_CMD};1866 const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,RING_CMD,INT_CMD,INT_CMD}; 1867 1867 if (!iiCheckTypes(h,t,1)) return TRUE; 1868 1868 if (((intvec*) h->next->Data())->length() != currRing->N && … … 1875 1875 ideal arg1 = (ideal) h->Data(); 1876 1876 intvec* arg2 = (intvec*) h->next->Data(); 1877 intvec* arg3 = (intvec*) h->next->next->Data(); 1878 ring arg4 = (ring) h->next->next->next->Data(); 1879 ideal result = (ideal) Mwalk(arg1, arg2, arg3,arg4); 1877 intvec* arg3 = (intvec*) h->next->next->Data(); 1878 ring arg4 = (ring) h->next->next->next->Data(); 1879 int arg5 = (int) (long) h->next->next->next->next->Data(); 1880 int arg6 = (int) (long) h->next->next->next->next->next->Data(); 1881 ideal result = (ideal) Mwalk(arg1, arg2, arg3, arg4, arg5, arg6); 1880 1882 res->rtyp = IDEAL_CMD; 1881 1883 res->data = result; … … 1913 1915 if (strcmp(sys_cmd, "Mpwalk") == 0) 1914 1916 { 1915 const short t[]={ 6,IDEAL_CMD,INT_CMD,INT_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD};1917 const short t[]={8,IDEAL_CMD,INT_CMD,INT_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD}; 1916 1918 if (!iiCheckTypes(h,t,1)) return TRUE; 1917 1919 if(((intvec*) h->next->next->next->Data())->length() != currRing->N && … … 1927 1929 intvec* arg5 = (intvec*) h->next->next->next->next->Data(); 1928 1930 int arg6 = (int) (long) h->next->next->next->next->next->Data(); 1929 ideal result = (ideal) Mpwalk(arg1, arg2, arg3, arg4, arg5,arg6); 1931 int arg7 = (int) (long) h->next->next->next->next->next->next->Data(); 1932 int arg8 = (int) (long) h->next->next->next->next->next->next->next->Data(); 1933 ideal result = (ideal) Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); 1930 1934 res->rtyp = IDEAL_CMD; 1931 1935 res->data = result; … … 1939 1943 if (strcmp(sys_cmd, "Mrwalk") == 0) 1940 1944 { 1941 const short t[]={ 6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,RING_CMD};1945 const short t[]={7,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD}; 1942 1946 if (!iiCheckTypes(h,t,1)) return TRUE; 1943 if((( (intvec*) h->next->Data())->length() != currRing->N &&1944 ((intvec*) h->next-> next->Data())->length() != currRing->N) &&1945 (( (intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N)&&1946 ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) ) )1947 if(((intvec*) h->next->Data())->length() != currRing->N && 1948 ((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) && 1949 ((intvec*) h->next->next->Data())->length() != currRing->N && 1950 ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) ) 1947 1951 { 1948 1952 Werror("system(\"Mrwalk\" ...) intvecs not of length %d or %d\n", … … 1955 1959 int arg4 = (int)(long) h->next->next->next->Data(); 1956 1960 int arg5 = (int)(long) h->next->next->next->next->Data(); 1957 ring arg6 = (ring) h->next->next->next->next->next->Data(); 1958 ideal result = (ideal) Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6); 1961 int arg6 = (int)(long) h->next->next->next->next->next->Data(); 1962 int arg7 = (int)(long) h->next->next->next->next->next->next->Data(); 1963 ideal result = (ideal) Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7); 1959 1964 res->rtyp = IDEAL_CMD; 1960 1965 res->data = result; … … 2018 2023 if (strcmp(sys_cmd, "Mfwalk") == 0) 2019 2024 { 2020 const short t[]={ 3,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD};2025 const short t[]={5,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD}; 2021 2026 if (!iiCheckTypes(h,t,1)) return TRUE; 2022 2027 if (((intvec*) h->next->Data())->length() != currRing->N && … … 2025 2030 Werror("system(\"Mfwalk\" ...) intvecs not of length %d\n", 2026 2031 currRing->N); 2027 return TRUE;2028 }2029 ideal arg1 = (ideal) h->Data();2030 intvec* arg2 = (intvec*) h->next->Data();2031 intvec* arg3 = (intvec*) h->next->next->Data();2032 ideal result = (ideal) Mfwalk(arg1, arg2, arg3);2033 res->rtyp = IDEAL_CMD;2034 res->data = result;2035 return FALSE;2036 }2037 else2038 #endif2039 /*==================== Mfrwalk =================*/2040 #ifdef HAVE_WALK2041 if (strcmp(sys_cmd, "Mfrwalk") == 0)2042 {2043 const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,RING_CMD};2044 if (!iiCheckTypes(h,t,1)) return TRUE;2045 if (((intvec*) h->next->Data())->length() != currRing->N &&2046 ((intvec*) h->next->next->Data())->length() != currRing->N)2047 {2048 Werror("system(\"Mfrwalk\" ...) intvecs not of length %d\n",currRing->N);2049 2032 return TRUE; 2050 2033 } … … 2053 2036 intvec* arg3 = (intvec*) h->next->next->Data(); 2054 2037 int arg4 = (int)(long) h->next->next->next->Data(); 2055 ideal result = (ideal) Mfrwalk(arg1, arg2, arg3, arg4); 2038 int arg5 = (int)(long) h->next->next->next->next->Data(); 2039 ideal result = (ideal) Mfwalk(arg1, arg2, arg3, arg4, arg5); 2056 2040 res->rtyp = IDEAL_CMD; 2057 2041 res->data = result; … … 2059 2043 } 2060 2044 else 2045 #endif 2046 /*==================== Mfrwalk =================*/ 2047 #ifdef HAVE_WALK 2048 if (strcmp(sys_cmd, "Mfrwalk") == 0) 2049 { 2050 const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD}; 2051 if (!iiCheckTypes(h,t,1)) return TRUE; 2052 /* 2053 if (((intvec*) h->next->Data())->length() != currRing->N && 2054 ((intvec*) h->next->next->Data())->length() != currRing->N) 2055 { 2056 Werror("system(\"Mfrwalk\" ...) intvecs not of length %d\n",currRing->N); 2057 return TRUE; 2058 } 2059 */ 2060 if((((intvec*) h->next->Data())->length() != currRing->N && 2061 ((intvec*) h->next->next->Data())->length() != currRing->N ) && 2062 (((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) && 2063 ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) )) 2064 { 2065 Werror("system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n", 2066 currRing->N,(currRing->N)*(currRing->N)); 2067 return TRUE; 2068 } 2069 2070 ideal arg1 = (ideal) h->Data(); 2071 intvec* arg2 = (intvec*) h->next->Data(); 2072 intvec* arg3 = (intvec*) h->next->next->Data(); 2073 int arg4 = (int)(long) h->next->next->next->Data(); 2074 int arg5 = (int)(long) h->next->next->next->next->Data(); 2075 int arg6 = (int)(long) h->next->next->next->next->next->Data(); 2076 ideal result = (ideal) Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6); 2077 res->rtyp = IDEAL_CMD; 2078 res->data = result; 2079 return FALSE; 2080 } 2081 else 2061 2082 /*==================== Mprwalk =================*/ 2062 2083 if (strcmp(sys_cmd, "Mprwalk") == 0) 2063 2084 { 2064 const short t[]={ 7,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD,RING_CMD};2085 const short t[]={9,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD}; 2065 2086 if (!iiCheckTypes(h,t,1)) return TRUE; 2066 if (((intvec*) h->next->Data())->length() != currRing->N && 2067 ((intvec*) h->next->next->Data())->length() != currRing->N ) 2068 { 2069 Werror("system(\"Mrwalk\" ...) intvecs not of length %d\n", 2070 currRing->N); 2087 if((((intvec*) h->next->Data())->length() != currRing->N && 2088 ((intvec*) h->next->next->Data())->length() != currRing->N ) && 2089 (((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) && 2090 ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) )) 2091 { 2092 Werror("system(\"Mrwalk\" ...) intvecs not of length %d or %d\n", 2093 currRing->N,(currRing->N)*(currRing->N)); 2071 2094 return TRUE; 2072 2095 } … … 2077 2100 int arg5 = (int)(long) h->next->next->next->next->Data(); 2078 2101 int arg6 = (int)(long) h->next->next->next->next->next->Data(); 2079 ring arg7 = (ring) h->next->next->next->next->next->next->Data(); 2080 ideal result = (ideal) Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7); 2102 int arg7 = (int)(long) h->next->next->next->next->next->next->Data(); 2103 int arg8 = (int)(long) h->next->next->next->next->next->next->next->Data(); 2104 int arg9 = (int)(long) h->next->next->next->next->next->next->next->next->Data(); 2105 ideal result = (ideal) Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); 2081 2106 res->rtyp = IDEAL_CMD; 2082 2107 res->data = result; -
Singular/ipassign.cc
r7023ce rdbf609 950 950 * assign a = b 951 951 */ 952 static BOOLEAN jiAssign_1(leftv l, leftv r )952 static BOOLEAN jiAssign_1(leftv l, leftv r, BOOLEAN toplevel) 953 953 { 954 954 int rt=r->Typ(); … … 960 960 961 961 int lt=l->Typ(); 962 if ( /*(*/ lt==0 /*)*/) /*&&(l->name!=NULL)*/962 if (lt==0) 963 963 { 964 964 if (!errorreported) Werror("left side `%s` is undefined",l->Fullname()); … … 1009 1009 } 1010 1010 leftv ld=l; 1011 if ((l->rtyp==IDHDL)&&(lt!=QRING_CMD)&&(lt!=RING_CMD)) 1012 ld=(leftv)l->data; 1011 if (l->rtyp==IDHDL) 1012 { 1013 if ((lt!=QRING_CMD)&&(lt!=RING_CMD)) 1014 ld=(leftv)l->data; 1015 } 1016 else if (toplevel) 1017 { 1018 WerrorS("error in assign: left side is not an l-value"); 1019 return TRUE; 1020 } 1013 1021 if (lt>MAX_TOK) 1014 1022 { … … 1193 1201 h=l->next; 1194 1202 l->next=NULL; 1195 nok=jiAssign_1(l,&t );1203 nok=jiAssign_1(l,&t,TRUE); 1196 1204 l->next=h; 1197 1205 if (nok) return TRUE; … … 1227 1235 h=l->next; 1228 1236 l->next=NULL; 1229 nok=jiAssign_1(l,&t );1237 nok=jiAssign_1(l,&t,TRUE); 1230 1238 l->next=h; 1231 1239 t.CleanUp(); … … 1465 1473 idhdl hh=NULL; 1466 1474 if ((l->rtyp==IDHDL)&&(l->Typ()==DEF_CMD)) hh=(idhdl)l->data; 1467 nok=jiAssign_1(l,&t );1475 nok=jiAssign_1(l,&t,TRUE); 1468 1476 if (hh!=NULL) { ipMoveId(hh);hh=NULL;} 1469 1477 l->next=h; … … 1541 1549 h=l->next; 1542 1550 l->next=NULL; 1543 nok=jiAssign_1(l,&t );1551 nok=jiAssign_1(l,&t,TRUE); 1544 1552 if (nok) 1545 1553 { … … 1599 1607 memset(&tmp,0,sizeof(sleftv)); 1600 1608 tmp.rtyp=DEF_CMD; 1601 b=iiAssign(&tmp,r );1609 b=iiAssign(&tmp,r,FALSE); 1602 1610 ld->CleanUp(); 1603 1611 memcpy(ld,&tmp,sizeof(sleftv)); … … 1611 1619 tmp.rtyp=r->Typ(); 1612 1620 tmp.data=(char*)idrecDataInit(r->Typ()); 1613 b=iiAssign(&tmp,r );1621 b=iiAssign(&tmp,r,FALSE); 1614 1622 ld->CleanUp(); 1615 1623 memcpy(ld,&tmp,sizeof(sleftv)); … … 1617 1625 else 1618 1626 { 1619 b=iiAssign(ld,r );1627 b=iiAssign(ld,r,FALSE); 1620 1628 if (l->e!=NULL) l->e->next=ld->e; 1621 1629 ld->e=NULL; … … 1646 1654 return b; 1647 1655 } 1648 BOOLEAN iiAssign(leftv l, leftv r )1656 BOOLEAN iiAssign(leftv l, leftv r, BOOLEAN toplevel) 1649 1657 { 1650 1658 if (errorreported) return TRUE; … … 1664 1672 IDFLAG((idhdl)l->data)=0; 1665 1673 l->attribute=NULL; 1674 toplevel=FALSE; 1666 1675 } 1667 1676 else if (l->attribute!=NULL) … … 1746 1755 &&((lt==rt)||(lt!=LIST_CMD))) 1747 1756 { 1748 b=jiAssign_1(l,r );1757 b=jiAssign_1(l,r,toplevel); 1749 1758 if (l->rtyp==IDHDL) 1750 1759 { … … 1771 1780 ) 1772 1781 { 1773 b=jiAssign_1(l,r );1782 b=jiAssign_1(l,r,toplevel); 1774 1783 if((l->rtyp==IDHDL)&&(l->data!=NULL)) 1775 1784 { … … 1858 1867 } 1859 1868 if ((hh->next==NULL)&&(hh->Typ()==IDEAL_CMD)) 1860 return jiAssign_1(l,hh ); /* map-assign: map f=r,i; */1869 return jiAssign_1(l,hh,toplevel); /* map-assign: map f=r,i; */ 1861 1870 //no break, handle the rest like an ideal: 1862 1871 map_assign=TRUE; -
Singular/ipshell.h
r7023ce rdbf609 173 173 /* ================================================================== */ 174 174 /* Assigments : */ 175 BOOLEAN iiAssign(leftv left, leftv right );175 BOOLEAN iiAssign(leftv left, leftv right, BOOLEAN toplevel=TRUE); 176 176 177 177 typedef BOOLEAN (*proci)(leftv,leftv,Subexpr); -
Singular/singular-libs
r7023ce rdbf609 52 52 realizationMatroids.lib resources.lib ringgb.lib \ 53 53 schreyer.lib symodstd.lib derham.lib polybori.lib ellipticcovers.lib \ 54 schubert.lib tasks.lib tropical.lib hdepth.lib 54 schubert.lib tasks.lib tropical.lib hdepth.lib gradedModules.lib 55 55 56 56 PLIBS = bimodules.lib bfun.lib central.lib dmod.lib dmodapp.lib dmodvar.lib\ -
Singular/walk.cc
-
Property
mode
changed from
100644
to100755
r70bc37 rdbf609 429 429 #endif 430 430 431 #ifdef CHECK_IDEAL_MWALK431 //#ifdef CHECK_IDEAL_MWALK 432 432 static void idString(ideal L, const char* st) 433 433 { … … 441 441 Print(" %s;", pString(L->m[nL-1])); 442 442 } 443 #endif443 //#endif 444 444 445 445 #if defined(CHECK_IDEAL_MWALK) || defined(ENDWALKS) … … 558 558 } 559 559 return p0; 560 } 561 562 /***************************************************************************** 563 * compute the gcd of the entries of the vectors curr_weight and diff_weight * 564 *****************************************************************************/ 565 static int simplify_gcd(intvec* curr_weight, intvec* diff_weight) 566 { 567 int j; 568 int nRing = currRing->N; 569 int gcd_tmp = (*curr_weight)[0]; 570 for (j=1; j<nRing; j++) 571 { 572 gcd_tmp = gcd(gcd_tmp, (*curr_weight)[j]); 573 if(gcd_tmp == 1) 574 { 575 break; 576 } 577 } 578 if(gcd_tmp != 1) 579 { 580 for (j=0; j<nRing; j++) 581 { 582 gcd_tmp = gcd(gcd_tmp, (*diff_weight)[j]); 583 if(gcd_tmp == 1) 584 { 585 break; 586 } 587 } 588 } 589 return gcd_tmp; 560 590 } 561 591 … … 953 983 } 954 984 955 /***************************************************************************** 956 * create a weight matrix order as intvec of an extra weight vector (a(iv), lp)*957 ****************************************************************************** /985 /********************************************************************************* 986 * create a weight matrix order as intvec of an extra weight vector (a(iv),M(iw)) * 987 **********************************************************************************/ 958 988 intvec* MivMatrixOrderRefine(intvec* iv, intvec* iw) 959 989 { 990 <<<<<<< HEAD 991 assume((iv->length())*(iv->length()) == iw->length()); 992 int i,j, nR = iv->length(); 993 994 ======= 960 995 assume(iv->length() == iw->length()); 961 996 int i, nR = iv->length(); 962 997 998 >>>>>>> f533f6f7667328bccb271b19b2f603aaebe41596 963 999 intvec* ivm = new intvec(nR*nR); 964 1000 … … 966 1002 { 967 1003 (*ivm)[i] = (*iv)[i]; 968 (*ivm)[i+nR] = (*iw)[i]; 969 } 970 for(i=2; i<nR; i++) 971 { 972 (*ivm)[i*nR+i-2] = 1; 1004 } 1005 for(i=1; i<nR; i++) 1006 { 1007 for(j=0; j<nR; j++) 1008 { 1009 (*ivm)[j+i*nR] = (*iw)[j+i*nR]; 1010 } 973 1011 } 974 1012 return ivm; … … 1859 1897 } 1860 1898 1899 1900 /************************************************************** 1901 * Look for the position of the smallest absolut value in vec * 1902 **************************************************************/ 1903 static int MivAbsMaxArg(intvec* vec) 1904 { 1905 int k = MivAbsMax(vec); 1906 int i=0; 1907 while(1) 1908 { 1909 if((*vec)[i] == k || (*vec)[i] == -k) 1910 { 1911 break; 1912 } 1913 i++; 1914 } 1915 return i; 1916 } 1917 1918 1861 1919 /********************************************************************** 1862 1920 * Compute a next weight vector between curr_weight and target_weight * … … 1873 1931 1874 1932 int nRing = currRing->N; 1875 int checkRed, j, kkk,nG = IDELEMS(G);1933 int checkRed, j, nG = IDELEMS(G); 1876 1934 intvec* ivtemp; 1877 1935 … … 1911 1969 mpz_init(dcw); 1912 1970 1913 //int tn0, tn1, tz1, ncmp, gcd_tmp, ntmp;1914 1971 int gcd_tmp; 1915 1972 intvec* diff_weight = MivSub(target_weight, curr_weight); … … 1917 1974 intvec* diff_weight1 = MivSub(target_weight, curr_weight); 1918 1975 poly g; 1919 //poly g, gw; 1976 1920 1977 for (j=0; j<nG; j++) 1921 1978 { … … 1979 2036 } 1980 2037 } 1981 //Print("\n// Alloc Size = %d \n", nRing*sizeof(mpz_t));2038 //Print("\n// Alloc Size = %d \n", nRing*sizeof(mpz_t)); 1982 2039 mpz_t *vec=(mpz_t*)omAlloc(nRing*sizeof(mpz_t)); 1983 2040 1984 2041 1985 // there is no 0<t<1 and define the next weight vector that is equal to the current weight vector 2042 // there is no 0<t<1 and define the next weight vector that is equal 2043 // to the current weight vector 1986 2044 if(mpz_cmp(t_nenner, t_null) == 0) 1987 2045 { … … 2054 2112 #endif 2055 2113 2056 // BOOLEAN isdwpos; 2057 2058 // construct a new weight vector 2114 // construct a new weight vector and check whether vec[j] is overflow, 2115 // i.e. vec[j] > 2^31. 2116 // If vec[j] doesn't overflow, define a weight vector. Otherwise, 2117 // report that overflow appears. In the second case, test whether the 2118 // the correctness of the new vector plays an important role 2119 2059 2120 for (j=0; j<nRing; j++) 2060 2121 { … … 2100 2161 } 2101 2162 } 2102 2163 // reduce the vector with the gcd 2164 if(mpz_cmp_si(ggt,1) != 0) 2165 { 2166 for (j=0; j<nRing; j++) 2167 { 2168 mpz_divexact(vec[j], vec[j], ggt); 2169 } 2170 } 2103 2171 #ifdef NEXT_VECTORS_CC 2104 2172 PrintS("\n// gcd of elements of the vector: "); … … 2106 2174 #endif 2107 2175 2108 /**********************************************************************2109 * construct a new weight vector and check whether vec[j] is overflow, *2110 * i.e. vec[j] > 2^31. *2111 * If vec[j] doesn't overflow, define a weight vector. Otherwise, *2112 * report that overflow appears. In the second case, test whether the *2113 * the correctness of the new vector plays an important role *2114 **********************************************************************/2115 kkk=0;2116 2176 for(j=0; j<nRing; j++) 2117 2177 { … … 2129 2189 2130 2190 REDUCTION: 2191 checkRed = 1; 2131 2192 for (j=0; j<nRing; j++) 2132 2193 { 2133 (*diff_weight)[j] = mpz_get_si(vec[j]); 2134 } 2135 while(MivAbsMax(diff_weight) >= 5) 2136 { 2137 for (j=0; j<nRing; j++) 2138 { 2139 if(mpz_cmp_si(ggt,1)==0) 2140 { 2141 (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5); 2142 // Print("\n// vector[%d] = %d \n",j+1, (*diff_weight1)[j]); 2143 } 2144 else 2145 { 2146 mpz_divexact(vec[j], vec[j], ggt); 2147 (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5); 2148 // Print("\n// vector[%d] = %d \n",j+1, (*diff_weight1)[j]); 2149 } 2150 /* 2151 if((*diff_weight1)[j] == 0) 2152 { 2153 kkk = kkk + 1; 2154 } 2155 */ 2156 } 2157 2158 2159 /* 2160 if(kkk > nRing - 1) 2161 { 2162 // diff_weight was reduced to zero 2163 // Print("\n // MwalkNextWeightCC: geaenderter Vector gleich Null! \n"); 2164 goto TEST_OVERFLOW; 2165 } 2166 */ 2167 2168 if(test_w_in_ConeCC(G,diff_weight1) != 0) 2169 { 2170 Print("\n// MwalkNextWeightCC: geaenderter vector liegt in Groebnerkegel! \n"); 2171 for (j=0; j<nRing; j++) 2172 { 2173 (*diff_weight)[j] = (*diff_weight1)[j]; 2174 } 2175 if(MivAbsMax(diff_weight) < 5) 2176 { 2177 checkRed = 1; 2178 goto SIMPLIFY_GCD; 2179 } 2180 } 2181 else 2182 { 2183 // Print("\n// MwalkNextWeightCC: geaenderter vector liegt nicht in Groebnerkegel! \n"); 2184 break; 2185 } 2194 (*diff_weight1)[j] = mpz_get_si(vec[j]); 2195 } 2196 while(test_w_in_ConeCC(G,diff_weight1)) 2197 { 2198 for(j=0; j<nRing; j++) 2199 { 2200 (*diff_weight)[j] = (*diff_weight1)[j]; 2201 mpz_set_si(vec[j], (*diff_weight)[j]); 2202 } 2203 for(j=0; j<nRing; j++) 2204 { 2205 (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5); 2206 } 2207 } 2208 if(MivAbsMax(diff_weight)>10000) 2209 { 2210 for(j=0; j<nRing; j++) 2211 { 2212 (*diff_weight1)[j] = (*diff_weight)[j]; 2213 } 2214 j = 0; 2215 while(test_w_in_ConeCC(G,diff_weight1)) 2216 { 2217 (*diff_weight)[j] = (*diff_weight1)[j]; 2218 mpz_set_si(vec[j], (*diff_weight)[j]); 2219 j = MivAbsMaxArg(diff_weight1); 2220 (*diff_weight1)[j] = floor(0.1*(*diff_weight1)[j] + 0.5); 2221 } 2222 goto SIMPLIFY_GCD; 2186 2223 } 2187 2224 … … 2222 2259 mpz_clear(t_null); 2223 2260 2224 2225 2226 2261 if(Overflow_Error == FALSE) 2227 2262 { 2228 2263 Overflow_Error = nError; 2229 2264 } 2230 rComplete(currRing);2231 for( kkk=0; kkk<IDELEMS(G);kkk++)2232 { 2233 poly p=G->m[ kkk];2265 rComplete(currRing); 2266 for(j=0; j<IDELEMS(G); j++) 2267 { 2268 poly p=G->m[j]; 2234 2269 while(p!=NULL) 2235 2270 { … … 2271 2306 } 2272 2307 2273 /************************************************************** 2308 /******************************************************************** 2274 2309 * define and execute a new ring which order is (a(vb),a(va),lp,C) * 2275 * ************************************************************ /2310 * ******************************************************************/ 2276 2311 static void VMrHomogeneous(intvec* va, intvec* vb) 2277 2312 { … … 2425 2460 //rChangeCurrRing(r); 2426 2461 } 2427 2462 //unused 2463 #if 0 2428 2464 static ring VMrDefault1(intvec* va) 2429 2465 { … … 2496 2532 return r; 2497 2533 } 2498 2534 #endif 2499 2535 /**************************************************************** 2500 2536 * define and execute a new ring with ordering (a(va),Wp(vb),C) * … … 3126 3162 else 3127 3163 { 3128 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung3164 rChangeCurrRing(VMrDefault(curr_weight)); 3129 3165 } 3130 3166 newRing = currRing; … … 3882 3918 else 3883 3919 { 3884 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung3920 rChangeCurrRing(VMrDefault(curr_weight)); 3885 3921 } 3886 3922 newRing = currRing; … … 4143 4179 else 4144 4180 { 4145 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung4181 rChangeCurrRing(VMrDefault(curr_weight)); 4146 4182 } 4147 4183 newRing = currRing; … … 4285 4321 intvec* Xivlp; 4286 4322 4287 #if 04288 /********************************4289 * compute a next weight vector *4290 ********************************/4291 static intvec* MWalkRandomNextWeight(ideal G, intvec* curr_weight, intvec* target_weight, int weight_rad, int pert_deg)4292 {4293 int i, weight_norm;4294 int nV = currRing->N;4295 intvec* next_weight2;4296 intvec* next_weight22 = new intvec(nV);4297 intvec* next_weight = MwalkNextWeightCC(curr_weight,target_weight, G);4298 if(MivComp(next_weight, target_weight) == 1)4299 {4300 return(next_weight);4301 }4302 else4303 {4304 //compute a perturbed next weight vector "next_weight1"4305 intvec* next_weight1 = MkInterRedNextWeight(MPertVectors(G, MivMatrixOrder(curr_weight), pert_deg), target_weight, G);4306 //Print("\n // size of next_weight1 = %d", sizeof((*next_weight1)));4307 4308 //compute a random next weight vector "next_weight2"4309 while(1)4310 {4311 weight_norm = 0;4312 while(weight_norm == 0)4313 {4314 for(i=0; i<nV; i++)4315 {4316 //Print("\n// next_weight[%d] = %d", i, (*next_weight)[i]);4317 (*next_weight22)[i] = rand() % 60000 - 30000;4318 weight_norm = weight_norm + (*next_weight22)[i]*(*next_weight22)[i];4319 }4320 weight_norm = 1 + floor(sqrt(weight_norm));4321 }4322 4323 for(i=nV-1; i>=0; i--)4324 {4325 if((*next_weight22)[i] < 0)4326 {4327 (*next_weight22)[i] = 1 + (*curr_weight)[i] + floor(weight_rad*(*next_weight22)[i]/weight_norm);4328 }4329 else4330 {4331 (*next_weight22)[i] = (*curr_weight)[i] + floor(weight_rad*(*next_weight22)[i]/weight_norm);4332 }4333 //Print("\n// next_weight22[%d] = %d", i, (*next_weight22)[i]);4334 }4335 4336 if(test_w_in_ConeCC(G, next_weight22) == 1)4337 {4338 //Print("\n//MWalkRandomNextWeight: next_weight2 im Kegel\n");4339 next_weight2 = MkInterRedNextWeight(next_weight22, target_weight, G);4340 delete next_weight22;4341 break;4342 }4343 }4344 intvec* result = new intvec(nV);4345 ideal G_test = MwalkInitialForm(G, next_weight);4346 ideal G_test1 = MwalkInitialForm(G, next_weight1);4347 ideal G_test2 = MwalkInitialForm(G, next_weight2);4348 4349 // compare next_weights4350 if(IDELEMS(G_test1) < IDELEMS(G_test))4351 {4352 if(IDELEMS(G_test2) <= IDELEMS(G_test1)) // |G_test2| <= |G_test1| < |G_test|4353 {4354 for(i=0; i<nV; i++)4355 {4356 (*result)[i] = (*next_weight2)[i];4357 }4358 }4359 else // |G_test1| < |G_test|, |G_test1| < |G_test2|4360 {4361 for(i=0; i<nV; i++)4362 {4363 (*result)[i] = (*next_weight1)[i];4364 }4365 }4366 }4367 else4368 {4369 if(IDELEMS(G_test2) <= IDELEMS(G_test)) // |G_test2| <= |G_test| <= |G_test1|4370 {4371 for(i=0; i<nV; i++)4372 {4373 (*result)[i] = (*next_weight2)[i];4374 }4375 }4376 else // |G_test| <= |G_test1|, |G_test| < |G_test2|4377 {4378 for(i=0; i<nV; i++)4379 {4380 (*result)[i] = (*next_weight)[i];4381 }4382 }4383 }4384 delete next_weight;4385 delete next_weight1;4386 idDelete(&G_test);4387 idDelete(&G_test1);4388 idDelete(&G_test2);4389 if(test_w_in_ConeCC(G, result) == 1)4390 {4391 delete next_weight2;4392 return result;4393 }4394 else4395 {4396 delete result;4397 return next_weight2;4398 }4399 }4400 }4401 #endif4402 4323 4403 4324 /******************************** … … 4414 4335 4415 4336 //compute a perturbed next weight vector "next_weight1" 4416 //intvec* next_weight1 = MkInterRedNextWeight(MPertVectors(G,MivMatrixOrderRefine(curr_weight,target_weight),pert_deg),target_weight,G);4417 4337 intvec* next_weight1 =MkInterRedNextWeight(curr_weight,target_weight,G); 4418 4338 //compute a random next weight vector "next_weight2" … … 4443 4363 { 4444 4364 next_weight2 = MkInterRedNextWeight(next_weight22,target_weight,G); 4365 if(MivAbsMax(next_weight2)>1147483647) 4366 { 4367 for(i=0; i<nV; i++) 4368 { 4369 (*next_weight22)[i] = (*next_weight2)[i]; 4370 } 4371 i = 0; 4372 while(test_w_in_ConeCC(G,next_weight22)) 4373 { 4374 (*next_weight2)[i] = (*next_weight22)[i]; 4375 i = MivAbsMaxArg(next_weight22); 4376 (*next_weight22)[i] = floor(0.1*(*next_weight22)[i] + 0.5); 4377 } 4378 } 4445 4379 delete next_weight22; 4446 4380 break; … … 4573 4507 else 4574 4508 { 4575 rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung4509 rChangeCurrRing(VMrDefault(orig_target_weight)); 4576 4510 } 4577 4511 TargetRing = currRing; … … 4644 4578 else 4645 4579 { 4646 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung4580 rChangeCurrRing(VMrDefault(curr_weight)); 4647 4581 } 4648 4582 newRing = currRing; … … 4753 4687 else 4754 4688 { 4755 rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung4689 rChangeCurrRing(VMrDefault(orig_target_weight)); 4756 4690 } 4757 4691 F1 = idrMoveR(G, newRing,currRing); … … 4784 4718 else 4785 4719 { 4786 rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung4720 rChangeCurrRing(VMrDefault(orig_target_weight)); 4787 4721 } 4788 4722 KSTD_Finish: … … 4882 4816 tim = clock(); 4883 4817 /* 4884 Print("\n// **** Gr ï¿œbnerwalk took %d steps and ", nwalk);4818 Print("\n// **** Groebnerwalk took %d steps and ", nwalk); 4885 4819 PrintS("\n// **** call the rec. Pert. Walk to compute a red GB of:"); 4886 4820 idElements(Gomega, "G_omega"); … … 4912 4846 oldRing = currRing; 4913 4847 4914 / * create a new ring newRing */4848 // create a new ring newRing 4915 4849 if (rParameter(currRing) != NULL) 4916 4850 { … … 4919 4853 else 4920 4854 { 4921 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung4855 rChangeCurrRing(VMrDefault(curr_weight)); 4922 4856 } 4923 4857 newRing = currRing; … … 4945 4879 else 4946 4880 { 4947 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung4881 rChangeCurrRing(VMrDefault(curr_weight)); 4948 4882 } 4949 4883 newRing = currRing; … … 4957 4891 M=kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,curr_weight); 4958 4892 delete hilb_func; 4959 #endif // BUCHBERGER_ALG4893 #endif 4960 4894 tstd = tstd + clock() - to; 4961 4895 … … 4966 4900 4967 4901 to = clock(); 4968 // compute a representation of the generators of submod (M) with respect to those of mod (Gomega). Gomega is a reduced Groebner basis w.r.t. the current ring. 4902 // compute a representation of the generators of submod (M) with respect 4903 // to those of mod (Gomega). 4904 // Gomega is a reduced Groebner basis w.r.t. the current ring. 4969 4905 F = MLifttwoIdeal(Gomega2, M1, G); 4970 4906 tlift = tlift + clock() - to; … … 5016 4952 else 5017 4953 { 5018 rChangeCurrRing(VMrDefault(target_weight)); // Aenderung4954 rChangeCurrRing(VMrDefault(target_weight)); 5019 4955 } 5020 4956 F1 = idrMoveR(G, newRing,currRing); … … 5063 4999 * THE GROEBNER WALK ALGORITHM * 5064 5000 *******************************/ 5065 ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M, ring baseRing) 5001 ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M, 5002 ring baseRing, int reduction, int printout) 5066 5003 { 5067 BITSET save1 = si_opt_1; // save current options 5068 //si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis 5069 //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions 5070 //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB)); 5004 // save current options 5005 BITSET save1 = si_opt_1; 5006 if(reduction == 0) 5007 { 5008 // no reduced Groebner basis 5009 si_opt_1 &= (~Sy_bit(OPT_REDSB)); 5010 // not tail reductions 5011 //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); 5012 } 5071 5013 Set_Error(FALSE); 5072 5014 Overflow_Error = FALSE; … … 5109 5051 #endif 5110 5052 rComplete(currRing); 5111 #ifdef CHECK_IDEAL_MWALK 5112 idString(Go,"Go"); 5113 #endif 5053 //#ifdef CHECK_IDEAL_MWALK 5054 if(printout > 2) 5055 { 5056 idString(Go,"//** Mwalk: Go"); 5057 } 5058 //#endif 5114 5059 #ifdef TIME_TEST 5115 5060 to = clock(); 5116 5061 #endif 5117 if(orig_M->length() == nV) 5118 { 5119 newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp) 5120 } 5121 else 5122 { 5123 newRing = VMatrDefault(orig_M); 5124 } 5062 if(orig_M->length() == nV) 5063 { 5064 // define a new ring with ordering "(a(curr_weight),lp) 5065 newRing = VMrDefault(curr_weight); 5066 } 5067 else 5068 { 5069 newRing = VMatrDefault(orig_M); 5070 } 5125 5071 rChangeCurrRing(newRing); 5126 5072 ideal G = MstdCC(idrMoveR(Go,baseRing,currRing)); … … 5138 5084 to = clock(); 5139 5085 #endif 5140 #ifdef CHECK_IDEAL_MWALK 5141 idString(G,"G"); 5142 #endif 5143 Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector" 5086 //#ifdef CHECK_IDEAL_MWALK 5087 if(printout > 2) 5088 { 5089 idString(G,"//** Mwalk: G"); 5090 } 5091 //#endif 5092 // compute an initial form ideal of <G> w.r.t. "curr_vector" 5093 Gomega = MwalkInitialForm(G, curr_weight); 5144 5094 #ifdef TIME_TEST 5145 tif = tif + clock()-to; //time for computing initial form ideal 5146 #endif 5147 #ifdef CHECK_IDEAL_MWALK 5148 idString(Gomega,"Gomega"); 5149 #endif 5095 //time for computing initial form ideal 5096 tif = tif + clock()-to; 5097 #endif 5098 //#ifdef CHECK_IDEAL_MWALK 5099 if(printout > 1) 5100 { 5101 idString(Gomega,"//** Mwalk: Gomega"); 5102 } 5103 //#endif 5150 5104 #ifndef BUCHBERGER_ALG 5151 5105 if(isNolVector(curr_weight) == 0) … … 5162 5116 if(orig_M->length() == nV) 5163 5117 { 5164 newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp) 5118 // define a new ring with ordering "(a(curr_weight),lp) 5119 newRing = VMrDefault(curr_weight); 5165 5120 } 5166 5121 else … … 5173 5128 if(target_M->length() == nV) 5174 5129 { 5175 newRing = VMrRefine(curr_weight,target_weight); //define a new ring with ordering "(a(curr_weight),Wp(target_weight))" 5130 //define a new ring with ordering "(a(curr_weight),Wp(target_weight))" 5131 newRing = VMrRefine(curr_weight,target_weight); 5176 5132 } 5177 5133 else 5178 5134 { 5135 //define a new ring with matrix ordering 5179 5136 newRing = VMatrRefine(target_M,curr_weight); 5180 5137 } … … 5197 5154 #endif 5198 5155 idSkipZeroes(M); 5199 #ifdef CHECK_IDEAL_MWALK 5200 PrintS("\n//** Mwalk: computed M.\n"); 5201 idString(M, "M"); 5202 #endif 5156 //#ifdef CHECK_IDEAL_MWALK 5157 if(printout > 2) 5158 { 5159 idString(M, "//** Mwalk: M"); 5160 } 5161 //#endif 5203 5162 //change the ring to baseRing 5204 5163 rChangeCurrRing(baseRing); … … 5210 5169 to = clock(); 5211 5170 #endif 5212 // compute a representation of the generators of submod (M) with respect to those of mod (Gomega), where Gomega is a reduced Groebner basis w.r.t. the current ring 5171 // compute a representation of the generators of submod (M) with respect to those of mod (Gomega), 5172 // where Gomega is a reduced Groebner basis w.r.t. the current ring 5213 5173 F = MLifttwoIdeal(Gomega2, M1, G); 5214 5174 #ifdef TIME_TEST 5215 5175 tlift = tlift + clock() - to; 5216 5176 #endif 5217 #ifdef CHECK_IDEAL_MWALK 5218 idString(F, "F"); 5219 #endif 5177 //#ifdef CHECK_IDEAL_MWALK 5178 if(printout > 2) 5179 { 5180 idString(F, "//** Mwalk: F"); 5181 } 5182 //#endif 5220 5183 idDelete(&Gomega2); 5221 5184 idDelete(&M1); … … 5227 5190 to = clock(); 5228 5191 #endif 5229 //G = kStd(F1,NULL,testHomog,NULL,NULL,0,0,NULL); 5192 5230 5193 #ifdef TIME_TEST 5231 5194 tstd = tstd + clock() - to; 5232 5195 #endif 5233 5196 idSkipZeroes(G); 5234 #ifdef CHECK_IDEAL_MWALK 5235 idString(G, "G"); 5236 #endif 5197 //#ifdef CHECK_IDEAL_MWALK 5198 if(printout > 2) 5199 { 5200 idString(G, "//** Mwalk: G"); 5201 } 5202 //#endif 5237 5203 #ifdef TIME_TEST 5238 5204 to = clock(); … … 5242 5208 tnw = tnw + clock() - to; 5243 5209 #endif 5244 #ifdef PRINT_VECTORS 5245 MivString(curr_weight, target_weight, next_weight); 5246 #endif 5247 if(MivComp(next_weight, ivNull) == 1 || MivComp(target_weight,curr_weight) == 1)// || test_w_in_ConeCC(G, target_weight) == 1 || MivComp(next_weight,curr_weight) == 1) 5248 { 5249 #ifdef CHECK_IDEAL_MWALK 5250 PrintS("\n//** Mwalk: entering last cone.\n"); 5251 #endif 5210 //#ifdef PRINT_VECTORS 5211 if(printout > 0) 5212 { 5213 MivString(curr_weight, target_weight, next_weight); 5214 } 5215 //#endif 5216 if(MivComp(next_weight, ivNull) == 1 || MivComp(target_weight,curr_weight) == 1 || test_w_in_ConeCC(G, target_weight) == 1) 5217 { 5218 //#ifdef CHECK_IDEAL_MWALK 5219 if(printout > 0) 5220 { 5221 PrintS("\n//** Mwalk: entering last cone.\n"); 5222 } 5223 //#endif 5252 5224 Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector" 5253 5225 if(target_M->length() == nV) … … 5262 5234 Gomega1 = idrMoveR(Gomega, baseRing,currRing); 5263 5235 idDelete(&Gomega); 5264 #ifdef CHECK_IDEAL_MWALK 5265 idString(Gomega1, "Gomega"); 5266 #endif 5236 //#ifdef CHECK_IDEAL_MWALK 5237 if(printout > 1) 5238 { 5239 idString(Gomega1, "//** Mwalk: Gomega"); 5240 } 5241 //#endif 5267 5242 M = kStd(Gomega1,NULL,testHomog,NULL,NULL,0,0,NULL); 5268 #ifdef CHECK_IDEAL_MWALK 5269 idString(M,"M"); 5270 #endif 5243 //#ifdef CHECK_IDEAL_MWALK 5244 if(printout > 1) 5245 { 5246 idString(M,"//** Mwalk: M"); 5247 } 5248 //#endif 5271 5249 rChangeCurrRing(baseRing); 5272 5250 M1 = idrMoveR(M, newRing,currRing); … … 5275 5253 idDelete(&Gomega1); 5276 5254 F = MLifttwoIdeal(Gomega2, M1, G); 5277 #ifdef CHECK_IDEAL_MWALK 5278 idString(F,"F"); 5279 #endif 5255 //#ifdef CHECK_IDEAL_MWALK 5256 if(printout > 2) 5257 { 5258 idString(F,"//** Mwalk: F"); 5259 } 5260 //#endif 5280 5261 idDelete(&Gomega2); 5281 5262 idDelete(&M1); … … 5289 5270 to = clock(); 5290 5271 #endif 5291 // if(si_opt_1 == (Sy_bit(OPT_REDSB))) 5292 // { 5293 G = kInterRedCC(G,NULL); //reduce the Groebner basis <G> w.r.t. currRing, if option(redSB) is set 5294 // } 5272 //interreduce the Groebner basis <G> w.r.t. currRing 5273 G = kInterRedCC(G,NULL); 5295 5274 #ifdef TIME_TEST 5296 5275 tred = tred + clock() - to; … … 5299 5278 delete next_weight; 5300 5279 break; 5301 #ifdef CHECK_IDEAL_MWALK 5302 PrintS("\n//** Mwalk: last cone.\n"); 5303 #endif 5304 } 5305 #ifdef CHECK_IDEAL_MWALK 5306 PrintS("\n//** Mwalk: update weight vectors.\n"); 5307 #endif 5280 } 5308 5281 for(i=nV-1; i>=0; i--) 5309 5282 { … … 5316 5289 ideal result = idrMoveR(G,baseRing,currRing); 5317 5290 idDelete(&G); 5318 /*#ifdef CHECK_IDEAL_MWALK5319 pDelete(&p);5320 #endif*/5321 5291 delete tmp_weight; 5322 5292 delete ivNull; … … 5326 5296 #endif 5327 5297 #ifdef TIME_TEST 5328 Print("\n//** Mwalk: Groebner Walk took %d steps.\n", nstep);5329 5298 TimeString(tinput, tostd, tif, tstd, tlift, tred, tnw, nstep); 5330 Print("\n//** Mwalk: Ergebnis.\n");5331 5299 //Print("\n// pSetm_Error = (%d)", ErrorCheck()); 5332 5300 //Print("\n// Overflow_Error? (%d)\n", Overflow_Error); 5333 5301 #endif 5302 Print("\n//** Mwalk: Groebner Walk took %d steps.\n", nstep); 5334 5303 return(result); 5335 5304 } 5336 5305 5337 // 07.11.20125338 // THE RANDOM WALK ALGORITHM ideal Go, intvec* orig_M, intvec* target_M, ring baseRing 5339 ideal Mrwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int pert_deg, ring baseRing)5306 // THE RANDOM WALK ALGORITHM 5307 ideal Mrwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int pert_deg, 5308 int reduction, int printout) 5340 5309 { 5341 5310 BITSET save1 = si_opt_1; // save current options 5342 //si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis 5343 //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions 5344 //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB)); 5311 if(reduction == 0) 5312 { 5313 si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis 5314 //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions 5315 //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB)); 5316 } 5345 5317 Set_Error(FALSE); 5346 5318 Overflow_Error = FALSE; … … 5352 5324 #endif 5353 5325 nstep=0; 5354 int i, nwalk,endwalks = 0;5355 int nV = baseRing->N;5326 int i,polylength,nwalk,endwalks = 0; 5327 int nV = currRing->N; 5356 5328 5357 5329 ideal Gomega, M, F, Gomega1, Gomega2, M1; //, F1; 5358 5330 ring newRing; 5359 ring XXRing = baseRing; 5331 ring baseRing = currRing; 5332 ring XXRing = currRing; 5360 5333 intvec* ivNull = new intvec(nV); 5361 5334 intvec* curr_weight = new intvec(nV); … … 5363 5336 intvec* exivlp = Mivlp(nV); 5364 5337 intvec* tmp_weight = new intvec(nV); 5338 intvec* next_weight= new intvec(nV); 5365 5339 for(i=0; i<nV; i++) 5366 5340 { … … 5383 5357 #endif 5384 5358 rComplete(currRing); 5385 #ifdef CHECK_IDEAL_MWALK5386 idString(Go,"Go");5387 #endif5388 5359 #ifdef TIME_TEST 5389 5360 to = clock(); 5390 5361 #endif 5391 5392 5393 5394 5395 5396 5397 5398 5362 if(orig_M->length() == nV) 5363 { 5364 newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp) 5365 } 5366 else 5367 { 5368 newRing = VMatrDefault(orig_M); 5369 } 5399 5370 rChangeCurrRing(newRing); 5400 5371 ideal G = MstdCC(idrMoveR(Go,baseRing,currRing)); … … 5412 5383 to = clock(); 5413 5384 #endif 5414 #ifdef CHECK_IDEAL_MWALK 5415 idString(G,"G"); 5416 #endif 5385 //#ifdef CHECK_IDEAL_MWALK 5386 if(printout > 2) 5387 { 5388 idString(G,"//** Mrwalk: G"); 5389 } 5390 //#endif 5417 5391 Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector" 5392 //polylength = 1 if there is a polynomial in Gomega with at least 3 monomials and 0 otherwise 5393 polylength = lengthpoly(Gomega); 5418 5394 #ifdef TIME_TEST 5419 5395 tif = tif + clock()-to; //time for computing initial form ideal 5420 5396 #endif 5421 #ifdef CHECK_IDEAL_MWALK 5422 idString(Gomega,"Gomega"); 5423 #endif 5397 //#ifdef CHECK_IDEAL_MWALK 5398 if(printout > 1) 5399 { 5400 idString(Gomega,"//** Mrwalk: Gomega"); 5401 } 5402 //#endif 5424 5403 #ifndef BUCHBERGER_ALG 5425 5404 if(isNolVector(curr_weight) == 0) … … 5471 5450 #endif 5472 5451 idSkipZeroes(M); 5473 #ifdef CHECK_IDEAL_MWALK 5474 PrintS("\n//** Mwalk: computed M.\n"); 5475 idString(M, "M"); 5476 #endif 5452 //#ifdef CHECK_IDEAL_MWALK 5453 if(printout > 2) 5454 { 5455 idString(M, "//** Mrwalk: M"); 5456 } 5457 //#endif 5477 5458 //change the ring to baseRing 5478 5459 rChangeCurrRing(baseRing); … … 5484 5465 to = clock(); 5485 5466 #endif 5486 // compute a representation of the generators of submod (M) with respect to those of mod (Gomega), where Gomega is a reduced Groebner basis w.r.t. the current ring 5467 // compute a representation of the generators of submod (M) with respect to those of mod (Gomega), 5468 // where Gomega is a reduced Groebner basis w.r.t. the current ring 5487 5469 F = MLifttwoIdeal(Gomega2, M1, G); 5488 5470 #ifdef TIME_TEST 5489 5471 tlift = tlift + clock() - to; 5490 5472 #endif 5491 #ifdef CHECK_IDEAL_MWALK 5492 idString(F, "F"); 5493 #endif 5473 //#ifdef CHECK_IDEAL_MWALK 5474 if(printout > 2) 5475 { 5476 idString(F, "//** Mrwalk: F"); 5477 } 5478 //#endif 5494 5479 idDelete(&Gomega2); 5495 5480 idDelete(&M1); … … 5500 5485 #ifdef TIME_TEST 5501 5486 to = clock(); 5502 #endif5503 //G = kStd(F1,NULL,testHomog,NULL,NULL,0,0,NULL);5504 #ifdef TIME_TEST5505 5487 tstd = tstd + clock() - to; 5506 5488 #endif 5507 5489 idSkipZeroes(G); 5508 #ifdef CHECK_IDEAL_MWALK 5509 idString(G, "G"); 5510 #endif 5490 //#ifdef CHECK_IDEAL_MWALK 5491 if(printout > 2) 5492 { 5493 idString(G, "//** Mrwalk: G"); 5494 } 5495 //#endif 5511 5496 #ifdef TIME_TEST 5512 5497 to = clock(); 5513 5498 #endif 5514 intvec* next_weight = MWalkRandomNextWeight(G, curr_weight, target_weight, weight_rad, pert_deg);//next_weight = MwalkNextWeightCC(curr_weight,target_weight,G); 5499 next_weight = MwalkNextWeightCC(curr_weight,target_weight,G); 5500 if(polylength > 0) 5501 { 5502 //there is a polynomial in Gomega with at least 3 monomials, 5503 //low-dimensional facet of the cone 5504 delete next_weight; 5505 next_weight = MWalkRandomNextWeight(G, curr_weight, target_weight, weight_rad, pert_deg); 5506 } 5515 5507 #ifdef TIME_TEST 5516 5508 tnw = tnw + clock() - to; 5517 5509 #endif 5518 #ifdef PRINT_VECTORS 5519 MivString(curr_weight, target_weight, next_weight); 5520 #endif 5510 //#ifdef PRINT_VECTORS 5511 if(printout > 0) 5512 { 5513 MivString(curr_weight, target_weight, next_weight); 5514 } 5515 //#endif 5521 5516 if(MivComp(next_weight, ivNull) == 1 || MivComp(target_weight,curr_weight) == 1)// || test_w_in_ConeCC(G, target_weight) == 1 || MivComp(next_weight,curr_weight) == 1) 5522 5517 { … … 5525 5520 #endif 5526 5521 Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector" 5522 //#ifdef CHECK_IDEAL_MWALK 5523 if(printout > 1) 5524 { 5525 idString(Gomega, "//** Mrwalk: Gomega"); 5526 } 5527 //#endif 5527 5528 if(target_M->length() == nV) 5528 5529 { … … 5536 5537 Gomega1 = idrMoveR(Gomega, baseRing,currRing); 5537 5538 idDelete(&Gomega); 5538 #ifdef CHECK_IDEAL_MWALK5539 idString(Gomega1, "Gomega");5540 #endif5541 5539 M = kStd(Gomega1,NULL,testHomog,NULL,NULL,0,0,NULL); 5542 #ifdef CHECK_IDEAL_MWALK 5543 idString(M,"M"); 5544 #endif 5540 //#ifdef CHECK_IDEAL_MWALK 5541 if(printout > 2) 5542 { 5543 idString(M,"//** Mrwalk: M"); 5544 } 5545 //#endif 5545 5546 rChangeCurrRing(baseRing); 5546 5547 M1 = idrMoveR(M, newRing,currRing); … … 5549 5550 idDelete(&Gomega1); 5550 5551 F = MLifttwoIdeal(Gomega2, M1, G); 5551 #ifdef CHECK_IDEAL_MWALK5552 idString(F,"F");5553 #endif5554 5552 idDelete(&Gomega2); 5555 5553 idDelete(&M1); … … 5558 5556 idDelete(&F); 5559 5557 baseRing = currRing; 5560 si_opt_1 = save1; //set original options, e. g. option(RedSB)5561 5558 idSkipZeroes(G); 5562 5559 #ifdef TIME_TEST 5563 5560 to = clock(); 5564 5561 #endif 5565 // if(si_opt_1 == (Sy_bit(OPT_REDSB))) 5566 // { 5567 //G = kInterRedCC(G,NULL); //reduce the Groebner basis <G> w.r.t. currRing, if option(redSB) is set 5568 // } 5562 //#ifdef CHECK_IDEAL_MWALK 5563 if(printout > 2) 5564 { 5565 idString(G,"//** Mrwalk: G"); 5566 } 5567 /*#endif 5568 if(si_opt_1 == (Sy_bit(OPT_REDSB))) 5569 {*/ 5570 G = kInterRedCC(G,NULL); //interreduce the Groebner basis <G> w.r.t. currRing 5571 // } 5569 5572 #ifdef TIME_TEST 5570 5573 tred = tred + clock() - to; … … 5573 5576 delete next_weight; 5574 5577 break; 5575 #ifdef CHECK_IDEAL_MWALK 5576 PrintS("\n//** Mwalk: last cone.\n"); 5577 #endif 5578 } 5579 #ifdef CHECK_IDEAL_MWALK 5580 PrintS("\n//** Mwalk: update weight vectors.\n"); 5581 #endif 5578 } 5582 5579 for(i=nV-1; i>=0; i--) 5583 5580 { … … 5587 5584 delete next_weight; 5588 5585 } 5586 baseRing = currRing; 5589 5587 rChangeCurrRing(XXRing); 5590 5588 ideal result = idrMoveR(G,baseRing,currRing); 5591 5589 idDelete(&G); 5592 /*#ifdef CHECK_IDEAL_MWALK 5593 pDelete(&p); 5594 #endif*/ 5590 si_opt_1 = save1; //set original options, e. g. option(RedSB) 5595 5591 delete tmp_weight; 5596 5592 delete ivNull; … … 5599 5595 delete last_omega; 5600 5596 #endif 5597 Print("\n//** Mrwalk: Groebner Walk took %d steps.\n", nstep); 5601 5598 #ifdef TIME_TEST 5602 Print("\n//** Mwalk: Groebner Walk took %d steps.\n", nstep);5603 5599 TimeString(tinput, tostd, tif, tstd, tlift, tred, tnw, nstep); 5604 Print("\n//** Mwalk: Ergebnis.\n");5605 5600 //Print("\n// pSetm_Error = (%d)", ErrorCheck()); 5606 5601 //Print("\n// Overflow_Error? (%d)\n", Overflow_Error); … … 5749 5744 // use kStd, if nP = 0, else call LastGB 5750 5745 ideal Mpwalk(ideal Go, int op_deg, int tp_deg,intvec* curr_weight, 5751 intvec* target_weight, int nP )5746 intvec* target_weight, int nP, int reduction, int printout) 5752 5747 { 5748 BITSET save1 = si_opt_1; // save current options 5749 if(reduction == 0) 5750 { 5751 si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis 5752 //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions 5753 //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB)); 5754 } 5753 5755 Set_Error(FALSE ); 5754 5756 Overflow_Error = FALSE; … … 5788 5790 ring XXRing = currRing; 5789 5791 5790 5791 5792 to = clock(); 5792 / * perturbs the original vector */5793 // perturbs the original vector 5793 5794 if(MivComp(curr_weight, iv_dp) == 1) //rOrdStr(currRing) := "dp" 5794 5795 { … … 5807 5808 DefRingPar(curr_weight); 5808 5809 else 5809 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 15810 rChangeCurrRing(VMrDefault(curr_weight)); 5810 5811 5811 5812 G = idrMoveR(Go, XXRing,currRing); … … 5822 5823 ring HelpRing = currRing; 5823 5824 5824 / * perturbs the target weight vector */5825 // perturbs the target weight vector 5825 5826 if(tp_deg > 1 && tp_deg <= nV) 5826 5827 { … … 5828 5829 DefRingPar(target_weight); 5829 5830 else 5830 rChangeCurrRing(VMrDefault(target_weight)); // Aenderung 25831 rChangeCurrRing(VMrDefault(target_weight)); 5831 5832 5832 5833 TargetRing = currRing; … … 5850 5851 G = idrMoveR(ssG, TargetRing,currRing); 5851 5852 } 5852 /* 5853 Print("\n// Perturbationwalkalg. vom Gradpaar (%d,%d):",op_deg,tp_deg); 5854 ivString(curr_weight, "new sigma"); 5855 ivString(target_weight, "new tau"); 5856 */ 5853 if(printout > 0) 5854 { 5855 Print("\n//** Mpwalk: Perturbation Walk of degree (%d,%d):",op_deg,tp_deg); 5856 ivString(curr_weight, "//** Mpwalk: new current weight"); 5857 ivString(target_weight, "//** Mpwalk: new target weight"); 5858 } 5857 5859 while(1) 5858 5860 { … … 5862 5864 "curr_weight" */ 5863 5865 Gomega = MwalkInitialForm(G, curr_weight); 5864 5866 //#ifdef CHECK_IDEAL_MWALK 5867 if(printout > 1) 5868 { 5869 idString(Gomega,"//** Mpwalk: Gomega"); 5870 } 5871 //#endif 5865 5872 5866 5873 #ifdef ENDWALKS 5867 if(endwalks == 1){ 5874 if(endwalks == 1) 5875 { 5868 5876 Print("\n// ring r%d = %s;\n", nstep, rString(currRing)); 5869 5877 idElements(G, "G"); 5870 // idElements(Gomega, "Gw");5871 5878 headidString(G, "G"); 5872 //headidString(Gomega, "Gw");5873 5879 } 5874 5880 #endif … … 5889 5895 DefRingPar(curr_weight); 5890 5896 else 5891 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 35897 rChangeCurrRing(VMrDefault(curr_weight)); 5892 5898 5893 5899 newRing = currRing; … … 5916 5922 M=kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,curr_weight); 5917 5923 delete hilb_func; 5918 #endif // BUCHBERGER_ALG 5924 #endif 5925 //#ifdef CHECK_IDEAL_MWALK 5926 if(printout > 2) 5927 { 5928 idString(M,"//** Mpwalk: M"); 5929 } 5930 //#endif 5919 5931 5920 5932 if(endwalks == 1){ … … 5932 5944 M1 = idrMoveR(M, newRing,currRing); 5933 5945 Gomega2 = idrMoveR(Gomega1, newRing,currRing); 5934 5935 //if(endwalks==1) PrintS("\n// Lifting is working:..");5936 5946 5937 5947 to=clock(); … … 5945 5955 xtlift=clock()-to; 5946 5956 5957 //#ifdef CHECK_IDEAL_MWALK 5958 if(printout > 2) 5959 { 5960 idString(F,"//** Mpwalk: F"); 5961 } 5962 //#endif 5963 5947 5964 idDelete(&M1); 5948 5965 idDelete(&Gomega2); … … 5952 5969 rChangeCurrRing(newRing); 5953 5970 F1 = idrMoveR(F, oldRing,currRing); 5954 5955 //if(endwalks==1)PrintS("\n// InterRed is working now:");5956 5971 5957 5972 to=clock(); … … 5969 5984 5970 5985 to=clock(); 5971 / * compute a next weight vector */5986 // compute a next weight vector 5972 5987 next_weight = MkInterRedNextWeight(curr_weight,target_weight, G); 5973 5988 tnw=tnw+clock()-to; 5974 #ifdef PRINT_VECTORS 5975 MivString(curr_weight, target_weight, next_weight); 5976 #endif 5989 //#ifdef PRINT_VECTORS 5990 if(printout > 2) 5991 { 5992 MivString(curr_weight, target_weight, next_weight); 5993 } 5994 //#endif 5977 5995 5978 5996 if(Overflow_Error == TRUE) … … 6012 6030 DefRingPar(orig_target); 6013 6031 else 6014 rChangeCurrRing(VMrDefault(orig_target)); //Aenderung6032 rChangeCurrRing(VMrDefault(orig_target)); 6015 6033 6016 6034 TargetRing=currRing; … … 6066 6084 Eresult = idrMoveR(G, newRing,currRing); 6067 6085 } 6086 si_opt_1 = save1; //set original options, e. g. option(RedSB) 6068 6087 delete ivNull; 6069 6088 if(tp_deg != 1) … … 6080 6099 tnw+xtnw); 6081 6100 6082 Print("\n// pSetm_Error = (%d)", ErrorCheck()); 6083 Print("\n// It took %d steps and Overflow_Error? (%d)\n", nstep, Overflow_Error); 6084 #endif 6101 //Print("\n// pSetm_Error = (%d)", ErrorCheck()); 6102 //Print("\n// It took %d steps and Overflow_Error? (%d)\n", nstep, Overflow_Error); 6103 #endif 6104 Print("\n//** Mpwalk: Perturbation Walk took %d steps.\n", nstep); 6105 return(Eresult); 6106 } 6107 6108 /******************************************************* 6109 * THE PERTURBATION WALK ALGORITHM WITH RANDOM ELEMENT * 6110 *******************************************************/ 6111 ideal Mprwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, 6112 int op_deg, int tp_deg, int nP, int reduction, int printout) 6113 { 6114 BITSET save1 = si_opt_1; // save current options 6115 if(reduction == 0) 6116 { 6117 si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis 6118 //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions 6119 //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB)); 6120 } 6121 Set_Error(FALSE); 6122 Overflow_Error = FALSE; 6123 //Print("// pSetm_Error = (%d)", ErrorCheck()); 6124 6125 clock_t tinput, tostd, tif=0, tstd=0, tlift=0, tred=0, tnw=0; 6126 xtextra=0; 6127 xtif=0; xtstd=0; xtlift=0; xtred=0; xtnw=0; 6128 tinput = clock(); 6129 6130 clock_t tim; 6131 6132 nstep = 0; 6133 int i, ntwC=1, ntestw=1, polylength, nV = currRing->N; 6134 int endwalks=0; 6135 6136 ideal Gomega, M, F, G, Gomega1, Gomega2, M1,F1,Eresult,ssG; 6137 ring newRing, oldRing, TargetRing; 6138 intvec* iv_M_dp; 6139 intvec* iv_M_lp; 6140 intvec* exivlp = Mivlp(nV); 6141 intvec* curr_weight = new intvec(nV); 6142 intvec* target_weight = new intvec(nV); 6143 for(i=0; i<nV; i++) 6144 { 6145 (*curr_weight)[i] = (*orig_M)[i]; 6146 (*target_weight)[i] = (*target_M)[i]; 6147 } 6148 intvec* orig_target = target_weight; 6149 intvec* pert_target_vector = target_weight; 6150 intvec* ivNull = new intvec(nV); 6151 intvec* iv_dp = MivUnit(nV);// define (1,1,...,1) 6152 #ifndef BUCHBERGER_ALG 6153 intvec* hilb_func; 6154 #endif 6155 intvec* next_weight; 6156 6157 // to avoid (1,0,...,0) as the target vector 6158 intvec* last_omega = new intvec(nV); 6159 for(i=nV-1; i>0; i--) 6160 (*last_omega)[i] = 1; 6161 (*last_omega)[0] = 10000; 6162 6163 ring XXRing = currRing; 6164 6165 to = clock(); 6166 // perturbs the original vector 6167 if(orig_M->length() == nV) 6168 { 6169 if(MivComp(curr_weight, iv_dp) == 1) //rOrdStr(currRing) := "dp" 6170 { 6171 G = MstdCC(Go); 6172 tostd = clock()-to; 6173 if(op_deg != 1) 6174 { 6175 iv_M_dp = MivMatrixOrderdp(nV); 6176 //ivString(iv_M_dp, "iv_M_dp"); 6177 curr_weight = MPertVectors(G, iv_M_dp, op_deg); 6178 } 6179 } 6180 else 6181 { 6182 //define ring order := (a(curr_weight),lp); 6183 if (rParameter(currRing) != NULL) 6184 DefRingPar(curr_weight); 6185 else 6186 rChangeCurrRing(VMrDefault(curr_weight)); 6187 6188 G = idrMoveR(Go, XXRing,currRing); 6189 G = MstdCC(G); 6190 tostd = clock()-to; 6191 if(op_deg != 1) 6192 { 6193 iv_M_dp = MivMatrixOrder(curr_weight); 6194 curr_weight = MPertVectors(G, iv_M_dp, op_deg); 6195 } 6196 } 6197 } 6198 else 6199 { 6200 rChangeCurrRing(VMatrDefault(orig_M)); 6201 G = idrMoveR(Go, XXRing,currRing); 6202 G = MstdCC(G); 6203 tostd = clock()-to; 6204 if(op_deg != 1) 6205 { 6206 curr_weight = MPertVectors(G, orig_M, op_deg); 6207 } 6208 } 6209 6210 delete iv_dp; 6211 if(op_deg != 1) delete iv_M_dp; 6212 6213 ring HelpRing = currRing; 6214 6215 // perturbs the target weight vector 6216 if(target_M->length() == nV) 6217 { 6218 if(tp_deg > 1 && tp_deg <= nV) 6219 { 6220 if (rParameter(currRing) != NULL) 6221 DefRingPar(target_weight); 6222 else 6223 rChangeCurrRing(VMrDefault(target_weight)); 6224 6225 TargetRing = currRing; 6226 ssG = idrMoveR(G,HelpRing,currRing); 6227 if(MivSame(target_weight, exivlp) == 1) 6228 { 6229 iv_M_lp = MivMatrixOrderlp(nV); 6230 //ivString(iv_M_lp, "iv_M_lp"); 6231 //target_weight = MPertVectorslp(ssG, iv_M_lp, tp_deg); 6232 target_weight = MPertVectors(ssG, iv_M_lp, tp_deg); 6233 } 6234 else 6235 { 6236 iv_M_lp = MivMatrixOrder(target_weight); 6237 //target_weight = MPertVectorslp(ssG, iv_M_lp, tp_deg); 6238 target_weight = MPertVectors(ssG, iv_M_lp, tp_deg); 6239 } 6240 delete iv_M_lp; 6241 pert_target_vector = target_weight; 6242 rChangeCurrRing(HelpRing); 6243 G = idrMoveR(ssG, TargetRing,currRing); 6244 } 6245 } 6246 else 6247 { 6248 if(tp_deg > 1 && tp_deg <= nV) 6249 { 6250 rChangeCurrRing(VMatrDefault(target_M)); 6251 TargetRing = currRing; 6252 ssG = idrMoveR(G,HelpRing,currRing); 6253 target_weight = MPertVectors(ssG, target_M, tp_deg); 6254 } 6255 } 6256 if(printout > 0) 6257 { 6258 Print("\n//** Mprwalk: Random Perturbation Walk of degree (%d,%d):",op_deg,tp_deg); 6259 ivString(curr_weight, "//** Mprwalk: new current weight"); 6260 ivString(target_weight, "//** Mprwalk: new target weight"); 6261 } 6262 while(1) 6263 { 6264 nstep ++; 6265 to = clock(); 6266 /* compute an initial form ideal of <G> w.r.t. the weight vector 6267 "curr_weight" */ 6268 Gomega = MwalkInitialForm(G, curr_weight); 6269 //#ifdef CHECK_IDEAL_MWALK 6270 if(printout > 1) 6271 { 6272 idString(Gomega,"//** Mprwalk: Gomega"); 6273 } 6274 //#endif 6275 polylength = lengthpoly(Gomega); 6276 #ifdef ENDWALKS 6277 if(endwalks == 1) 6278 { 6279 Print("\n// ring r%d = %s;\n", nstep, rString(currRing)); 6280 idElements(G, "G"); 6281 headidString(G, "G"); 6282 } 6283 #endif 6284 6285 tif = tif + clock()-to; 6286 6287 #ifndef BUCHBERGER_ALG 6288 if(isNolVector(curr_weight) == 0) 6289 hilb_func = hFirstSeries(Gomega,NULL,NULL,curr_weight,currRing); 6290 else 6291 hilb_func = hFirstSeries(Gomega,NULL,NULL,last_omega,currRing); 6292 #endif // BUCHBERGER_ALG 6293 6294 oldRing = currRing; 6295 6296 if(target_M->length() == nV) 6297 { 6298 // define a new ring with ordering "(a(curr_weight),lp) 6299 if (rParameter(currRing) != NULL) 6300 DefRingPar(curr_weight); 6301 else 6302 rChangeCurrRing(VMrDefault(curr_weight)); 6303 } 6304 else 6305 { 6306 rChangeCurrRing(VMatrRefine(target_M,curr_weight)); 6307 } 6308 newRing = currRing; 6309 Gomega1 = idrMoveR(Gomega, oldRing,currRing); 6310 6311 #ifdef ENDWALKS 6312 if(endwalks==1) 6313 { 6314 Print("\n// ring r%d = %s;\n", nstep, rString(currRing)); 6315 idElements(Gomega1, "Gw"); 6316 headidString(Gomega1, "headGw"); 6317 PrintS("\n// compute a rGB of Gw:\n"); 6318 6319 #ifndef BUCHBERGER_ALG 6320 ivString(hilb_func, "w"); 6321 #endif 6322 } 6323 #endif 6324 6325 tim = clock(); 6326 to = clock(); 6327 /* compute a reduced Groebner basis of <Gomega> w.r.t. "newRing" */ 6328 #ifdef BUCHBERGER_ALG 6329 M = MstdhomCC(Gomega1); 6330 #else 6331 M=kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,curr_weight); 6332 delete hilb_func; 6333 #endif 6334 //#ifdef CHECK_IDEAL_MWALK 6335 if(printout > 2) 6336 { 6337 idString(M,"//** Mprwalk: M"); 6338 } 6339 //#endif 6340 6341 if(endwalks == 1) 6342 { 6343 xtstd = xtstd+clock()-to; 6344 #ifdef ENDWALKS 6345 Print("\n// time for the last std(Gw) = %.2f sec\n", 6346 ((double) clock())/1000000 -((double)tim) /1000000); 6347 #endif 6348 } 6349 else 6350 tstd=tstd+clock()-to; 6351 6352 /* change the ring to oldRing */ 6353 rChangeCurrRing(oldRing); 6354 M1 = idrMoveR(M, newRing,currRing); 6355 Gomega2 = idrMoveR(Gomega1, newRing,currRing); 6356 6357 to=clock(); 6358 /* compute a representation of the generators of submod (M) 6359 with respect to those of mod (Gomega). 6360 Gomega is a reduced Groebner basis w.r.t. the current ring */ 6361 F = MLifttwoIdeal(Gomega2, M1, G); 6362 if(endwalks != 1) 6363 tlift = tlift+clock()-to; 6364 else 6365 xtlift=clock()-to; 6366 6367 //#ifdef CHECK_IDEAL_MWALK 6368 if(printout > 2) 6369 { 6370 idString(F,"//** Mprwalk: F"); 6371 } 6372 //#endif 6373 6374 idDelete(&M1); 6375 idDelete(&Gomega2); 6376 idDelete(&G); 6377 6378 /* change the ring to newRing */ 6379 rChangeCurrRing(newRing); 6380 F1 = idrMoveR(F, oldRing,currRing); 6381 6382 to=clock(); 6383 /* reduce the Groebner basis <G> w.r.t. new ring */ 6384 G = kInterRedCC(F1, NULL); 6385 if(endwalks != 1) 6386 tred = tred+clock()-to; 6387 else 6388 xtred=clock()-to; 6389 6390 idDelete(&F1); 6391 6392 if(endwalks == 1) 6393 break; 6394 6395 to=clock(); 6396 // compute a next weight vector 6397 next_weight = MkInterRedNextWeight(curr_weight,target_weight, G); 6398 if(polylength > 0) 6399 { 6400 //there is a polynomial in Gomega with at least 3 monomials, 6401 //low-dimensional facet of the cone 6402 delete next_weight; 6403 next_weight = MWalkRandomNextWeight(G, curr_weight, target_weight, weight_rad, op_deg); 6404 } 6405 tnw=tnw+clock()-to; 6406 //#ifdef PRINT_VECTORS 6407 if(printout > 2) 6408 { 6409 MivString(curr_weight, target_weight, next_weight); 6410 } 6411 //#endif 6412 6413 if(Overflow_Error == TRUE) 6414 { 6415 ntwC = 0; 6416 //ntestomega = 1; 6417 //Print("\n// ring r%d = %s;\n", nstep, rString(currRing)); 6418 //idElements(G, "G"); 6419 delete next_weight; 6420 goto FINISH_160302; 6421 } 6422 if(MivComp(next_weight, ivNull) == 1){ 6423 newRing = currRing; 6424 delete next_weight; 6425 //Print("\n// ring r%d = %s;\n", nstep, rString(currRing)); 6426 break; 6427 } 6428 if(MivComp(next_weight, target_weight) == 1) 6429 endwalks = 1; 6430 6431 for(i=nV-1; i>=0; i--) 6432 (*curr_weight)[i] = (*next_weight)[i]; 6433 6434 delete next_weight; 6435 }//while 6436 6437 if(tp_deg != 1) 6438 { 6439 FINISH_160302: 6440 if(target_M->length() == nV) 6441 { 6442 if(MivSame(orig_target, exivlp) == 1) 6443 if (rParameter(currRing) != NULL) 6444 DefRingParlp(); 6445 else 6446 VMrDefaultlp(); 6447 else 6448 if (rParameter(currRing) != NULL) 6449 DefRingPar(orig_target); 6450 else 6451 rChangeCurrRing(VMrDefault(orig_target)); 6452 } 6453 else 6454 { 6455 rChangeCurrRing(VMatrDefault(target_M)); 6456 } 6457 TargetRing=currRing; 6458 F1 = idrMoveR(G, newRing,currRing); 6459 #ifdef CHECK_IDEAL 6460 headidString(G, "G"); 6461 #endif 6462 6463 // check whether the pertubed target vector stays in the correct cone 6464 if(ntwC != 0){ 6465 ntestw = test_w_in_ConeCC(F1, pert_target_vector); 6466 } 6467 6468 if( ntestw != 1 || ntwC == 0) 6469 { 6470 /* 6471 if(ntestw != 1){ 6472 ivString(pert_target_vector, "tau"); 6473 PrintS("\n// ** perturbed target vector doesn't stay in cone!!"); 6474 Print("\n// ring r%d = %s;\n", nstep, rString(currRing)); 6475 idElements(F1, "G"); 6476 } 6477 */ 6478 // LastGB is "better" than the kStd subroutine 6479 to=clock(); 6480 ideal eF1; 6481 if(nP == 0 || tp_deg == 1 || MivSame(orig_target, exivlp) != 1 || target_M->length() != nV){ 6482 // PrintS("\n// ** calls \"std\" to compute a GB"); 6483 eF1 = MstdCC(F1); 6484 idDelete(&F1); 6485 } 6486 else { 6487 // PrintS("\n// ** calls \"LastGB\" to compute a GB"); 6488 rChangeCurrRing(newRing); 6489 ideal F2 = idrMoveR(F1, TargetRing,currRing); 6490 eF1 = LastGB(F2, curr_weight, tp_deg-1); 6491 F2=NULL; 6492 } 6493 xtextra=clock()-to; 6494 ring exTargetRing = currRing; 6495 6496 rChangeCurrRing(XXRing); 6497 Eresult = idrMoveR(eF1, exTargetRing,currRing); 6498 } 6499 else{ 6500 rChangeCurrRing(XXRing); 6501 Eresult = idrMoveR(F1, TargetRing,currRing); 6502 } 6503 } 6504 else { 6505 rChangeCurrRing(XXRing); 6506 Eresult = idrMoveR(G, newRing,currRing); 6507 } 6508 si_opt_1 = save1; //set original options, e. g. option(RedSB) 6509 delete ivNull; 6510 if(tp_deg != 1) 6511 delete target_weight; 6512 6513 if(op_deg != 1 ) 6514 delete curr_weight; 6515 6516 delete exivlp; 6517 delete last_omega; 6518 6519 #ifdef TIME_TEST 6520 TimeStringFractal(tinput, tostd, tif+xtif, tstd+xtstd,0, tlift+xtlift, tred+xtred, 6521 tnw+xtnw); 6522 6523 //Print("\n// pSetm_Error = (%d)", ErrorCheck()); 6524 //Print("\n// It took %d steps and Overflow_Error? (%d)\n", nstep, Overflow_Error); 6525 #endif 6526 Print("\n//** Mprwalk: Perturbation Walk took %d steps.\n", nstep); 6085 6527 return(Eresult); 6086 6528 } … … 6108 6550 * Perturb the start weight vector at the top level, i.e. nlev = 1 * 6109 6551 ***********************************************************************/ 6110 static ideal rec_fractal_call(ideal G, int nlev, intvec* omtmp)6552 static ideal rec_fractal_call(ideal G, int nlev, intvec* ivtarget, int printout) 6111 6553 { 6112 6554 Overflow_Error = FALSE; … … 6125 6567 intvec* next_vect; 6126 6568 intvec* omega2 = new intvec(nV); 6569 intvec* omtmp = new intvec(nV); 6127 6570 intvec* altomega = new intvec(nV); 6128 6571 6572 for(i = nV -1; i>0; i--) 6573 { 6574 (*omtmp)[i] = (*ivtarget)[i]; 6575 } 6129 6576 //BOOLEAN isnewtarget = FALSE; 6130 6577 … … 6167 6614 NEXT_VECTOR_FRACTAL: 6168 6615 to=clock(); 6169 / * determine the next border */6616 // determine the next border 6170 6617 next_vect = MkInterRedNextWeight(omega,omega2,G); 6171 6618 xtnw=xtnw+clock()-to; 6172 #ifdef PRINT_VECTORS 6173 MivString(omega, omega2, next_vect); 6174 #endif 6619 6175 6620 oRing = currRing; 6176 6621 6177 / * We only perturb the current target vector at the recursion level 1 */6622 // We only perturb the current target vector at the recursion level 1 6178 6623 if(Xngleich == 0 && nlev == 1) //(ngleich == 0) important, e.g. ex2, ex3 6179 6624 if (MivComp(next_vect, omega2) == 1) 6180 6625 { 6181 /* to dispense with taking initial (and lifting/interreducing 6182 after the call of recursion */ 6183 //Print("\n\n// ** Perturb the both vectors with degree %d with",nlev); 6184 //idElements(G, "G"); 6626 // to dispense with taking initial (and lifting/interreducing 6627 // after the call of recursion 6628 if(printout > 0) 6629 { 6630 Print("\n//** rec_fractal_call: Perturb the both vectors with degree %d.",nlev); 6631 //idElements(G, "G"); 6632 } 6185 6633 6186 6634 Xngleich = 1; 6187 6635 nlev +=1; 6188 6636 6189 if (rParameter(currRing) != NULL) 6190 DefRingPar(omtmp); 6637 if(ivtarget->length() == nV) 6638 { 6639 if (rParameter(currRing) != NULL) 6640 DefRingPar(omtmp); 6641 else 6642 rChangeCurrRing(VMrDefault(omtmp)); 6643 } 6191 6644 else 6192 rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung3 6193 6645 { 6646 rChangeCurrRing(VMatrDefault(ivtarget)); 6647 } 6194 6648 testring = currRing; 6195 6649 Gt = idrMoveR(G, oRing,currRing); 6196 6650 6197 /* perturb the original target vector w.r.t. the current GB */ 6198 delete Xtau; 6199 Xtau = NewVectorlp(Gt); 6651 // perturb the original target vector w.r.t. the current GB 6652 if(ivtarget->length() == nV) 6653 { 6654 delete Xtau; 6655 Xtau = NewVectorlp(Gt); 6656 } 6657 else 6658 { 6659 delete Xtau; 6660 Xtau = Mfpertvector(Gt,ivtarget); 6661 } 6200 6662 6201 6663 rChangeCurrRing(oRing); 6202 6664 G = idrMoveR(Gt, testring,currRing); 6203 6665 6204 / * perturb the current vector w.r.t. the current GB */6666 // perturb the current vector w.r.t. the current GB 6205 6667 Mwlp = MivWeightOrderlp(omega); 6206 6668 Xsigma = Mfpertvector(G, Mwlp); … … 6220 6682 next_vect = MkInterRedNextWeight(omega,omega2,G); 6221 6683 xtnw=xtnw+clock()-to; 6222 6223 #ifdef PRINT_VECTORS 6684 } 6685 //#ifdef PRINT_VECTORS 6686 if(printout > 0) 6687 { 6224 6688 MivString(omega, omega2, next_vect); 6225 #endif 6226 } 6227 6689 } 6690 //#endif 6228 6691 6229 6692 /* check whether the the computed vector is in the correct cone */ … … 6234 6697 { 6235 6698 delete next_vect; 6236 if (rParameter(currRing) != NULL) 6237 { 6238 DefRingPar(omtmp); 6699 if(ivtarget->length() == nV) 6700 { 6701 if (rParameter(currRing) != NULL) 6702 DefRingPar(omtmp); 6703 else 6704 rChangeCurrRing(VMrDefault(omtmp)); 6239 6705 } 6240 6706 else 6241 6707 { 6242 rChangeCurrRing(VM rDefault1(omtmp)); // Aenderung46708 rChangeCurrRing(VMatrDefault(ivtarget)); 6243 6709 } 6244 6710 #ifdef TEST_OVERFLOW … … 6246 6712 Gt = NULL; return(Gt); 6247 6713 #endif 6248 6249 //Print("\n\n// apply BB's alg. in ring r = %s;", rString(currRing)); 6714 if(printout > 0) 6715 { 6716 Print("\n//** rec_fractal_call: applying Buchberger's algorithm in ring r = %s;", 6717 rString(currRing)); 6718 } 6250 6719 to=clock(); 6251 6720 Gt = idrMoveR(G, oRing,currRing); … … 6256 6725 delete omega2; 6257 6726 delete altomega; 6258 6259 //Print("\n// Leaving the %d-th recursion with %d steps", nlev, nwalks); 6260 //Print(" ** Overflow_Error? (%d)", Overflow_Error); 6727 if(printout > 0) 6728 { 6729 Print("\n//** rec_fractal_call: Leaving the %d-th recursion with %d steps.\n", 6730 nlev, nwalks); 6731 //Print(" ** Overflow_Error? (%d)", Overflow_Error); 6732 } 6733 6261 6734 nnflow ++; 6262 6735 … … 6275 6748 if (MivComp(next_vect, XivNull) == 1) 6276 6749 { 6277 if (rParameter(currRing) != NULL) 6278 DefRingPar(omtmp); 6750 if(ivtarget->length() == nV) 6751 { 6752 if (rParameter(currRing) != NULL) 6753 DefRingPar(omtmp); 6754 else 6755 rChangeCurrRing(VMrDefault(omtmp)); 6756 } 6279 6757 else 6280 rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung5 6758 { 6759 rChangeCurrRing(VMatrDefault(ivtarget)); 6760 } 6281 6761 6282 6762 testring = currRing; … … 6287 6767 delete next_vect; 6288 6768 delete altomega; 6289 //Print("\n// Leaving the %d-th recursion with %d steps ",nlev, nwalks); 6290 //Print(" ** Overflow_Error? (%d)", Overflow_Error); 6291 6769 if(printout > 0) 6770 { 6771 Print("\n//** rec_fractal_call: Leaving the %d-th recursion with %d steps.\n", 6772 nlev, nwalks); 6773 //Print(" ** Overflow_Error? (%d)", Overflow_Error); 6774 } 6292 6775 return (Gt); 6293 6776 } … … 6300 6783 //07.08.03 6301 6784 //ivString(Xtau, "old Xtau"); 6302 intvec* Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp)); 6785 intvec* Xtautmp; 6786 if(ivtarget->length() == nV) 6787 { 6788 Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp)); 6789 } 6790 else 6791 { 6792 Xtautmp = Mfpertvector(Gt, ivtarget); 6793 } 6303 6794 #ifdef TEST_OVERFLOW 6304 6795 if(Overflow_Error == TRUE) … … 6328 6819 6329 6820 FRACTAL_MSTDCC: 6330 //Print("\n// apply BB-Alg in ring = %s;", rString(currRing)); 6821 if(printout > 0) 6822 { 6823 Print("\n//** rec_fractal_call: apply Buchberger's algorithm in ring = %s.\n", 6824 rString(currRing)); 6825 } 6331 6826 to=clock(); 6332 6827 G = MstdCC(Gt); … … 6336 6831 6337 6832 // update the original target vector w.r.t. the current GB 6338 if(MivSame(Xivinput, Xivlp) == 1) 6339 if (rParameter(currRing) != NULL) 6340 DefRingParlp(); 6833 if(ivtarget->length() == nV) 6834 { 6835 if(MivSame(Xivinput, Xivlp) == 1) 6836 if (rParameter(currRing) != NULL) 6837 DefRingParlp(); 6838 else 6839 VMrDefaultlp(); 6341 6840 else 6342 VMrDefaultlp(); 6841 if (rParameter(currRing) != NULL) 6842 DefRingPar(Xivinput); 6843 else 6844 rChangeCurrRing(VMrDefault(Xivinput)); 6845 } 6343 6846 else 6344 if (rParameter(currRing) != NULL) 6345 DefRingPar(Xivinput); 6346 else 6347 rChangeCurrRing(VMrDefault1(Xivinput)); //Aenderung6 6348 6847 { 6848 rChangeCurrRing(VMatrRefine(ivtarget,Xivinput)); 6849 } 6349 6850 testring = currRing; 6350 6851 Gt = idrMoveR(G, oRing,currRing); … … 6359 6860 delete next_vect; 6360 6861 delete altomega; 6361 /* 6362 Print("\n// Leaving the %d-th recursion with %d steps,", nlev,nwalks); 6363 Print(" ** Overflow_Error? (%d)", Overflow_Error); 6364 */ 6862 if(printout > 0) 6863 { 6864 Print("\n//** rec_fractal_call: Leaving the %d-th recursion with %d steps.\n", 6865 nlev, nwalks); 6866 //Print(" ** Overflow_Error? (%d)", Overflow_Error); 6867 } 6365 6868 if(Overflow_Error == TRUE) 6366 6869 nnflow ++; … … 6381 6884 Gomega = MwalkInitialForm(G, omega); 6382 6885 xtif=xtif+clock()-to; 6383 6886 if(printout > 1) 6887 { 6888 idString(Gomega,"//** rec_fractal_call: Gomega"); 6889 } 6384 6890 #ifndef BUCHBERGER_ALG 6385 6891 if(isNolVector(omega) == 0) … … 6388 6894 hilb_func = hFirstSeries(Gomega,NULL,NULL,last_omega,currRing); 6389 6895 #endif // BUCHBERGER_ALG 6390 6391 if (rParameter(currRing) != NULL) 6392 DefRingPar(omega); 6896 if(ivtarget->length() == nV) 6897 { 6898 if (rParameter(currRing) != NULL) 6899 DefRingPar(omega); 6900 else 6901 rChangeCurrRing(VMrDefault(omega)); 6902 } 6393 6903 else 6394 rChangeCurrRing(VMrDefault1(omega)); //Aenderung7 6395 6904 { 6905 rChangeCurrRing(VMatrRefine(ivtarget,omega)); 6906 } 6396 6907 Gomega1 = idrMoveR(Gomega, oRing,currRing); 6397 6908 6398 / * Maximal recursion depth, to compute a red. GB */6399 / * Fractal walk with the alternative recursion */6400 / * alternative recursion */6909 // Maximal recursion depth, to compute a red. GB 6910 // Fractal walk with the alternative recursion 6911 // alternative recursion 6401 6912 // if(nlev == nV || lengthpoly(Gomega1) == 0) 6402 6913 if(nlev == Xnlev || lengthpoly(Gomega1) == 0) 6403 6914 //if(nlev == nV) // blind recursion 6404 6915 { 6405 /*6406 if(Xnlev != nV)6407 {6408 Print("\n// ** Xnlev = %d", Xnlev);6409 ivString(Xtau, "Xtau");6410 }6411 */6412 6916 to=clock(); 6413 6917 #ifdef BUCHBERGER_ALG … … 6419 6923 xtstd=xtstd+clock()-to; 6420 6924 } 6421 else { 6925 else 6926 { 6422 6927 rChangeCurrRing(oRing); 6423 6928 Gomega1 = idrMoveR(Gomega1, oRing,currRing); 6424 Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega); 6425 } 6426 6427 //convert a Groebner basis from a ring to another ring, 6929 Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega,printout); 6930 } 6931 if(printout > 2) 6932 { 6933 idString(Gresult,"//** rec_fractal_call: M"); 6934 } 6935 //convert a Groebner basis from a ring to another ring 6428 6936 new_ring = currRing; 6429 6937 … … 6433 6941 6434 6942 to=clock(); 6435 / * Lifting process */6943 // Lifting process 6436 6944 F = MLifttwoIdeal(Gomega2, Gresult1, G); 6437 6945 xtlift=xtlift+clock()-to; 6946 if(printout > 2) 6947 { 6948 idString(F,"//** rec_fractal_call: F"); 6949 } 6438 6950 idDelete(&Gresult1); 6439 6951 idDelete(&Gomega2); … … 6454 6966 * Perturb the start weight vector at the top level with random element * 6455 6967 ************************************************************************/ 6456 static ideal rec_r_fractal_call(ideal G, int nlev, intvec* omtmp, int weight_rad) 6968 static ideal rec_r_fractal_call(ideal G, int nlev, intvec* ivtarget, 6969 int weight_rad, int printout) 6457 6970 { 6458 6971 Overflow_Error = FALSE; 6459 6972 //Print("\n\n// Entering the %d-th recursion:", nlev); 6460 6973 6461 int i, nV = currRing->N;6974 int i, polylength, nV = currRing->N; 6462 6975 ring new_ring, testring; 6463 6976 //ring extoRing; … … 6471 6984 intvec* next_vect; 6472 6985 intvec* omega2 = new intvec(nV); 6986 intvec* omtmp = new intvec(nV); 6473 6987 intvec* altomega = new intvec(nV); 6474 6988 6475 6989 //BOOLEAN isnewtarget = FALSE; 6476 6990 6991 for(i = nV -1; i>0; i--) 6992 { 6993 (*omtmp)[i] = (*ivtarget)[i]; 6994 } 6477 6995 // to avoid (1,0,...,0) as the target vector (Hans) 6478 6996 intvec* last_omega = new intvec(nV); … … 6514 7032 to=clock(); 6515 7033 /* determine the next border */ 6516 next_vect = MWalkRandomNextWeight(G, omega,omega2, weight_rad, 1+nlev); 6517 //next_vect = MkInterRedNextWeight(omega,omega2,G); 7034 next_vect = MkInterRedNextWeight(omega,omega2,G); 7035 if(polylength > 0) 7036 { 7037 //there is a polynomial in Gomega with at least 3 monomials, 7038 //low-dimensional facet of the cone 7039 delete next_vect; 7040 next_vect = MWalkRandomNextWeight(G,omega,omega2,weight_rad,1+nlev); 7041 if(isNolVector(next_vect)) 7042 { 7043 delete next_vect; 7044 next_vect = MkInterRedNextWeight(omega,omega2,G); 7045 } 7046 } 6518 7047 xtnw=xtnw+clock()-to; 6519 #ifdef PRINT_VECTORS 6520 MivString(omega, omega2, next_vect); 6521 #endif 7048 6522 7049 oRing = currRing; 6523 7050 6524 / * We only perturb the current target vector at the recursion level 1 */7051 // We only perturb the current target vector at the recursion level 1 6525 7052 if(Xngleich == 0 && nlev == 1) //(ngleich == 0) important, e.g. ex2, ex3 6526 7053 if (MivComp(next_vect, omega2) == 1) 6527 7054 { 6528 /* to dispense with taking initial (and lifting/interreducing 6529 after the call of recursion */ 6530 //Print("\n\n// ** Perturb the both vectors with degree %d with",nlev); 6531 //idElements(G, "G"); 6532 7055 // to dispense with taking initials and lifting/interreducing 7056 // after the call of recursion. 7057 if(printout > 0) 7058 { 7059 Print("\n//** rec_r_fractal_call: Perturb the both vectors with degree %d.",nlev); 7060 //idElements(G, "G"); 7061 } 6533 7062 Xngleich = 1; 6534 7063 nlev +=1; 6535 6536 if (rParameter(currRing) != NULL) 6537 DefRingPar(omtmp); 7064 if(ivtarget->length() == nV) 7065 { 7066 if (rParameter(currRing) != NULL) 7067 DefRingPar(omtmp); 7068 else 7069 rChangeCurrRing(VMrDefault(omtmp)); 7070 } 6538 7071 else 6539 rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung3 6540 7072 { 7073 rChangeCurrRing(VMatrDefault(ivtarget)); 7074 } 6541 7075 testring = currRing; 6542 7076 Gt = idrMoveR(G, oRing,currRing); 6543 7077 6544 /* perturb the original target vector w.r.t. the current GB */ 6545 delete Xtau; 6546 Xtau = NewVectorlp(Gt); 7078 // perturb the original target vector w.r.t. the current GB 7079 if(ivtarget->length() == nV) 7080 { 7081 delete Xtau; 7082 Xtau = NewVectorlp(Gt); 7083 } 7084 else 7085 { 7086 delete Xtau; 7087 Xtau = Mfpertvector(Gt,ivtarget); 7088 } 6547 7089 6548 7090 rChangeCurrRing(oRing); 6549 G = idrMoveR(Gt, 6550 6551 / * perturb the current vector w.r.t. the current GB */7091 G = idrMoveR(Gt,testring,currRing); 7092 7093 // perturb the current vector w.r.t. the current GB 6552 7094 Mwlp = MivWeightOrderlp(omega); 7095 if(ivtarget->length() > nV) 7096 { 7097 delete Mwlp; 7098 Mwlp = MivMatrixOrderRefine(omega,ivtarget); 7099 } 6553 7100 Xsigma = Mfpertvector(G, Mwlp); 6554 7101 delete Mwlp; … … 6566 7113 6567 7114 next_vect = MkInterRedNextWeight(omega,omega2,G); 7115 if(polylength > 0) 7116 { 7117 //there is a polynomial in Gomega with at least 3 monomials, 7118 //low-dimensional facet of the cone 7119 delete next_vect; 7120 next_vect = MWalkRandomNextWeight(G,omega,omega2,weight_rad,1+nlev); 7121 if(isNolVector(next_vect)) 7122 { 7123 delete next_vect; 7124 next_vect = MkInterRedNextWeight(omega,omega2,G); 7125 } 7126 } 6568 7127 xtnw=xtnw+clock()-to; 6569 6570 #ifdef PRINT_VECTORS 7128 } 7129 //#ifdef PRINT_VECTORS 7130 if(printout > 0) 7131 { 6571 7132 MivString(omega, omega2, next_vect); 6572 #endif 6573 } 6574 6575 6576 /* check whether the the computed vector is in the correct cone */ 6577 /* If no, the reduced GB of an omega-homogeneous ideal will be 7133 } 7134 //#endif 7135 7136 /* check whether the the computed vector is in the correct cone 7137 If no, the reduced GB of an omega-homogeneous ideal will be 6578 7138 computed by Buchberger algorithm and stop this recursion step*/ 6579 7139 //if(test_w_in_ConeCC(G, next_vect) != 1) //e.g. Example s7, cyc6 … … 6581 7141 { 6582 7142 delete next_vect; 6583 if (rParameter(currRing) != NULL) 6584 { 6585 DefRingPar(omtmp); 7143 if(ivtarget->length() == nV) 7144 { 7145 if (rParameter(currRing) != NULL) 7146 { 7147 DefRingPar(omtmp); 7148 } 7149 else 7150 { 7151 rChangeCurrRing(VMrDefault(omtmp)); 7152 } 6586 7153 } 6587 7154 else 6588 7155 { 6589 rChangeCurrRing(VM rDefault1(omtmp)); // Aenderung47156 rChangeCurrRing(VMatrDefault(ivtarget)); 6590 7157 } 6591 7158 #ifdef TEST_OVERFLOW 6592 7159 Gt = idrMoveR(G, oRing,currRing); 6593 Gt = NULL; return(Gt); 6594 #endif 6595 6596 //Print("\n\n// apply BB's alg. in ring r = %s;", rString(currRing)); 7160 Gt = NULL; 7161 return(Gt); 7162 #endif 7163 if(printout > 0) 7164 { 7165 Print("\n//** rec_r_fractal_call: applying Buchberger's algorithm in ring r = %s;", 7166 rString(currRing)); 7167 } 6597 7168 to=clock(); 6598 7169 Gt = idrMoveR(G, oRing,currRing); … … 6603 7174 delete omega2; 6604 7175 delete altomega; 6605 6606 //Print("\n// Leaving the %d-th recursion with %d steps", nlev, nwalks); 6607 //Print(" ** Overflow_Error? (%d)", Overflow_Error); 7176 if(printout > 0) 7177 { 7178 Print("\n//** rec_r_fractal_call: Leaving the %d-th recursion with %d steps.\n", 7179 nlev, nwalks); 7180 //Print(" ** Overflow_Error? (%d)", Overflow_Error); 7181 } 6608 7182 nnflow ++; 6609 6610 7183 Overflow_Error = FALSE; 6611 7184 return (G1); 6612 7185 } 6613 6614 6615 /* If the perturbed target vector stays in the correct cone, 6616 return the current GB, 6617 otherwise, return the computed GB by the Buchberger-algorithm. 6618 Then we update the perturbed target vectors w.r.t. this GB. */ 6619 6620 /* the computed vector is equal to the origin vector, since 6621 t is not defined */ 7186 /* 7187 If the perturbed target vector stays in the correct cone, 7188 return the current Groebner basis. 7189 Otherwise, return the Groebner basis computed with Buchberger's 7190 algorithm. 7191 Then we update the perturbed target vectors w.r.t. this GB. 7192 */ 6622 7193 if (MivComp(next_vect, XivNull) == 1) 6623 7194 { 6624 if (rParameter(currRing) != NULL) 6625 DefRingPar(omtmp); 7195 // The computed vector is equal to the origin vector, 7196 // because t is not defined 7197 if(ivtarget->length() == nV) 7198 { 7199 if (rParameter(currRing) != NULL) 7200 DefRingPar(omtmp); 7201 else 7202 rChangeCurrRing(VMrDefault(omtmp)); 7203 } 6626 7204 else 6627 rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung5 6628 7205 { 7206 rChangeCurrRing(VMatrDefault(ivtarget)); 7207 } 6629 7208 testring = currRing; 6630 7209 Gt = idrMoveR(G, oRing,currRing); 6631 7210 6632 if(test_w_in_ConeCC(Gt, omega2) == 1) { 7211 if(test_w_in_ConeCC(Gt, omega2) == 1) 7212 { 6633 7213 delete omega2; 6634 7214 delete next_vect; 6635 7215 delete altomega; 6636 //Print("\n// Leaving the %d-th recursion with %d steps ",nlev, nwalks); 6637 //Print(" ** Overflow_Error? (%d)", Overflow_Error); 6638 7216 if(printout > 0) 7217 { 7218 Print("\n//** rec_r_fractal_call: Leaving the %d-th recursion with %d steps.\n", 7219 nlev, nwalks); 7220 //Print(" ** Overflow_Error? (%d)", Overflow_Error); 7221 } 6639 7222 return (Gt); 6640 7223 } 6641 7224 else 6642 { 6643 //ivString(omega2, "tau'"); 6644 //Print("\n// tau' doesn't stay in the correct cone!!"); 6645 7225 { 7226 if(printout > 0) 7227 { 7228 Print("\n//** rec_r_fractal_call: target weight doesn't stay in the correct cone.\n"); 7229 } 6646 7230 #ifndef MSTDCC_FRACTAL 6647 //07.08.036648 7231 //ivString(Xtau, "old Xtau"); 6649 intvec* Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp)); 7232 intvec* Xtautmp; 7233 if(ivtarget->length() == nV) 7234 { 7235 Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp)); 7236 } 7237 else 7238 { 7239 Xtautmp = Mfpertvector(Gt, ivtarget); 7240 } 6650 7241 #ifdef TEST_OVERFLOW 6651 7242 if(Overflow_Error == TRUE) … … 6675 7266 6676 7267 FRACTAL_MSTDCC: 6677 //Print("\n// apply BB-Alg in ring = %s;", rString(currRing)); 7268 if(printout > 0) 7269 { 7270 Print("\n//** rec_r_fractal_call: apply Buchberge's algorithm in ring = %s.\n", 7271 rString(currRing)); 7272 } 6678 7273 to=clock(); 6679 7274 G = MstdCC(Gt); … … 6683 7278 6684 7279 // update the original target vector w.r.t. the current GB 6685 if(MivSame(Xivinput, Xivlp) == 1) 6686 if (rParameter(currRing) != NULL) 6687 DefRingParlp(); 7280 if(ivtarget->length() == nV) 7281 { 7282 if(MivSame(Xivinput, Xivlp) == 1) 7283 if (rParameter(currRing) != NULL) 7284 DefRingParlp(); 7285 else 7286 VMrDefaultlp(); 6688 7287 else 6689 VMrDefaultlp(); 7288 if (rParameter(currRing) != NULL) 7289 DefRingPar(Xivinput); 7290 else 7291 rChangeCurrRing(VMrDefault(Xivinput)); 7292 } 6690 7293 else 6691 if (rParameter(currRing) != NULL) 6692 DefRingPar(Xivinput); 6693 else 6694 rChangeCurrRing(VMrDefault1(Xivinput)); //Aenderung6 6695 7294 { 7295 rChangeCurrRing(VMatrRefine(ivtarget,Xivinput)); 7296 } 6696 7297 testring = currRing; 6697 7298 Gt = idrMoveR(G, oRing,currRing); … … 6706 7307 delete next_vect; 6707 7308 delete altomega; 6708 /* 6709 Print("\n// Leaving the %d-th recursion with %d steps,", nlev,nwalks); 6710 Print(" ** Overflow_Error? (%d)", Overflow_Error); 6711 */ 7309 if(printout > 0) 7310 { 7311 Print("\n//** rec_r_fractal_call: Leaving the %d-th recursion with %d steps.\n", 7312 nlev,nwalks); 7313 //Print(" ** Overflow_Error? (%d)", Overflow_Error); 7314 } 6712 7315 if(Overflow_Error == TRUE) 6713 7316 nnflow ++; … … 6725 7328 6726 7329 to=clock(); 6727 / * Take the initial form of <G> w.r.t. omega */7330 // Take the initial form of <G> w.r.t. omega 6728 7331 Gomega = MwalkInitialForm(G, omega); 6729 7332 xtif=xtif+clock()-to; 6730 7333 //polylength = 1 if there is a polynomial in Gomega with at least 3 monomials and 0 otherwise 7334 polylength = lengthpoly(Gomega); 7335 if(printout > 1) 7336 { 7337 idString(Gomega,"//** rec_r_fractal_call: Gomega"); 7338 } 6731 7339 #ifndef BUCHBERGER_ALG 6732 7340 if(isNolVector(omega) == 0) … … 6734 7342 else 6735 7343 hilb_func = hFirstSeries(Gomega,NULL,NULL,last_omega,currRing); 6736 #endif // BUCHBERGER_ALG 6737 6738 if (rParameter(currRing) != NULL) 6739 DefRingPar(omega); 7344 #endif 7345 if(ivtarget->length() == nV) 7346 { 7347 if (rParameter(currRing) != NULL) 7348 DefRingPar(omega); 7349 else 7350 rChangeCurrRing(VMrDefault(omega)); 7351 } 6740 7352 else 6741 rChangeCurrRing(VMrDefault1(omega)); //Aenderung7 6742 7353 { 7354 rChangeCurrRing(VMatrRefine(ivtarget,omega)); 7355 } 6743 7356 Gomega1 = idrMoveR(Gomega, oRing,currRing); 6744 7357 6745 /* Maximal recursion depth, to compute a red. GB */ 6746 /* Fractal walk with the alternative recursion */ 6747 /* alternative recursion */ 6748 // if(nlev == nV || lengthpoly(Gomega1) == 0) 7358 // Maximal recursion depth, to compute a red. GB 7359 // Fractal walk with the alternative recursion 7360 // alternative recursion 6749 7361 if(nlev == Xnlev || lengthpoly(Gomega1) == 0) 6750 //if(nlev == nV) // blind recursion 6751 { 6752 /* 6753 if(Xnlev != nV) 6754 { 6755 Print("\n// ** Xnlev = %d", Xnlev); 6756 ivString(Xtau, "Xtau"); 6757 } 6758 */ 7362 { 6759 7363 to=clock(); 6760 7364 #ifdef BUCHBERGER_ALG … … 6763 7367 Gresult =kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,omega); 6764 7368 delete hilb_func; 6765 #endif // BUCHBERGER_ALG7369 #endif 6766 7370 xtstd=xtstd+clock()-to; 6767 7371 } 6768 else { 7372 else 7373 { 6769 7374 rChangeCurrRing(oRing); 6770 7375 Gomega1 = idrMoveR(Gomega1, oRing,currRing); 6771 Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega); 6772 } 6773 6774 //convert a Groebner basis from a ring to another ring, 7376 Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega,printout); 7377 } 7378 if(printout > 2) 7379 { 7380 idString(Gresult,"//** rec_r_fractal_call: M"); 7381 } 7382 //convert a Groebner basis from a ring to another ring 6775 7383 new_ring = currRing; 6776 7384 … … 6780 7388 6781 7389 to=clock(); 6782 / * Lifting process */7390 // Lifting process 6783 7391 F = MLifttwoIdeal(Gomega2, Gresult1, G); 6784 7392 xtlift=xtlift+clock()-to; 7393 7394 if(printout > 2) 7395 { 7396 idString(F,"//** rec_r_fractal_call: F"); 7397 } 7398 6785 7399 idDelete(&Gresult1); 6786 7400 idDelete(&Gomega2); … … 6791 7405 6792 7406 to=clock(); 6793 / * Interreduce G */7407 // Interreduce G 6794 7408 G = kInterRedCC(F1, NULL); 6795 7409 xtred=xtred+clock()-to; … … 6797 7411 } 6798 7412 } 6799 6800 6801 7413 6802 7414 … … 6805 7417 * * 6806 7418 * The main procedur Mfwalk calls the recursive Subroutine * 6807 * rec_fractal_call to compute the wanted Gr ï¿œbner basis.*6808 * At the main procedur we compute the reduced Gr ï¿œbner basis w.r.t. a "fast"*7419 * rec_fractal_call to compute the wanted Groebner basis. * 7420 * At the main procedur we compute the reduced Groebner basis w.r.t. a "fast" * 6809 7421 * order, e.g. "dp" and a sequence of weight vectors which are row vectors * 6810 7422 * of a matrix. This matrix defines the given monomial order, e.g. "lp" * 6811 7423 *******************************************************************************/ 6812 ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget) 7424 ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget, 7425 int reduction, int printout) 6813 7426 { 7427 BITSET save1 = si_opt_1; // save current options 7428 if(reduction == 0) 7429 { 7430 si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis 7431 //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions 7432 } 6814 7433 Set_Error(FALSE); 6815 7434 Overflow_Error = FALSE; … … 6846 7465 intvec* iv_dp = MivUnit(nV); // define (1,1,...,1) 6847 7466 intvec* Mdp; 6848 6849 if(MivSame(ivstart, iv_dp) != 1) 6850 Mdp = MivWeightOrderdp(ivstart); 7467 if(ivstart->length() == nV) 7468 { 7469 if(MivSame(ivstart, iv_dp) != 1) 7470 Mdp = MivWeightOrderdp(ivstart); 7471 else 7472 Mdp = MivMatrixOrderdp(nV); 7473 } 6851 7474 else 6852 Mdp = MivMatrixOrderdp(nV); 7475 { 7476 Mdp = ivstart; 7477 } 6853 7478 6854 7479 Xsigma = Mfpertvector(I, Mdp); … … 6867 7492 Xivlp = Mivlp(nV); 6868 7493 6869 if(MivComp(ivtarget, Xivlp) != 1) 6870 { 6871 if (rParameter(currRing) != NULL) 6872 DefRingPar(ivtarget); 7494 if(ivtarget->length() == nV) 7495 { 7496 if(MivComp(ivtarget, Xivlp) != 1) 7497 { 7498 if (rParameter(currRing) != NULL) 7499 DefRingPar(ivtarget); 7500 else 7501 rChangeCurrRing(VMrDefault(ivtarget)); 7502 7503 I1 = idrMoveR(I, oldRing,currRing); 7504 Mlp = MivWeightOrderlp(ivtarget); 7505 Xtau = Mfpertvector(I1, Mlp); 7506 } 6873 7507 else 6874 rChangeCurrRing(VMrDefault1(ivtarget)); //Aenderung1 6875 6876 I1 = idrMoveR(I, oldRing,currRing); 6877 Mlp = MivWeightOrderlp(ivtarget); 6878 Xtau = Mfpertvector(I1, Mlp); 7508 { 7509 if (rParameter(currRing) != NULL) 7510 DefRingParlp(); 7511 else 7512 VMrDefaultlp(); 7513 7514 I1 = idrMoveR(I, oldRing,currRing); 7515 Mlp = MivMatrixOrderlp(nV); 7516 Xtau = Mfpertvector(I1, Mlp); 7517 } 6879 7518 } 6880 7519 else 6881 7520 { 6882 if (rParameter(currRing) != NULL) 6883 DefRingParlp(); 6884 else 6885 VMrDefaultlp(); 6886 6887 I1 = idrMoveR(I, oldRing,currRing); 6888 Mlp = MivMatrixOrderlp(nV); 7521 rChangeCurrRing(VMatrDefault(ivtarget)); 7522 I1 = idrMoveR(I,oldRing,currRing); 7523 Mlp = ivtarget; 6889 7524 Xtau = Mfpertvector(I1, Mlp); 6890 7525 } … … 6897 7532 id_Delete(&I, oldRing); 6898 7533 ring tRing = currRing; 6899 6900 if (rParameter(currRing) != NULL) 6901 DefRingPar(ivstart); 7534 if(ivtarget->length() == nV) 7535 { 7536 if (rParameter(currRing) != NULL) 7537 DefRingPar(ivstart); 7538 else 7539 rChangeCurrRing(VMrDefault(ivstart)); 7540 } 6902 7541 else 6903 rChangeCurrRing(VMrDefault1(ivstart)); //Aenderung2 7542 { 7543 rChangeCurrRing(VMatrDefault(ivstart)); 7544 } 6904 7545 6905 7546 I = idrMoveR(I1,tRing,currRing); … … 6912 7553 ring helpRing = currRing; 6913 7554 6914 J = rec_fractal_call(J, 1, ivtarget);7555 J = rec_fractal_call(J,1,ivtarget,printout); 6915 7556 6916 7557 rChangeCurrRing(oldRing); … … 6918 7559 idSkipZeroes(resF); 6919 7560 7561 si_opt_1 = save1; //set original options, e. g. option(RedSB) 6920 7562 delete Xivlp; 6921 7563 delete Xsigma; … … 6936 7578 } 6937 7579 6938 ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget,int weight_rad) 7580 /******************************************************************************* 7581 * The implementation of the fractal walk algorithm with random element * 7582 * * 7583 * The main procedur Mfwalk calls the recursive Subroutine * 7584 * rec_r_fractal_call to compute the wanted Groebner basis. * 7585 * At the main procedure we compute the reduced Groebner basis w.r.t. a "fast" * 7586 * order, e.g. "dp" and a sequence of weight vectors which are row vectors * 7587 * of a matrix. This matrix defines the given monomial order, e.g. "lp" * 7588 *******************************************************************************/ 7589 ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget, 7590 int weight_rad, int reduction, int printout) 6939 7591 { 7592 BITSET save1 = si_opt_1; // save current options 7593 if(reduction == 0) 7594 { 7595 si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis 7596 //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions 7597 } 6940 7598 Set_Error(FALSE); 6941 7599 Overflow_Error = FALSE; … … 6972 7630 intvec* iv_dp = MivUnit(nV); // define (1,1,...,1) 6973 7631 intvec* Mdp; 6974 6975 if(MivSame(ivstart, iv_dp) != 1) 6976 Mdp = MivWeightOrderdp(ivstart); 7632 if(ivstart->length() == nV) 7633 { 7634 if(MivSame(ivstart, iv_dp) != 1) 7635 Mdp = MivWeightOrderdp(ivstart); 7636 else 7637 Mdp = MivMatrixOrderdp(nV); 7638 } 6977 7639 else 6978 Mdp = MivMatrixOrderdp(nV); 7640 { 7641 Mdp = ivstart; 7642 } 6979 7643 6980 7644 Xsigma = Mfpertvector(I, Mdp); … … 6993 7657 Xivlp = Mivlp(nV); 6994 7658 6995 if(MivComp(ivtarget, Xivlp) != 1) 6996 { 6997 if (rParameter(currRing) != NULL) 6998 DefRingPar(ivtarget); 7659 if(ivtarget->length() == nV) 7660 { 7661 if(MivComp(ivtarget, Xivlp) != 1) 7662 { 7663 if (rParameter(currRing) != NULL) 7664 DefRingPar(ivtarget); 7665 else 7666 rChangeCurrRing(VMrDefault(ivtarget)); 7667 7668 I1 = idrMoveR(I, oldRing,currRing); 7669 Mlp = MivWeightOrderlp(ivtarget); 7670 Xtau = Mfpertvector(I1, Mlp); 7671 } 6999 7672 else 7000 rChangeCurrRing(VMrDefault1(ivtarget)); //Aenderung1 7001 7002 I1 = idrMoveR(I, oldRing,currRing); 7003 Mlp = MivWeightOrderlp(ivtarget); 7004 Xtau = Mfpertvector(I1, Mlp); 7673 { 7674 if (rParameter(currRing) != NULL) 7675 DefRingParlp(); 7676 else 7677 VMrDefaultlp(); 7678 7679 I1 = idrMoveR(I, oldRing,currRing); 7680 Mlp = MivMatrixOrderlp(nV); 7681 Xtau = Mfpertvector(I1, Mlp); 7682 } 7005 7683 } 7006 7684 else 7007 7685 { 7008 if (rParameter(currRing) != NULL) 7009 DefRingParlp(); 7010 else 7011 VMrDefaultlp(); 7012 7013 I1 = idrMoveR(I, oldRing,currRing); 7014 Mlp = MivMatrixOrderlp(nV); 7686 rChangeCurrRing(VMatrDefault(ivtarget)); 7687 I1 = idrMoveR(I,oldRing,currRing); 7688 Mlp = ivtarget; 7015 7689 Xtau = Mfpertvector(I1, Mlp); 7016 7690 } … … 7023 7697 id_Delete(&I, oldRing); 7024 7698 ring tRing = currRing; 7025 7026 if (rParameter(currRing) != NULL) 7027 DefRingPar(ivstart); 7699 if(ivtarget->length() == nV) 7700 { 7701 if (rParameter(currRing) != NULL) 7702 DefRingPar(ivstart); 7703 else 7704 rChangeCurrRing(VMrDefault(ivstart)); 7705 } 7028 7706 else 7029 rChangeCurrRing(VMrDefault1(ivstart)); //Aenderung2 7707 { 7708 rChangeCurrRing(VMatrDefault(ivstart)); 7709 } 7030 7710 7031 7711 I = idrMoveR(I1,tRing,currRing); … … 7037 7717 ideal resF; 7038 7718 ring helpRing = currRing; 7039 //ideal G, int nlev, intvec* omtmp, int weight_rad) 7040 J = rec_r_fractal_call(J, 1, ivtarget,weight_rad);7719 7720 J = rec_r_fractal_call(J,1,ivtarget,weight_rad,printout); 7041 7721 7042 7722 rChangeCurrRing(oldRing); … … 7044 7724 idSkipZeroes(resF); 7045 7725 7726 si_opt_1 = save1; //set original options, e. g. option(RedSB) 7046 7727 delete Xivlp; 7047 7728 delete Xsigma; … … 7099 7780 intvec* hilb_func; 7100 7781 #endif 7101 / * to avoid (1,0,...,0) as the target vector */7782 // to avoid (1,0,...,0) as the target vector 7102 7783 intvec* last_omega = new intvec(nV); 7103 7784 for(i=nV-1; i>0; i--) … … 7114 7795 7115 7796 to=clock(); 7116 / * compute a red. GB w.r.t. the help ring */7797 // compute a red. GB w.r.t. the help ring 7117 7798 if(MivComp(curr_weight, iv_dp) == 1) //rOrdStr(currRing) = "dp" 7118 7799 G = MstdCC(G); … … 7123 7804 DefRingPar(curr_weight); 7124 7805 else 7125 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 47806 rChangeCurrRing(VMrDefault(curr_weight)); 7126 7807 G = idrMoveR(G, XXRing,currRing); 7127 7808 G = MstdCC(G); … … 7149 7830 DefRingPar(curr_weight); 7150 7831 else 7151 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 57832 rChangeCurrRing(VMrDefault(curr_weight)); 7152 7833 to=clock(); 7153 7834 Gw = idrMoveR(G, exring,currRing); … … 7184 7865 DefRingPar(curr_weight); 7185 7866 else 7186 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 67867 rChangeCurrRing(VMrDefault(curr_weight)); 7187 7868 7188 7869 newRing = currRing; … … 7269 7950 DefRingPar(target_tmp); 7270 7951 else 7271 rChangeCurrRing(VMrDefault(target_tmp)); // Aenderung 87952 rChangeCurrRing(VMrDefault(target_tmp)); 7272 7953 7273 7954 lpRing = currRing; … … 7329 8010 DefRingPar(target_tmp); 7330 8011 else 7331 rChangeCurrRing(VMrDefault(target_tmp)); //Aenderung 98012 rChangeCurrRing(VMrDefault(target_tmp)); 7332 8013 7333 8014 lpRing = currRing; … … 7532 8213 else 7533 8214 { 7534 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 108215 rChangeCurrRing(VMrDefault(curr_weight)); 7535 8216 } 7536 8217 G = idrMoveR(G, XXRing,currRing); … … 7565 8246 else 7566 8247 { 7567 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 118248 rChangeCurrRing(VMrDefault(curr_weight)); 7568 8249 } 7569 8250 to=clock(); … … 7608 8289 else 7609 8290 { 7610 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 128291 rChangeCurrRing(VMrDefault(curr_weight)); 7611 8292 } 7612 8293 newRing = currRing; … … 7777 8458 else 7778 8459 { 7779 rChangeCurrRing(VMrDefault(target_tmp)); // Aenderung 138460 rChangeCurrRing(VMrDefault(target_tmp)); 7780 8461 } 7781 8462 } … … 7850 8531 else 7851 8532 { 7852 rChangeCurrRing(VMrDefault(target_tmp)); // Aenderung 148533 rChangeCurrRing(VMrDefault(target_tmp)); 7853 8534 } 7854 8535 } … … 8093 8774 else 8094 8775 { 8095 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 158776 rChangeCurrRing(VMrDefault(curr_weight)); 8096 8777 } 8097 8778 newRing = currRing; … … 8235 8916 8236 8917 //Print("\n// \"Mpwalk\" (1,%d) took %d steps and %.2f sec. Overflow_Error (%d)", tp_deg, nwalk, ((double) clock()-tinput)/1000000, nOverflow_Error); 8918 <<<<<<< HEAD 8919 ======= 8237 8920 8238 8921 return(result); … … 8421 9104 delete next_weight; 8422 9105 } //end of while-loop 9106 >>>>>>> f533f6f7667328bccb271b19b2f603aaebe41596 8423 9107 Print("\n// Mprwalk took %d steps. Ring= %s;\n", nwalk, rString(currRing)); 8424 idSkipZeroes(G); 8425 si_opt_1 = save1; //set original options, e. g. option(RedSB) 8426 baseRing = currRing; 8427 rChangeCurrRing(XXRing); 8428 ideal Res = idrMoveR(G,baseRing,currRing); 8429 delete tmp_weight; 8430 delete ivNull; 8431 delete exivlp; 8432 #ifndef BUCHBERGER_ALG 8433 delete last_omega; 8434 #endif 8435 #ifdef TIME_TEST 8436 TimeString(tinput, tostd, tif, tstd, tlift, tred, tnw, nstep); 8437 #endif 8438 return(Res); 9108 return(result); 8439 9109 } 8440 9110 … … 8515 9185 else 8516 9186 { 8517 rChangeCurrRing(VMrDefault(cw_tmp)); // Aenderung 169187 rChangeCurrRing(VMrDefault(cw_tmp)); 8518 9188 } 8519 9189 G = idrMoveR(Go, XXRing,currRing); … … 8589 9259 else 8590 9260 { 8591 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 179261 rChangeCurrRing(VMrDefault(curr_weight)); 8592 9262 } 8593 9263 newRing = currRing; … … 8651 9321 else 8652 9322 { 8653 rChangeCurrRing(VMrDefault(target_weight)); // Aenderung 189323 rChangeCurrRing(VMrDefault(target_weight)); 8654 9324 } 8655 9325 F1 = idrMoveR(G, newRing,currRing); -
Property
mode
changed from
-
Singular/walk.h
-
Property
mode
changed from
100644
to100755
r70bc37 rdbf609 54 54 // compute a Groebner basis of an ideal G w.r.t. lexicographic order 55 55 //ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M); 56 ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M, ring baseRing );56 ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M, ring baseRing, int reduction, int printout); 57 57 58 58 // random walk algorithm to compute a Groebner basis 59 ideal Mrwalk(ideal Go, intvec* curr_weight, intvec* target_weight, int weight_rad, int pert_deg, ring baseRing); 59 60 ideal Mrwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int pert_deg, int reduction, int printout); 60 61 61 62 /* the perturbation walk algorithm */ 62 63 63 ideal Mpwalk(ideal Go, int op_deg, int tp_deg,intvec* curr_weight,intvec* target_weight, int nP );64 ideal Mpwalk(ideal Go, int op_deg, int tp_deg,intvec* curr_weight,intvec* target_weight, int nP, int reduction, int printout); 64 65 65 66 /* the perturbation walk algorithm with random element */ 66 67 ideal Mprwalk(ideal Go, intvec* curr_weight, intvec* target_weight, int weight_rad, int op_deg, int tp_deg, ring baseRing); 67 ideal Mprwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int op_deg, int tp_deg, int nP, int reduction, int printout); 68 68 69 69 /* The fractal walk algorithm */ 70 ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget );70 ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget, int reduction, int printout); 71 71 72 72 /* The fractal walk algorithm with random element */ 73 ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget, int weight_rad);73 ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget, int weight_rad, int reduction, int printout); 74 74 75 75 /* Implement Tran's idea */ -
Property
mode
changed from
-
Tst/Old/m139si.res.gz.uu
r7023ce rdbf609 1 1 begin 640 m139si.res.gz 2 M'XL("' **>U0``VTQ,SES:2YR97,`[5SY?]LVLO]=?P7BM%TJ@FQ1OBO3NU';3 M-$[3U+738RNK6 4J";$HD19.4'">;_=O??''PD&A;;;K7>\_]=$3BF`%F!H.94 M`9CSUU^>O&*,V<<$O#!EGK/=J9WKTC9*7YYTV <:E"$7L^IN^-]C(Z[=1/_5\5 M W_5]:R.*9\.->EZ[8VI-D[QJ%U6C>1!9&^B1I+$77K(T2=\DJ9O.DS=CSQ?,6 M 81N!O7V8>)NAN-E$#=&6@Z0J&F;D#J?NI6!?J\%1`8V`/7WS"WI&;NP&(A4Q7 M T]B3#LO+@"7L,%:C68^9Q<)CI]G>8VXX8N&18YX>.2U6IR;OZ7]F\+A^=.4R8 M1Q9= ;+A\P(=\Q`4?\TM^Q3T^X5/N\X"'?,8C?LUCGO"4S_F"W_"W_):_XQ<;9 M C3^D]U/>Y5_P+_E7_!G_FC_G)_P%_X:_Y-_R5_P[?LJ_YV?\G+_F/_`?^4_\10 M 9_Y7_LO'];X@_C.C*%Y'_KJN*AO/8LOS')M*O2-G5_XZGM=HUV6U8B'ZCBW%11 M PI[G]1TG877VGI`XP/=!-E)0BH7*G589@:'3VE64[-W=)5(%8FM08TM40=3(12 M /<>D93^;IYV:P<RLD!VS%C!2.>F<(N2ZO/W$"NM-NT\*%HMT'H?,HA;UG*3J13 M ?,1:JR/6E`8B-4JFQ/6.A/^6E&!!RI"24L2D'!$I24C*XI/23$AYKDB)QJ1,14 M (U*J`7<S8?]1&'XA)?B9E.%'4HK7I!QGI"2GI"RO2&E>DO*\("5Z3LKTC)3J15 M 2U*N+G_Z\1B,TA64@CBWVS:BW&TW20<SUN:-CIG=VC&MVGNMI69*9N"S%EE316 M RZPDLA4=^5"K=50+BVIK9<.H#-#Y%R<G91/D>TG*'BM[8\R1#?%>;$CTCR1W17 M +M3;8X!/`#X%^`S@3P`60!W@"4`#@`,T`39KVVWZV=X&V`'8!=@#V`<X`#@D2 M'XL("'Q2TE0``VTQ,SES:2YR97,`[5SY?]LVLO]=?P5LMUTJ@FQ1OBO3NU'; 3 M-$[3U+738RNK65J";$HD19.4'">;_=O??''PD&A;;;K7>\_]=$3BF`%F!H.9 4 M`9CSUU^>O&*,V<<$O#!EGK/=J9WKTC9*7YYTV?J5"$7L^IN^=[F>UV^C?N+Y 5 MONO[UGH43P?K];QVQ]2:)GG5+JJ&LR"RUM$C26,OO&)IDKY)4C>=)6]&GB^8 6 MP]8#>_LP\39#<;N)&J(M!TE5-,S('4S<*\&^5H.C`AH!>_KF%_2,W-@-1"IB 7 MIK$G'9:7`4O88:Q&LQXQBX7'3K.]Q]QPR,(CQSRM.2U6IR;OZ7]F\+A^=.TR 8 M1Q9=K+O\D@_XD`L^XE?\FGM\S"?<YP$/^91'_(;'/.$IG_$YO^5O^1U_QR_6 9 M&W]([Z>\R[_@7_*O^#/^-7_.3_@+_@U_R;_EK_AW_)1_S\_X.7_-?^`_\I_X 10 MS_RO_)>/ZWU!_&=&4;R._'5=53::QI;G.3:5>D?.KOQU/*_1KLMJQ4+T'5F* 11 MA3W/ZSM.PNKL/2%Q@.^#;*2@%`N5.ZTR`D.GM:LHV;N["Z0*Q%:@QA:H@JB1 12 M>XY)RWXZ2SLU@YE9(3MF+6"D<M(Y1<AU>?N)%=:;=I\4+!;I+`Z912WJ.4G5 13 M^8BUED>L*5V*U"B9$M<[$OY;4H(Y*4-*2A&3<D2D)"$IBT]*,R;EN28E&I$R 14 M#4FI+KF;"?N/PO`+*<'/I`P_DE*\)N4X(R4Y)65Y14KSDI3G!2G1<U*F9Z14 15 M7Y)R=?G3C\=@E*Z@%,2YW;81Y6Z[23J8L39O=,SLUHYIU=YK+313,@.?M<B: 16 M6F8ED2WIR(=:K:-:6%1;*QM&98#.OS@Y*9L@WTM2MJ'LC3%'-L1[L2[1KTGN 17 M7*BW#8!/`#X%^`S@3P`60!W@"4`#@`,T`39KVVWZV=X&V`'8!=@#V`<X`#@D 18 18 ML-,"L`'08P<]=M!C!SUV]FI;P(=&#(T8&C$T8FC$T(@!+0-:!K0,:-GG`!V` 19 19 M(P"GMH,&.VBP@P:[0+D+E+M`N0N4NT"Y"Y2[0+F+'KOHL8L>>^BQ9]>P7;`_ … … 21 21 M@>X>Z.Z#[CY&NH\>^^BQCQ[[Z+&_5_L6^+"3L>\`3@&^!S@#.`=X#?`#P(\` 22 22 M/P'\#/!7@%\`>K5]T-T'W7W0/0#=`]`]`-T#T#T`W0/0/<!(#]#C`#T.T.,0 23 M/0[M&BG/!5#V`7X%>`/P-P`78``P!!@!"(`QP"7`%8`',*D=@O0A2!^"]"%( 24 M'X+T(4@?@O0AD;9;+0`;H`VPS>2"([`+4)L"G0\0`(0`,X`(X!H@!D@`4H`Y 25 MP`+@!N`MP&W-;NT#WP$`Z-J@:X.N#;HVZ-J@:X.NO0>`'C9ZV.C11H^V77L' 26 MA.\!_@[P`>`?-;L--&V@:0--&VC(!8#AP;(W"[:M%^PC+-3'GWSZV9^L^I,& 27 M;VYNM:CWSN[>_L'AYYTCY_C/?WG:_>++KYY]_?SDQ3<OOWWUW>GW9^>O?_CQ 28 MIY__^DL/@NK_^N9O[F`X$N/+*V\R]8-P%EW'23I?W+R]???^[Q_^86A+6Y9X 29 M[X3UN,X<A^E]R6P7VA`EMC)4'ZJZV)5=:#J]QSV[W]RV^^R>WNV'>O/'O7:_ 30 MB9=&`=-#-M(=)#^Z_ER4S20QA`USKVQX[,C=5:,:Z@U4^(G(2YNJ^"&"`R^< 31 M!9[KEPEJ-[!<,%4CH"Z7>/4[A9>8')S"ZW3J3(OO8>B$G8R-4]J"PN94<Y!> 32 M';QV"HR>'I&G,8O9]#A4AKWPM[5%>K?`D(=N(A*%(R8<UA1.T9-8(R*'B%D^ 33 M'"__R)D2>M_Q&\M"=V)R2<*&W?3K6WXN;<VS&$Q[@(%C=YC.XKLXR)9YM+75 34 MO/>/#6=!-">7WIN%[/ZFS68V32D/IRVG2E3]1F-EFK]S=MY@%KK#H7?G[/3D 35 MI)_NV)S^^V=.TD,<)OW;$#]+\[RB48X;EQTRX`ZCGTOZN5J9]]4:\YX&(IC% 36 MMW=[*YH%YFDAXD&FX,9,/'*T(ZO'%SHP!]IU*C8\MK6_^UXB<F`ZM!9_J)E0 37 M##49RO=Y+!#FH0`;#2*RR:DEH2\6PF\N9MY0-+:Y9M'%QM86TY.;)V+$F9NR 38 M]$JP8!:(,.5L<,M(H[V%8`N7U'K@BX16EN?/!K>IJ']^L9&YZX:ZS7XC^726 39 MTG+1@Z#X=S9TT^J1G)^\^OJ'ET_/*D>`_XU/:BEL%%XT:-?=KK.1M\#^N[.& 40 MK,-Y,!#Q&W'W`I::1]$`A9Q&X@LQ9',NY.N\%S;:?:?588*>;/7DB(:M-<*" 41 M`?=",;(&9+&P:=;+9@A-AE=NG-<[B+2(HVILM(!I;:>P91\R;=;;;RR2N0^/ 42 M_6*CO:EC`L2"3,6<M%`:^'6\9=N'^8HG=LNX\K)3H)H'Q^@<.$'3"+<8BBG/ 43 MA'KW@GYCW@L:F5(SR8V@3Y6)%(%%E?5"I="5GY8J3/"1S44]--04K3FMFJPM 44 M>)5*I=-F/VXH)JEF6_K%;M5_]8KLROO5[M?5-I=*2O&9&D7/YA"J&4#!>"[; 45 MTZ7F:^I==+=MS10OI=#SFK\J*E],,6J7G\;"]X+.BC[P**]XA;W1;CT)U:K8 46 MI@"I+2NBWBNMK9$3-4C#8B=:U9]7!?TAOG5[7M]I/_&:=B=G[,?J=T2B,H^Q 47 MMZ+J>CPMI<^5VAQ!$PK:#.U6\UO2[U=:O]OWZ'>LM%1\VJ6'@O9>:[V7?%RJ 48 M$ZKN^HE%2.N-J!<T<]J9@I.*2L3Y0$LX\V*P[/J10SX],F[T=%@YT*4%4Y"Z 49 M^E/Z@7$5"B-3J-?7]<I"E-2=:IH92O7`#ZLPJX?&Q<9AGJ980FZW[L5NJ2>R 50 M$DTK?]9<JA<DG8M6;J>J:1TR;FD1U_.6!4K9<+5)4KPX-45%J_7A-W"\9)\B 51 MSXF\AE3I#Q5S;%6Q[F*C5<VS):S:T%W?;?*6QJIM@G%!"AO']F9N[=H\-(K[ 52 MNTWFDJV,O+N,Y1I6DH@%Y((\')X$,L.")S(UX:7(XXWP.)!\4^4P(*$3,"B' 53 M;FEJ,I-&2*YY)/68J%M!G:N'L-XQ]G<A%Q4M7_IIJIW^Y@K9>5+N8R>2!*\S 54 M#+3$5`^^R/L4`AX]`"U@M%STI#HOZIN;MG$&-:<6:[%M-IH/T]4XTAL5&9>[ 55 MM-4^.\W62RFX\=XI9QW&*(G$$/'.6+@T`E'MP&<N,I_P-"UN4.EMASWPM[5U 56 M@^.1@:`X05"'2+`91@XL<L04S-"`V4^"W7C)%3F4THV\80FU3Z]`Q?>FPC#! 57 M>FO9Q,56O0YFTTN=;VYN\K=8,<R-!5!ESNXF,ZV9ES!7T2/JT<R_3>3\R3D5 58 M<2)=5;!:C,"$&R^]`AYOY("`;/C8=$<E.U0H.$,0X!"5MAK&X]ZA?"6*F^RY 59 M"(>"$^>`BV:2R""7,-%32"LN9B*(TMM-=C(F$LP=C3S(A:21J26UO"3W/>1R 60 M.*F<Q6@D1N#28TXL8C>"7;GDX%-!(J`+J4##L1?36#'PP)T*-0`!,Y%F\[CR 61 MAE?4-T'7`7GJM(2]R/?$:+-F!(ZEJN.:S(@DV<'!>ZWOD.EL;#WN)7WR!2XV 62 MU.@O-A#T5]21S[^Z5106(MH6;&F:ZG2$^DN<I&F73#1R.<?*`WDLNY/$D_[2 63 MT4<A[W.\E%]"L`^.6-ZHWGAL4,LS/5I?IA%8YHW0]$&-5UH/67^NNU!GC2>] 64 ME48:)?G&$!HVTPARXXH44'&<LJOFIVFH98*J'&V^%9<Q&TX\&-''M`R&4J6V 65 M55[FOK@^VUQN(5\L"R-Y*>^1</UB`4DYG<47&T:"645`R]L7Q::!2T;FK9E/ 66 MYG\"HSP=E4^6:H4)UN^0G>X!27CK"*\D.]FY(*=P./.3LJ#RV4OM+DR^M!!T 67 M"8UW94IJ%2D9*AS09M68G3,'=MZHL\X,YI7ZL2!BEJTGL.D<"R*,9S>)=5[G 68 M>)93.*_W[^*7[KLNP\K\DIWO5NP5Y6/#69@0E^/<!DC##-.8[7QW*6#&_C2W 69 M2GF(P*P)W(#)D:.W7WK66296MCXR)].;]-D1TL_44[X<L]6,)::[P+D:QLQB 70 M[/3Y?K:"F&7[/`7(#_.Q/&DR]O:JWYI)6&EG;]%?RR!!2H;1M$VD^:`_K-5] 71 M!5=,FTDT"T?2#9BQQ5UF)7,QE)+,0J'3K)C?.Q'/[A!N9K!SDZ<7B#(I*T&I 72 M431VE"_2JJA$;MUL;,Y`K7$Y8KK?/M+&2ANT?\O-?GG+9H,)V;3D7AU=60CP 73 MWL;P+:0,M8\N0Y\)HMF)#(TGSD0'ZJKYI.X0H!CH"?69+#F28W)HU_`EDUF\ 74 MOB-I;D'PR80G')-H\1:W>:N8O%CDSGE%ZD`/_A3'T+JTZ"MK[P(I!*QZ*Q?V 75 MRNY1K#";16FE%?]6>^C-I+ZTF4C!!.3WC&^I*6]GRB#M!\MN>^1V7Z:JJQ1+ 76 M3H@DXWG]1X[\E:=%Q(%!+-QI9V4%R_8>\L`%A=4A`^1$W"U;=6G[=8.L"_FW 77 MG14G1['UF&*0?Q%;*W<T[?O9RO=3,4/1/RED7-Z*X3P5UL6&2GS9S*'G!A)- 78 MU,TZK3>(!D?18J5$GLLADXS_<Y12K[&^`C>R3GG!96*LS.)B12)49'-:*`N= 79 M]I*)8"NVZ0['5]<4';.,1[2TNB'O>KP[X=W!TNX;>8M96M!%J^LYF07I>L<M 80 M`LVFRB!0RU[7ZSO=0FI"QJ]6=Y(=*!39W24-SN?7G10];$DKI))N>)11;!+J 81 M;ICOG66#ZF&>/3V.L-\_+KS1$N@7<C9+FV-WX&3=.J6:K-@I8*IN@KQGSK]L 82 M3L6$3"%CL[P*H2;=V,G=GWN9W8TEI_,)>OU"J*%-KXPFNC&73>IW'#P_TB8O 83 M-.E3%?MD^8%L2X-U;%<L+QPLR3.D>],,ZGC!;#^+0AR7;Y?JQEBR&BN`-X'< 84 MHCKEX0=U37G%XV(3Y7/!Z<+/O?[6I']D)H\79S(IY=8"%&HO!X_].U;A0M\: 85 MT&PPYE!N8R^=@"\ZA7WRY3J;Y#SX[TRVP#5C?TR^A7CP_[F6?U*N1>+]UZ59 86 M_B^G5]9.I?S7YD76X=?=S"OF-SXJM9)[T7"B[Z(\$CZ93S+69`QB3]WX^<@D 87 MRD?.OYBO^(].Q-RCI/?F4+"9_;OR)YF3D:=1?E_ZI/5@^L1D3S!=,MVM/RQS 88 M\@<F3BKS)FOF&VC/>##58$2ZDFZ0=_&/;7V#*;OAZ&.3#^4Y;)MK(PTE-67U 89 M/FW]#=VL:1H:<]XSS1HV>9PAVE:EKZ7S=#X/`N'DJ8[B73=W/J8`"S_(>N`W 90 M4[+WNJ.$#>J.6H-!RU-/1C99]VKFC9L.KT:SR]6C2*_HY&G':QB,\@N;*SF. 91 ME8]GXI"Z.P"TO63-U*#!BS@A)\+)LB$U-9,B;C.\-W$HY@4"TCZ4*HN]R<@< 92 M,_,Q#WDAQ.$I9Y="W<2*2.U)=?$XI-API#Q20<!3#<A?#*A,$O*]<,K\-\"` 93 MP#WQ/L>C.;&818*"'%FKIY6'[S>Q1[^JDE_/9[*0=(AX2!#YESQ,UPZZ:JR* 94 M((*)<^-ZJ?2JK)?<>V*W6K3\,:/AE1C2E&ZNR%$E\1A_S#6'XG).^AJ9IWP" 95 M,(:"8+O\J8L40WZB[H[*TRE+0\JK7O7=#2VJ)2D_<J3TJ^-D4"U)KZ0$YL]D 96 M("398@7H/<H&I<[<[PZM\RDZ8T$TRTK%RX?[Q?7$*BSF>%4U/7CS\3Q**SA3 97 MUM.L9?DBA(+&3"Q_A:2'?K'Q#>$2H_RPC,;RZ#<-!BJUVK#H]8JW$;*BZPUX 98 MZ,\245:7Y6L0++O"G:W<K\[.OCNCE?!,Q0KQY1SW(K$@,U-4"`\HXDD\>6\3 99 M0[D4\:9>,P];-N5@G<\'<G$MFS>5KUT.8WUEW>2S7(?JJMJ$)U-/7B+3"2*\ 100 MJK2*047A`G&./`-MUW72U+%9AZR1\1N2.EZ545?LT+<KK$D#.)"0]KU]> 101 MI-.>C/[]GFJ5>4D3D[Q2`D&=*E&&D.CU#-W^D7SRBS;4F3;D!N;W2BWE)J9; 102 M]S,A:F9/U[W<,IR)\3A931Z\J,X=,',_Q?/PB9I+9C#;KXM?1)0\LVMGN]UJ 103 M;=\9WBA7.L^](E53#@FSQ6'4LDUV,Q]?,*?Q#:1C)O,'LFLC%#>T+0AC,K1M 104 MN%Z^!WU-FY`<G[DTHP9;N`%=O8VNS!/<R%:IL@GR`.(M'T7YW,'<D^6(Y84. 105 M6.1)C[KZHRZ/!.Y;U=#6+50']@6)S8'LK!.:#8^TUZ2C&\XF]#\"^M*Y!]E0 106 M^2[%J7<@/SO(\3P<Y,C;[=+-/ZFO7G+79,,A10UXYGH(GH<Q%!.'<%G1HM?. 107 M`P>\Z]AAY1QCKVX&P@I?K.;IO>61^.9VDSJ;2RQ]#TT=9]1Y=JU03G8R\AT_ 108 M%_L$U(E%5"RS`Z!"SUE<([<#*C"R)$8Z`.1)]K;[^2PGI5E,[IW%I&H6"_D% 109 M+*ZU3=2X<]PFX9_;*I6A*1"40]JK%QB*]L2N7G:'CEG0RB+)JK$!47%TA047 110 M"XQ+Q8JR73[,@D.K'9-,PRJ3&*5F6C5_UZV\E,3^3'WY\F[IXKQ<0-Y=MDL> 111 M[)5\F-*'$,M?-U@EHY3'V/7//E-E9?.O]FTO-6GQ0O$$6=Z6^GJ,Y9\3P^Y6 112 MN]TECU:FB)9]VBJOEO:IHC?+E#M;8I<E%F1-O'I=GKVJ3N2H)KX0$0V5)8'K 113 MRQRCB*FAGTA]<:,HWI0GX0EM&*&)?<$C.>'CJF^FU8'.A+9*^,-PB2M]3"D! 114 M^>\+9,.^V("'>[%AGF[Q.*%H[7WY7%(N9:QD<M0GN7>4.X,5\RO,C':+?$IL 115 M',\"%LYNJ*R6H\Z<+NT`8#J8<K5SO<X\##,J9F/FDA'-9K`>\@I?\L&X0>$F 116 M37RTJHIW!P6GI>/Q0F75:61Y$.IT\Y2S"H=>VMW3TU515GJQ>77FDQ='6MCE 117 M"I/56Z$C/Q4SI>;CB;XC'2V;%T]8S=7DOK/HK#<<\UU0:8;ECX8LM6T]QTI< 118 MS^"=IZ,E[UAM]O\1MDZ&O/\F\Y:DHY)1*TB_'*I7!>MR+1=C:'G^#(L!GL_F 119 MZ8I:*;;K:,];2Q/_ERQ"\UNI^^OH/"2UEK[KQ5&QM4<Z",%LSLK9"!T#9L^A 120 M]L7Q/')4&EM%.U;$%VX,ESISURPX1'!]<5O#.JMWEK_NG%1A\`H*AY3#\:0B 121 MUQSF6H*!.Y.2SFAO&3H5N$[!W9>IWJVMD2<8!<CO4L%^U">7#*J-\N<NA?SF 122 M/!-X`K=G)D#6B@88FJ"A%^H"76W*(Q9=><X917)Y9$#<=\:9OT#UEG'MM4EU 123 M4$8MZIV2]W:_8&<1SB\MTDVNK;#5PF[8WMT#]K.O7O]P]LHJ_$M%>\?J7SE* 124 5DU2AR/\E(K#GD]K_`#;QH?8G20`` 23 M/0[M&BG/!5#V`7X%>`/P-P`7X!)@`#`$$``C@"N`:P`/8%P[!.E#D#X$Z4.0 24 M/@3I0Y`^!.E#(FVW6@`V0!M@F\D%1V`7H#8!.A\@``@!I@`1P`U`#)``I``S 25 M@#G`+<!;@+N:W=H'O@,`T+5!UP9=&W1MT+5!UP9=>P\`/6STL-&CC1YMN_8. 26 M"-\#_!W@`\`_:G8;:-I`TP::-M"0"P##@V5O%FQ;+]@U+-2-3S[][$]6_4F# 27 M-S>W6M1[9W=O_^#P\\Z1<_SGOSSM?O'E5\^^?G[RXIN7W[[Z[O3[L_/7/_SX 28 MT\]__:4'0?5_??,W]W(P%*.K:V\\\8-P&MW$23J;W[Z]>_?^[Q_^86A+6Y9X 29 M[X2U46>.P_2^9+8+;8@26QFJ#U5=[,HN-)W>1L_N-[?M/GN@=_NQWGRCU^XW 30 M\=(H8'K,1KJ7R8^N/Q-E,TD,88/<*QL<.W)WU:@&>@,5?B+RTJ8J?HS@I1=. 31 M`\_URP2U&U@NF*@14)<KO/J=PDM,#D[A=3)Q)L7W,'3"3L;&"6U!87.B.4BO 32 M#EX[!49/CLC3F,9L<APJPU[XV]HBO9MCR`,W$8G"$1,.:P*GZ$FL$9%#Q"P? 33 MCI=_Y$P(O>_XC46A.S&Y)&'#;OKU+3^7MN99#*8]PL"1.TBG\7T<9(L\VMIJ 34 M/OC'!M,@FI%+[TU#]G#39C.;II2'TY93):I^H[$TS=\Y.^]R&KJ#@7?O[/3D 35 MI)_NV)S^^V=.TD,<)OW;$#\+\[RF48X:5QTRX`ZCGROZN5Z:]_4*\YX$(IC& 36 M=_=[*YH%YFDNXLM,P8V96'.T(ZO'%SHP!]IU*C8\MK6_^UXB<F`ZM!9_J)E0 37 M##49RO=Y+!#FH0`;7D9DDU-+0E_,A=^<3[V!:&QSS:*+]:TMIB<W2\20,S=E 38 MZ;5@P3008<K9Y1TCC?;F@LU=4NM+7R2TLCQ_>GF7BOKG%^N9NVZHV^PWDD^G 39 M*2T7/0B*?Z<#-ZT>R?G)JZ]_>/GTK'($^-_XI);"1N%%@W;=[3H;>G/LOSLK 40 MR#J<!9<B?B/N7\!2\R@:H)#32'PN!FS&A7R=]<)&N^^T.DS0DZV>'-&PM498 41 M,.!>*(;6)5DL;)KULAE"D\&U&^?U#B(MXJ@:&RU@6MLI;-F'3)OU]AN+9.;# 42 M8[]8;V_JF`"Q(%,Q)RV4!GX=;]'V8;[BB=TRKKSL%*CFP3$Z!T[0-,(MAF+* 43 M,Z'>O:#?F/6"1J;43'(CZ%-E(D5@466]4"ETY:>E"A-\9'-1#PTU16M&JR9K 44 M"UZE4NFTV8\;BDFJV99^L5OU7[TBN_)^M8=UM<VEDE)\ID;1LSF$:@90,)Z+ 45 M]G2A^8IZ%]UO6S/%2RGTO.&OBLH74XS:Y:>Q\+V@LZ0//,HK7F%OM%M/0K4J 46 MMBE`:LN*J/=*:VOD1`W2L-B)EO7G54%_B&_=GM=WVD^\IMW)&?NQ^AV1J,QC 47 M["VINAY/2^ESI39'T(2"-D.[U?P6]/N5UN_V`_H=*RT5GW;IH:"]-UKO)1\7 48 MZH2JNWEB$=)Z(^H%S9QVIN"DHA)Q/M`2SKP8++M9<\BG1\:-G@XK![JP8`I2 49 M5W]*/S"N0F%D"O7ZNEE:B)*Z4TTS0ZD>^&$59O70N%@_S-,4"\CMUH/8+?5$ 50 M5J)IY<^:2_6"I'/1RNU4-:U#QBTMXGK>LD`I&ZXV28H7IZ:H:+4^_`:.E^Q3 51 MY#F1UY`J_:%BCJTJUEVLMZIYMH!5&[J;^TW>PEBU33`N2&'CV-[,K5V;AT9Q 52 M?[?)7+"5D7>?L5S!2A*Q@%R0Q\.30&98\$2F)KP2>;P1'@>2;ZH<!B1T`@;E 53 MT"U-36;2",D-CZ0>$W4KJ'/U$-8[QO[.Y:*BY4L_3;73WUXC.T_*?>Q$DN!- 54 MAH&6F.K!YWF?0L"C!Z`%C);SGE3G>7USTS;.H.;4?"6V38>S0;H<1WK#(N-R 55 ME[;:9Z?9>BD%-]X[Y:S#&"61&"#>&0F71B"J'?C,1>9CGJ;%#2J]Z[!'_K:V 56 M;G$\<BDH3A#4(1)LBI$#BQPQ!3,T8/:38+=><DT.I70C;UE"[=-K4/&]B3!, 57 ML-Y:-G&Q5:^#V?12YYN;F_PM5@QS8P%4F;.[R4QKYB7,5?2(>C3U[Q(Y?W). 58 M19Q(5Q6L%D,PX=9+KX''&SH@(!MNF.ZH9(<*!6<(`ARBTE;#V.@=RE>BN,F> 59 MBW`@.'$.N&@FB0QR"1,]A;3B8B:"*+W;9"<C(L'<X="#7$@:F5I2RRMRWT,N 60 MAY/*60R'8@@N;7!B$;L5[-HE!Y\*$@%=2`4:CKR8QHJ!!^Y$J`$(F(DTF\>U 61 M-[BFO@FZ7I*G3DO8BWQ/##=K1N!8JCJNR8Q(DAT<O-?Z#IE.1]9&+^F3+W"Q 62 MKD9_L8Z@OZ*.?/[EK:*P$-&V8$O35*<CU%_B)$V[9**1RSE6'LB&[$X23_H+ 63 M1Q^%O,_Q0GX)P3XX8GG#>F/#H)9G>K2^3".PS!NBZ:,:K[0>LOY<=Z'.&D]Z 64 M)XTT2O*-(31LIA'DQA4IH.(X95?-3]-0RP15.=I\*RYC-IQX-**/:1D,I$IM 65 MJ[S,0W%]MKG<0;Y8%D;R4MY#X?K%`I)R.HTOUHT$LXJ`EK<OBDT#EXS,6S.? 66 MS/\$1GDZ*I\LU0H3K-\C.]T#DO!6$5Y)=K)S04[A8.HG94'ELY?:79A\:2'H 67 M$AKOTI34*E(R5#B@S:HQ.V<.[+Q19YT9S"OU8T'$+%M/8-,Y%D083V\3Z[S. 68 M\2RG<%[OW\<OW7=5AI7Y)3O?K]A+RL<&TS`A+L>Y#9"&&:8QV_GN4\",_6EN 69 ME?(0@5ECN`'C(T=OO_2LLTRL;'UD3J8W[K,CI)^IIWPY9LL92TQWCG,UC)G% 70 MV.GS_6P),<OV>0J0'^=C>=)D[.UEOS63L-+.WKR_DD&"E`RC:9M(\T%_6*G[ 71 M$JZ8-I-H&@ZE&S!E\_O,2N9B*"69AD*G63&_=R*>WB/<S&#G)D\O$&52EH)2 72 MHVCL*%^D55&)W+K9R)R!6J-RQ/2P?:2-E39H_XZ;_?*.32_'9-.2!W5T:2'` 73 M>QO!MY`RU#ZZ#'W&B&;',C0>.V,=J*OFX[I#@&*@)]1GO.!(CLBA7<&73*;Q 74 MZHZDN07!QV.><$RBQ5O<YJVB#^@-WY"(G(6=":*S5-6:4Q8:EG>ARAC^RCJ] 75 M!535J<VNJL;8W7I^L()JWJKG,8&T-'E849'TT&P_Q0&Z+BUZ^=HO0O)#DL_G 76 MO[3O%2O,;$LVHOBWW,/P8&$;E"H5D,<VNL/DVID:2\O'LGLJ^8XED^Q52T). 77 MB'3*\_IKCOR5YUS$@<M8N)/.DNV1[3UDL`M+30<[T##B;GD_DKN6;I!U(<^\ 78 ML^2>*;8>4_3T+V)KY5ZLO59;>:U*TXN>54Y'O!6#62JLBW65LK.90\\-I,BH 79 MFW5:;Q`-CJ+Y4HD\440.'/_G*.6*A&4(W,@ZY05GC[$RBXL5B5#K\;10%CKM 80 M!>/&EJSJ/2Z[KBFZE!F/R"AT0][U>'?,NY<+?D/DS:=I01>MKN=DMJ_K';<( 81 M-)LJ]T$M>UVO[W0+2149>5O=<7844F1WES0XGU]W7(P-)*V02KKA44:Q2:B[ 82 M8;[KE[<"#_/LZ7&$_?YQX8V60+^0;5K8UKN73M:M4ZK)BIT"INHFR-CF_,OF 83 M5$PE%7)-BZL0:M*-G=QQ>Y#9W5AR.I^@UR\$27K3D'%0-^:R2?V>(_,U;?)" 84 MD_A545N6V<@V8UC'=L7RPI&8//UZ,$&B#D;,QCDO1*#Y1J_NNB7+40YX$\C- 85 MM5,>?E#7E)=\1396WB+<1?P\Z"F.^T=F\GAQQN-25C!`H?;/\-B_9Q7.]7T' 86 MS09C#N4&_-()^+Q3V.%?KK*]SX+_SC01G$KVQV2*B`?_GR7Z)V6))-Y_78+H 87 M_W)B:.4DT']M1F<5?MW/O&)FYJ.20KD7#2?Z/LI#X9/Y)&--QB#VU%VECTS_ 88 M?.3\BYF6_^@4T@-*^F#V!YO9OROSDSD9>0+H]R5^6H\F?DS>!],ET]W*L7QD 89 MSN</3/E49GQ6S)30GO%HDL2(="E1(K\B.+;UW:OL;J:/33Z4)\AMKHTTE-24 90 MU?NT]3=TLZ9I:,QYSS1KV.1QAFA;E7B7SM/Y+`B$DR=IBK?TW-F(`BS\(%^# 91 MWTS)WNN.$C:H.VH-!BU//1G99-5+I;=N.K@>3J^6#U&]HI.G':]!,,ROFB[E 92 M.)8^^XE#ZNX`T/:2-5.#!B_BA)P()\N&U-1,BKC-\-[$H9@5"$C[4*HL]B8C 93 M<\S,9TCDA1"')YQ="76'+"*U)]7%XX!BPZ'R2`4!3S4@?S&@,DG(]\()\]\` 94 M`P+WQ/L<C^:L91H)"G)DK9Y6'K[?QA[]JDI^,YO*0M(AXB%!Y%_R,%T[Z*JQ 95 M*H((QLZMZZ72J[)><N^)W6K1\L>,!M=B0%.ZO29'E<1C_#'7'.?+.>E4E:=\ 96 M`C"&@F"[_)&.%$-^%\`=EJ=3EH:45[WJBR%:5`M27G.D]*OC9%`M2:^D!.;/ 97 M9"`DV6(%Z*UE@U*W!>X/K?,I.B-!-,M*Q<O7$HKKB558S-&R:GKPYN-9E%9P 98 MIJRG6<OR%0X%C9E8_'Y*#_UB_1O")8;Y,1^-9>TW#08JM=RPZ/6*MQ'RN:L- 99 M>.!/$U%6E\4+'"R[?)ZMW*_.SKX[HY7P3,4*\=4,-SJQ(#-35`@/*.))/'GC 100 M%$.Y$O&F7C./6S;E8)W/+N7B6C1O*E^[&,;ZRKK)9[D.U26[,4\FGKS^IA-$ 101 M>%5I%8.*P@7B''D&VJ[KI*ECLPY9(^,W)'6\*J.NV*'OA5CC!G`B!S%/>EZ_ 102 MO$@G/1G]^SW5*O.2QB9YI02".E6B#"'1ZQFZ_2/YY!=MJ#-IR`W,[Y5:RDU, 103 MM^YG0M3,GJQZ+6<P%:-1LIP\>%&=.V#F9HWGX>,ZE\Q@ME\7O^4H>68WSG:[ 104 MU=J^-[Q1KG2>>T6JIAP29HO#J&6;[&8^OF!&X[N4CIG,'\BNC5#<TK8@C,G0 105 MMN%F\0;W#6U"<GSFNH\:;.'N=O4VNC1/<"-;I<HFR*.3MWP8Y7,'<T\6(Y87 106 M.F"19U3JTI*Z]A*X;U5#6[=0'=@7)#8'LK-.:#8\TEZ3CFXX&]/_".@[6F)2 107 M^<F&RG<I3KT#^=D1E.?A"$K>RY=N_DE]^7J^)AL.*&K`,]=#\#R,H9@XA,N* 108 M%KUV'CC@7<<.2^<8>W4S$%;XUC9/[RV.Q#?WLM2I8F+I&W3J.*/.LPN1<K+C 109 MH>_XN=C'H$XLHF*9'0`5>L[B&KD=4(&1)3'2`2!/LK?=SV<Y+LUB_.`LQE6S 110 MF,MO=W$A;ZS&G>,V"?_<5JD,38&@'-)>O<!0M"=V];+;?\R"5A9)5HT-B(JC 111 M*RRX6&!<*E:4[?)A%AQ:[9AD&E:9Q"@UTZKYN^X3IB3V9^J;G7<+5_[E`O+N 112 MLUWR8*_DPY0^X5C\+L,J&:4\QJY_]IDJ*YM_M6][J4F+%XK'R/*VU'=O+/\0 113 M&G:WVNTN>;0R1;3HTU9YM;1/%;U9IMS9$KLL,2=KXM7K\M18=2)'-?&%B&BH 114 M+`E<7^8814P-_43JBQM%\:8\PT]HPPA-[`L>R0D?5WWMK0YTQK15PA^&2USI 115 M8TH)R'\9(1OVQ3H\W(MU\W2'QS&.=<OGDG(I8R63HS[.O:/<&:R87V%FM%OD 116 M4V*C>!JP<'I+9;4<=>9T:0<`T\&4JYWK5>9AF%$Q&S.7C&@V@]605_B2C\8- 117 M"C=IXMJR*MX?%)R6CL<+E56GD>5!J-/-4\XJ''II=T]/ET59Z<7FU9E/7AQI 118 M89<K3%9OA8[\R,V4FL\^^HYTM&Q>/&$UEZK[SKRSVG#,W8/2#,N?.UEJVWJ. 119 ME;B:P3M/APO>L=KL_R-LG0QY_TWF+4F'):-6D'XY5*\*UN5:+L;0\OP9%@,\ 120 MG\[2);52;-?1GK>2)OXO683FMU+W5]%Y2&HE?=>+HV)KCW00@MF<E;,1.@;, 121 MGD/MB^-YZ*@TMHIVK(C/W1@N=>:N67"(X/KBMH9U5N\L?I<ZKL+@%10.*8?C 122 M<46N.<RU!`-WQB6=T=XR="IPG8*[+U.]6UM#3S`*D-^E@OVH3RX95!OESUT* 123 M^<UY)O`$;L],@*P5#3`T04,OU`6ZVI1'++KVG#.*Y/+(@+COC#)_@>HMX]IK 124 MD^J@C%K4.R7O[6'!3B.<7UJDFUQ;8:N%W;"]NP?L9U^]_N'LE57X-Y;VCM6_ 125 7SY0FJ4*1_QM*8,\GM?\!V-0IB>%)```` 125 126 ` 126 127 end -
Tst/Old/m24si.res.gz.uu
r7023ce rdbf609 1 1 begin 640 m24si.res.gz 2 M'XL(")F*>U0``VTR-'-I+G)E<P#L7&M[VS:R_JY?@<C;+AE!MBC?(].[4=JT 3 M;M,TC7O;RFJ6DB`;$DG))"7;R69_^\X+@#>)<MRFN^?L<X[S9$SB,C,8#`8S 4 M`]#GWW]V]I(QYIP2B&1XR2)WM]UJ[7+KEM_QMS8?S3NU<].JC5:^#*?,=^M/ 5 M;IBX]8*Y+[:3VZ3>8?C9V6')W5PP&;.G\5!*SH+92+W.EB*ZB60B,FR["ENG 6 MEO9YPIZ>/SL[P[OJ](3=X#GT`CP7:*%T-A<AE88SO$3"&ZF71#W>H4S1*I:E 7 M9/=`-DZ\9!%;/F=UX*_;FGV6#D(1):Z+5(O/*;+]%61@JTZ_[T1L<!(R)3%" 8 M!E[N1*)X%Z-:*\-R`"QR)#R?23?P;M6CU;9SR1^BA1H2(SH.KW?JO*U@/>U7 9 MYQ(%A4Y'#V$NG-UD#*)!S<GZ'Z_TQZRL26H\BQ1CT)W:3=K7:64,6_6BFA"_ 10 M8<(F[CXXI>XC+_%`VIL3[9$8L63&QM+/M,31FDDS6,938*.`)1+)(B+9,B\F 11 MQJ'/-)Q.K4W_4S'5WK;YW5M^U^:W;_GM';]5E8:G6D96J?K0G\7"\DM#+I)- 12 MY:;:C;*^2K'%K1@N:/2*==]>P9$JK692:YIJ/R*&V]#?QX^IQ4B,9:@:T'N& 13 M?U6#?^.\.JM*6SFO,M0<HK(697T//D(N2HDQ6XM@SI9>E!L%#'$>B:6<+6(U 14 M_6PX"Q,1)D^RSD?;U!D]K57+DVN\HS1V*GV?15EA6ZGBI4ATYRHE(IZH7O,U 15 MCF:!UL"U23A/O'#D12/,Q5IEG(S&EWZPJ>Y*^H/*NNO%+)$TTA<R3BH;S+VH 16 M3<)ZC>>J>F#>6'D=^S*XK*9\&<W$(!11964DXHWLWCL.Y][:]KVUN_?6[M]; 17 MNU<M^3FMKV1<+=C-5>-[ZFZ$O+Q*ONY65I(A$HFDO:.JDBQ[=3FMM:KR)$[> 18 MZ&7Z1JV)JC:3@F%H*UOYXJS+ZI>TPT2>O^W+03U?">UT>7B^;]7GT6Q86#SM 19 MW6SQF"9YE;(X>OW4-ZYZM7S(?).VSQ9)S9BVU4&X9&_:>['<#L7--BJ(/^UX 20 M4)6E?`\[<SZLT=RBUV=V9K^ID=X=U\RX;<PXM2!#/O>&4^]2L"^T(*B`1LN> 21 MOOD%#-"2HOT](=4W3,8=EI<!2TB#K-&>/&86"T_=9ON`T=IGX8F;/CUR6\RF 22 M)N]J3%E3A<?SYU<><U711=WC`S[D(R[XF%_R*]J?)WS*?1[PD,_XG%_SB,<\ 23 MX0N^Y#=<#9E?U!M_2.^GO,N?\<_XY_PY_X)_R<_X5_QK_H)_PU_R;_DK_AU_ 24 MS<_Y]_P'_B/_B?_,_\9_^;C>%S2/Z`SI2=E1OSU/EY&/8$GI.E0J3]Q]]=N5 25 MLM&V5;46(?J.+2W"GI1]UXV9S=X1$A?XWJM&&JIIH7*W54:0TFGM:TK._OX* 26 MJ0*Q!U!C*U1!-)WW').9>]+Y3BW%S*R0G;(6,%(YZ9PFY'F\_=@*[:;3[S#C 27 MK3"+6M@Y2=WYA+76.3:4!B))E4Q/%ZT#4H`;4H0%*41,BG%-"C(C10E(8::D 28 M.)(4Z)(429!"#4FQO&RR_R@,OY`2_$S*\",IQ?>D'*])25Z1LKPDI7E!RO,5 29 M*=&7I$S/2:D^(^7J\J<?CR%5NH)2D.3VV^E4[K>;I(.9:/-&I^2A[J6MV@>M 30 ME69ZSB!G,V5-,V>E*5O3D?>U6D>WL*BV5C;"V@`APBF;(!\;_Y:V-ZDY<C"] 31 M%W6%_I&2SH5^VP+X$\`G`)\"_!G``K`!'@,T`#A`$V"[MMNF7[N[`'L`^P`' 32 M`(<`1P#'!/9:``X`>NRAQQYZ[*''WD%M!_C0B*$10R.&1@R-&!HQH&5`RX"6 33 M`2U%9_2C=HX3`+>VAP9[:+"'!OM`N0^4^T"Y#Y3[0+D/E/M`N8\>^^BQCQX' 34 MZ''@U+`UL;\`_!7@*4`7X!G`9P"?`SP'^`+@2X`S@*\`O@9X43L`W0/0/0#= 35 M`]`]`-T#T#T`W0/0/03=0W!ZB!Z'Z'&('H?H<7A0^P;X$#^Q;P%>`7P'\!K@ 36 M'.![@!\`?@3X">!G@+\!_`+0JQV"[B'H'H+N$>@>@>X1Z!Z![A'H'H'N$3@] 37 M0H\C]#A"CV/T.'9JI#P70-D'^!7@#<#?`3R``<`08`0@`,8`EP!7`!)@4CL& 38 MZ6.0/@;I8Y`^!NECD#X&Z>-CA'\M``>@#;#+U((CL`]0FP*=#Q``A``S@#G` 39 M-4`$$`,D``N`)<`-P"W`7<UI'0+?$0#H.J#K@*X#N@[H.J#K@*YS`(`>#GHX 40 MZ-%&C[93>PN$[P#^`?`>X)\UIPTT;:!I`TT;:,@%@.'!LD\7;-LLV$=8J%M_ 41 M^N33/UOVXP9O;N^TJ/?>_L'AT?&3SHE[^I>_/NT^^^SSYU]\>?;5UR^^>?GM 42 MJ^]>GW__PX\__?RW7WJ8J/ZO;_[N#8;DX%U>R<G4#\+9_#J*D\7RYO;N[;M_ 43 MO/]G2EO9LEB^%=:6S5R7F7TIW2Z,(8H=;:C>5W5Q*KO0<'I;/:??W'7Z[)[> 44 M[0_UYEN]=K^)ET8!TX=LI#>(?_3\A2B;21((&^9>V?#45;NK034T&ZCP8Y&7 45 M-G7QAP@.9#@+)'F7)8+P73#4'U.42KWZG\!*1@U-XG4[=:?$]#-VPDXEQ 46 M2EM0V)P:"=*KB]=.0=#3$_(T9A&;GH;:L!=^=G9([Y9@>>C%(M8XE`,]A5/T 47 M.#*(D)RQ?#A>_HD[)?2^ZS=6)]V-R"4)&T[3MW?\?+:-S"(([0,"''O#9!9M 48 MDB!;E='.3O/>'PK^@_F"0@,Y"]G]39O-;)AJ/MRV&BI1]1N-M6'^SM')P2ST 49 MAD.Y<71F<,I/=QU.__Z=@R2'=E?[MR%^K8SSBK@<-RX[9,!=1K\NZ=?5VKBO 50 M'C#N:2""672WV5LQ(DB?EB(:9`J>FHE'KG%D#7^A"W-@7*=BPU/'^+OO%"(7 51 MIL-H\?M:&HJA)D/Y+H\%PCP48*.!"MXM!7VQ%'YS.9-#T=CE1D07=:28]>`6 52 ML1AQYB4LN1(LF`4B3#@;W#'2:+D4R%));^"+F%:6]&>#NT383R[JF;N>4G?8 53 M;R2?S!):+H8)BK5G0R^IYN3\[.47/[QX^KJ2`_Q/?5)+8Z/PHD&[[J[-1G*) 54 M_7?O`7,=+H*!B-Z(S0M8:1Y%`Q1RIC.^%$.VX$*]+GIAH]UW6QTFZ,G13ZYH 55 M.$8C+*92%F)D#<AB8=.TRV8(38977I37NXBT2**:-UK`M+83V++WF3:;[3<2 56 M\<*'QWY1;V^;F`"Q(-,Q)RV4!GZ[<M7V8;SBL=-*77G5*=#-@U-T#MR@F4YN 57 M,133G@GU[@7]QJ(7-#*E9DH:09\J8S4%%E7:A4IA*C\I5:3!1S86_=#00[06 58 MM&JRMI!5HI3.F/VHH86DF^V8%Z=E_RJ+XLK[U>[7U3972DKQF>:BYW!,:LI` 59 MP7BNVM.5Y@_4N_EFVYHI7D*AYS5_652^B&+4+G\5"5\&G35]X/.\XB7V1J?U 60 M.-2K8I<"I+:JF/=>&FV=N_,&:5CDSM?UYV5!?TANW9[LN^W'LNET<L%^K'[/ 61 M::K2QTBNJ;KAIZ7UN5*;Y]"$@C9#N_7X5O3[I='O]CWZ'6DM%9]TZ:&@O==& 62 M[Y4<5^J$KKM^;!%2NS'O!<V<=J;@I*(*<<YH"6=>#)%=/W+)IT?&C9Z.*QE= 63 M63"%6=<_6C_`5Z%PGA::]76]MA`5=;>:9H92/_#C*LSZH7%1/\[3%"O(G=:] 64 MV"W]1%:B:>7/1DIV8:;SJ57;J6YJ8XY;9HKMO&6!4L:N,4E:%J_2HJ+5>O\; 65 M)%ZR3W/ISF5#J?3[BC&VJD1W46]5RVP%JS%TUYM-W@JOQB:D+DAAX]C=SJU= 66 MFX>IXOYND[EB*^=RD[%\@)4D8@&Y(!\.3P*58<$3F9KP4N3Q1G@:*+GI<AB0 67 MT`T8E,.T3&LRDT9(KOE<Z3%1MP*;ZX?0[J3V=ZD6%2U?^M74._W-%9+\I-RG 68 M[EP1O,XPT!+3/?@R[U,(>`P#9H+1<ME3ZKRTM[>=U!DTDEH^2&RST6*8K,>1 69 M<E047.[25OOL-%J94'`CWVIG'<8HGHLAXIVQ\(@#4>W`9RXRG_`D*6Y0R5WE 70 M(4KQ9V?G!D<Q`T%Q@M`7)&;@'%@4QQ3,X#CH)\%N9'R%@Q>XD3<LIO;)%:CX 71 M<BI2(5BWED-2;-DVA$TO-M_>WN:W6#',B]1I9^;L;K.TM3J:U_2(^GSFW\5J 72 M_.2<BBA6KBI$+480PHU,KH!'CEP04`VWTNZH9,<:!6<(`ERBTM9L;/6.U2M1 73 MW&9?BG`H.$E.W0RYPCDR;9F$"5<H:,5%3`3SY&Z;G8V)!/-&(XEYP>E0JI;4 74 M\I+<]Y`K=A(UBI&Y7;#%243L1K`KCQQ\G%<)Z$(BT'`L(^(5C`?>5&@&!,Q$ 75 MDHWC2@ZOJ&^,K@/RU&D)R[DOQ6B[EDXXEJJ):S(C$F<'!^^,OF-.9V-KJQ?W 76 MR1>XJ&ON+^H(^BOJR.=?WRH*"Q%M"[8T24PZ0O_$;MQT2B8:N9Q3[8%LJ>XT 77 MXW%_Y>BCD/<Y7<DO(=B'1"PYLAM;*6IU?DCK*VT$D<D1FGY0X[768ZZ?F"[4 78 MV>!)[I211DF^,82IF(F#W+@B!53D4W4U\DP;FCE!58XVWXK+F%-)?#"BCV@9 79 M#)5*[>J\S'UQ?;:YW&%^L2S2F5?SC3/.8@'-<C*++NKI#&85`2UO7Q2;!AX9 80 MF=MT/)G_N7)^JEMA@/:&N3,],!/R(9-7FCO5N3!/X7#FQ^6)RD>OM+LP^-)" 81 M,"7$[]J0]"K2<ZAQ0)MU8W;.7-CY5)U-9C"O-(^%*6;9>H*8SK$@PFAV$UOG 82 M-L>S&L*YW=\D+]/WH0(KRTMUWJS8:\J'&S(Q23G*;8`RS#"-V<ZW20$S\2>Y 83 M5<I#!&9-X`9,3ERS_=*SR3*QLO51.9G>I,].D'ZFGNKEE*UG+#'<)<[5P#.+ 84 ML-/G^]D:8I;M\T[U=8,RXO*@R=@[ZWYK-L-:.WO+_H,,$F8I%31M$TG.]/L' 85 M=5_#%=%F,I^%(^4&S-ARDUG)7`RM)+-0F#0KQO=61+,-DYL9[-SDF06B3<I: 86 M4)HJ&CO)%VE55**V;C9.ST"M<3EBNM\^TL9*&[1_Q]/]\H[-!A.R:?&].KJV 87 M$."]C>%;J#DT/KH*?2:(9B<J-)ZX$Q.HZ^83VR5`,=!CZC-9<23'Y-`^P)>, 88 M9]'#'<GT%@2?3'C,,8@6;W&'MXK)BV7NG%>D#@SSKW`,;4J+OK+Q+I!"P*JW 89 M\LE>VSV*%>EF45IIQ9_U'F8SL5<V$S4Q`?D]XSMJRMN9,BC[P;+;'KG=5ZGJ 90 M*L52`Z*9D;+_R%6_U6D126`0"6_:65O!JKU$'KB@L"9DP#R1=,M67=E^TR#K 91 M0OYM9\W)T6(]I1CD/R36RAW-^'Z.]OUTS%#T3PH9%W/+]**N$U\.<^FY@403 92 M=;->V0VBP5&T7"M1YW+().-_CE+I-=97X,VM5[S@,C%6%G&Q(A8ZLGE5*`O= 93 M]HJ)8&NV:8/C:VJ*CEDF(UI:W9!W)>].>'>PLOO.Y7*6%'31ZDHWLR!=>=HB 94 MT&SJ#`*U['5EW^T64A,J?K6ZD^Q`H2CN+FEP/K[NI.AA*UHAE73#DXQBDU!W 95 MPWSO+!M4B7'V#!]AOW]:>*,ET"_D;%8VQ^[`S;IU2C59L5O`5-T$><]<?MF8 96 MB@F90L9F=15"3;J1F[L_]PJ[&RE)YP.4_4*H84ROBB:Z$5=-[`T'SX^,R0O3 97 M]*F.?;+\0+:EP3JV*Y87#I;4&=*]:09]O)!N/\M"')=OE_K&6+P>*T`V@=JB 98 M.F7V`]M07O.XV$3[7'"Z\.M>?VO2/TD'CQ=W,BGEU@(4&B\'C_T-JW!I;@T8 99 M,:3F4&UC+]R`+SN%??+%0S;)1?#?F6Q1]U?_F'P+R>#_<RW_IER+PON?2[/\ 100 M7TZO/#B5\E^;%WF(O#8+KYC?^*C42NY%PXG>1'DD?#*?9*S)&$12W_CYR"3* 101 M1XZ_F*_X7YV(N4=)[\VA8#/[G\J?9$Y&GD;Y?>F3U@?3)VGV!,,ET]WZPS(G 102 M?V#BI#)O\L!\`^T9'TPUI%.ZEFY0=_%/'7.#*;OAZ&.3#]4Y;)L;(PTE3<OL 103 M/FW]#=.LF39,S7DO;=9PR.,,T;8J?:V<I_-%$`@W3W44[[IYBS$%6/B%K`=^ 104 M9TKVSG14L$'=49MB,/-I!J.://1JYHV7#*]&L\OUHTA9=/*,XS4,1OF%S;4< 105 MQ]K',Q$^NG4!:'O)FFFF(8LH)B?"S;(A-3V2(NZ4O3=1*!8%`LH^E"J+O<G( 106 MG++T8Q[]1>N4JP\"E<M%:D^JB\<AQ88C[9$*`E(W('\QH#)%2'\;_088$+C' 107 M\@D>TQ,+?(9IZ5HSK#Q\UY_*ZDJ.;]I02#I$,B2(_$L>IAL'73?61?H#UAM/ 108 M)LJKLEYP^=AIM6CY8T3#*S&D(=U<D:-*TY/Z8UYZ**[&9*Z12>T30#`4!#OE 109 M3UW4-.0GZOBRM3B<\FRH^;*KOKNA1;4RRX]<-?O5<3*HEF:OI`3I3YJ!4&2+ 110 M%:#W*&-*G[EO#JWS(;IC033+2L7+A_O%]<0J+.9X734EO/EH,4\J)%/6TZQE 111 M^2*$AJF96/T*R;!^4?^:<(E1?EA&O#SZ3<Q`I=8;%KU><3M'5O1A#)MOAHOJ 112 MLGH-@F57N+.5^_GKU]^^II7P7,<*T>4"]R*Q(#-35`@/*.*)I;JW"58N1;1M 113 MULR'+9MVL,X7`[6X5LV;SM>NAK&^MF[J6:U#?55MPN.I5)?(3(((KSJMDJ*B 114 M<($D1YZ!L>LF:>HZK$/6*/4;8ANOVJAK<9C;%=:D`9S(02SCGNR7%^FTIZ)_ 115 MOZ=;95[2)$U>Z0E!G2[1AI#H]5*Z_1/UY!=MJ#MMJ`W,[Y5:JDW,M.YGDVB$ 116 M/7WHY9;A3(S'\7KRX*OJW`%+[Z=(B4_4/#*#V7Y=_"*BY)E=Z[]LL3&\T:YT 117 MGGM%JJ8<$F:+(U7+-MG-G+]@0?P-E&.F_P@&NC9"<4/;@DA-AK$-UZOWH*]I 118 M$])?OYI+,YK9P@WHZFUT;9R01K9*LR]K6_Q6_2F/E`,(]VPU8OG*!"SJI$=? 119 M_=&71[*_2>&8%KH#>T;3YF+NK#,:#9\;K\E$-YQ-Z#\"^M*Y!]E0]:ZFT^Q` 120 M?G:0(R4.<M3M=N7FG]GKE]P-V7!(40.>N6%!2O!03!S"946+7CL/'/!N8H>U 121 M<XP#.V6$%;Y8S=-[JYSXZ>TF?3876^8>FC[.L'EVK5`-=C+R73^?]@FHDXBH 122 M6&4'0(6>L[A&;0=4D,XE"=(%($^RM]O/1SDIC6)R[R@F5:-8JB]@<:UMHOG. 123 M<:<)_]Q6Z0Q-@:!BZ<`N"!3M25R][`X=LZ"519)5O`%1D;O"@HL$^-*QHFJ7 124 MLUEP:(UCDFE891*CU,RHYN^ZE8?O_)_K+U_>KER<5PM(;K)=ZF"OY,.4/H18 125 M_;K!*AFE/,:V/_U4EY7-O]ZW99*FQ0O%^#8>ET;++L,`=K?:[2YYM"I%M.K3 126 M5GFUZ1]^,=XLT^YL25R66)(UD;:MSEYU)W)48U^(.?[T2!QXOLHQBH@:^K'2 127 M%V\^C[;527A,&T:8QKZ0D1KP:=4WT_I`9T);)?QAN,25/J::`?,G40S;%W5X 128 MN!?U].D.CQ.*UMZ5SR754L9*)D=]DGM'N3-8,;["R&BWR(>D__P(_G;++*SE 129 MJ#.GRS@`&`Z&7.U</V0<J3`J1I..)2.:C>!AR"M\R0_HW:>*C=57<'!2\ 130 M*AV/%RJK3B/+3/RKFZMG;1@&HGM_A3`9%-#0)+47HVR%3,6X'TO(8+!+;+!K 131 M8A%H?WUUTDF67%&TM62RD8RMCZ>[]W36Z>AFP4B`T"N[6Q0_IS+(8N=JR\G= 132 MECI>SNDLND*NCHJ94G-XXL05T=HP-\)J?DT^\6L>UQQS+LCKH7]HB&JW=8"5 133 M&&?PGD6]8,?:V?\+6Z<D[Q^9MTG4GE%S9M^7ZB&QKM:RJZ%5_%EE4Y-C#ME4 134 MEK#2PXYJKXU"XHTL0G,-8C\&\S!347C'Q1%P[2.*$.A-Z>]&H`:T]P-R<;BO 135 MN=[&UFJ'CNQ:78!26[I&@1`!]86_-6BYSI>G.[O0&UH'<+#EL.\">\W#C!)H 136 M..\\S"!;!DSU%7?H/J83J]N&2('\)1KRAI%+`M"&\D,E);^)9\)[^NIH.B"M 137 ME6S@8$3#<<`"K#;E(QG/+2^EDIN5@1Q]_F[Y@JRGAMJC2>50)I]8YQY[^WUB 138 M/T:(7U*)3896F.YV:?J09O?@%+=I!A\I'U]>RR?J)$?2.=,^)]'T-)G."4LN 139 @_3(+F4WHM\WV.@V3F(3^[IP%"<9T=?<-^G938GA1```` 2 M'XL("'Q2TE0``VTR-'-I+G)E<P#L7&M[VS:R_JY?@2C;+AE!CBC?(].[4:]I 3 MTS2->]O*:I:2(!L21<DD)=O)9G_[SHL++Q+EN$UWS]GG'.?)F,1E9C`8#&8& 4 MH,^^__39"\:8=TH@EM$%B_W==JNURYT;?LO?N'RTZ-3.3*LV6H4RFK+0KS^Y 5 M9N(FF"U"L9/>I/4.P\_CQRR]70@F$_8T&4K)V6P^4J_SE8BO8YF*#-NNPM:I 6 MV3Y/V-.S3YX]P[OJ](1=XSD*9G@NT$+I?"$B*HWF>(E%,%(OJ7J\19FB52RS 7 M9/=`-DF#=)DX(6=UX*^[FGUF!Z&($M=%JL5GBVQ_#1G8JM/O6Y$8G(1,28R0 8 M@9=;D2K>Q:C6RK`<`(L<B2!DTI\%-^K1:;NYY`_10@V)$1V/USMUWE:P;OO5 9 MN41!H=/1?9B+YM<9@VA0\[+^QVO],2L;DAK/8\48Z4[MVG;U6AF_3KVH)<1N 10 ME+*)OP]&J?<H2`-0#A9$>B1&+)VSL0PS)?&T8M($EO$4N"A@B46ZC$FT+$B( 11 M;Z@SC:93:]-_*Z7:FS:_?<-OV_SF#;^YY3>JTO!4R\@J31^&\T0X86G$1;)6 12 M;*K=*.NK]%K<B.&21J]8#]TU'%9G-9-:T53[$3'<AOH^>D0M1F(L(]6`WC/\ 13 MZPK\&Z?56]?9RFF5D>80E;4XZWOP`7)1.HS96LX6;!7$N4W`$!>Q6,GY,E'3 14 MSX;S*!51^B3K?+1#G='363<\N<)[2F&G,@Q9G!6VE2I>B%1WKE(BXHGJ-5_C 15 M>#[3&K@Q"6=I$(V">(2YV*A,TM'X(IQMJ[N4X:"R[FHY3R6-]+E,TLH&BR!N 16 MD[!>X;FJ'IBW5EXEH9Q=5%.^B.=B$(FXLC(6R59V[QR'=V=M^\[:W3MK]^^L 17 MW:N6_(+65SJN%NSVJO$===="7ERF7W<K*\D0B532UE%528:]NIS66E5YFJ2O 18 M]3)]K=9$59M)P3"TE:U\_JS+ZA>TP<1!N!/*03U?"6V[/((P=.J+>#XL+)[V 19 M;K9X3).\2ED<O7[J6U>]6CYDODG;Y\NT9DS;^B!\LC?MO43N1.)Z!Q7$G_8[ 20 MJ,I1KH>;^1[.:.'0ZR=N9K^ID=X<-\RX:\PXM2!#O@B&T^!"L"^T(*B`1LN> 21 MOOX%#-"2HNT])=4W3"8=EI<!2T2#K-&6/&8.BT[]9ON`T=IGT8EOGQ[X+>92 22 MD[<UIJRIPA.$B\N`^:KHO![P`1_R$1=\S"_X)6W/$S[E(9_QB,_Y@E_QF"<\ 23 MY4N^XM=<#9F?UQM_2.^GO,L_X9_RS_CG_`O^)7_&O^)?\^?\&_Z"?\M?\N_X 24 M*W[&O^<_\!_Y3_QG_C?^RX?U/J=Y1&=(3\J.^AT$NHQ<!$=*WZ-2>>+OJ]^^ 25 ME(VVJZJU"-%W[&@1]J3L^W["7/:6D/C`]TXUTE!-"Y7[K3("2Z>UKREY^_MK 26 MI`K$[D&-K5$%43OO.28S]Z3SG9K%S)R(G;(6,%(YZ9PF%`2\_<B)W*;7[S#C 27 MK3"'6K@Y2=WYA+4V.3:4!B*U2J:GB]8!*<`U*<*2%"(AQ;@B!9F3HLQ(8::D 28 M.)(4Z((429!"#4FQ@FRR_R@,OY`2_$S*\",IQ?>D'*](25Z2LKP@I7E.RO,5 29 M*=&7I$R?DU)]2LK5Y4\_'(-5NH)2D.3VVW8J]]M-TL%,M'FC4_)0]VRK]D%K 30 MK9F>,\C93%G3S%EIRC9TY%VMUM$M'*JME8VP-D`(<,HF*,3&_U#;&VN./$SO 31 M>5VA?Z"D<Z[?'@+\">`C@(\!_@S@`+@`CP`:`!R@";!3VVW3K]U=@#V`?8`# 32 M@$.`(X!C`GLM``\`/?;08P\]]M!C[Z#V&/C0B*$10R.&1@R-&!HQH&5`RX"6 33 M`2T%9_2C=HX3`+^VAP9[:+"'!OM`N0^4^T"Y#Y3[0+D/E/M`N8\>^^BQCQX' 34 MZ''@U;`UL;\`_!7@*4`7X!.`3P$^`_@<X`N`+P&>`7P%\#7`\]H!Z!Z`[@'H 35 M'H#N`>@>@.X!Z!Z`[B'H'H+30_0X1(]#]#A$C\.#VC?`A_")?0OP$N`[@%<` 36 M9P#?`_P`\"/`3P`_`_P-X!>`7NT0=`]!]Q!TCT#W"'2/0/<(=(]`]PATC\#I 37 M$7H<H<<1>ARCQ[%7(^4Y!\H^P*\`KP'^#A``#`"&`",``3`&N`"X!)``D]HQ 38 M2!^#]#%('X/T,4@?@_0Q2!\?(_QK`7@`;8!=IA8<@7V`VA3H0H`90`0P!U@` 39 M7`'$``E`"K`$6`%<`]P`W-:\UB'P'0&`K@>Z'NAZH.N!K@>Z'NAZ!P#HX:&' 40 MAQYM]&A[M3=`^!;@'P#O`/Y9\]I`TP::-M"T@89<`!@>+'N[8-MFP3[`0GWX 41 MIX\^_K/C/FKPYL[C%O7>VS\X/#I^TCGQ3__RUZ?=3S[][/,OOGSVU=?/OWGQ 42 M[<OO7IU]_\.//_W\MU]ZF*C^KZ__'@R&Y.!=7,K)-)Q%\\55G*3+U?7-[9NW 43 M_WCW3TM;V;)$OA'.0Y?Y/C/[DMTNC"%*/&VHWE5U\2J[T'!Z#WM>O[GK]=D= 44 MO=OOZ\T?]MK])EX:!4SOLY'!(/DQ")>B;"9)(&R8>V7#4U_MK@;5T&R@(DQ$ 45 M7MK4Q>\C.)#1?";)NRP1-&Y@N6"J.:`N%W@-.X67F!R<PNMTZD^+[U'D1YU, 46 MC%/:@J+FU$B07GV\=@J"GIZ0IS&/V?0TTH:]\//X,>G="BP/@T0D&H=RH*=P 47 MBA[%!A%R,TX(QRL\\:>$/O3#QOJD^S&Y)%'#:X;NXS"?;2.S&$)[CP#'P3"= 48 MQ]LDR-9E]/AQ\\X?"OYGBR6%!G(>L;N;-IO9,-5\^&TU5*(:-AH;P_R=HY.# 49 M>10,AW+KZ,S@E)_N>YS^_3L'20[MKO9O(_Q:&^<E<3EN7'3(@/N,?EW0K\N- 50 M<5_>8]S3F9C-X]OMWHH1@7U:B7B0*;@U$P]\X\@:_B(?YL"X3L6&IY[Q=]\J 51 M1#Y,A]'B=S4;BJ$F0_DVCP6B/!1@HX$*WAT%0[$287,UET/1V.5&1.=U9)CU 52 MX):)&'$6I"R]%&PVGXDHY6QPRTBCY4H@2R6#02@26EDRG`]N4^$^.:]G[KJE 53 M[K'?2#Z=I[1<#!,4:\^'05K-R=FS%U_\\/SIJTH.\-_ZI([&1N%%@W;=79>- 54 MY`K[[]X]YCI:S@8B?BVV+V"E>10-4,AI9WPEAFS)A7I=]J)&N^^W.DS0DZ>? 55 M?-'PC$8X3*4LQ,@9D,7"INF6S1":#"^#.*_W$6F11#5OM(!I;:>P9>\R;3;; 56 M;RR290B/_;S>WC$Q`6)!IF-.6B@-_/;ENNW#>,4CKV5=>=5IIIO/3M%YYL^: 57 M=G*+H9CV3*AW;]9O+'NS1J;43$ECUJ?*1$V!0Y5NH5*8RH]*%3;XR,:B'QIZ 58 MB,Z25DW6%K)*E=(9LQ\WM)!TL\?FQ6NYO\JBN/)^M;MUM<V5DE)\IKGH>1R3 59 M:ADH&,]U>[K6_)YZM]AN6S/%2RGTO.(OBLH74XS:Y2]C$<I99T,?^"*O>(&] 60 MT6L]BO2JV*4`J:TJ%KT71EL7_J)!&A;[BTW]>5'0'Y);MR?[?ON1;'J=7+`? 61 MJM\+FBK[&,L-53?\M+0^5VKS`II0T&9HMQ[?FGZ_,/K=OD._8ZVEXJ,N/12T 62 M]\KHO9+C6IW0=5>/'$+J-A:]63.GG2DXJ:A"G#-:PID70V17#WSRZ9%QHZ?C 63 M2D;7%DQAUO6/U@_P52A<V$*SOJXV%J*B[E?3S%#J!WY<A5D_-,[KQWF:8@VY 64 MU[H3NZ.?R$HTG?S92,DMS'0^M6H[U4U=S''+3+&;MRQ0RM@U)DG+XJ4M*EJM 65 M=[]!XB7[M)#^0C:42K^K&&.K2G3G]5:US-:P&D-WM=WDK?%J;()U00H;Q^Y. 66 M;NW:/+**^[M-YIJM7,AMQO(>5I*(S<@%>7]X,E,9%CR1J8DN1!YO1*<S)3== 67 M#@,2^3,&Y3`M;4UFT@C)%5\H/2;JSLSE^B%R.];^KM2BHN5+OYIZI[^^1)*? 68 ME/O47RB"5QD&6F*Z!U_E?0H!CV'`3#!:KGI*G5?NSHYGG4$CJ=6]Q#8?+8?I 69 M9API1T7!Y2YMM<].HY4I!3?RC7;688R2A1@BWAF+@#@0U0Y\YB+S"4_3X@:5 70 MWE8>HA1_'C^^QE',0%"<(/3]B#DX!Q;%,04S.`[Z2;!KF5SBX`5NY#5+J'UZ 71 M"2JAG`HK!.?&\4B*+=>%L.G%Y3L[._P&*X8%L3KMS)S='69;JZ-Y38^H+^;A 72 M;:+&3\ZIB!/EJD+48@0A7,OT$GCDR`<!U?"A[8Y*=JQ1<(8@P"<J;<W&P]ZQ 73 M>B6*.^Q+$0T%)\FIBR&7.$>F+9,PX08%K;B8B=DBO=UAS\9$@@6CD<2\X'3( 74 MJB6UO"#W/>**G52-8F1N%SSD)")V+=AE0`X^SJL$="$5:#B6,?$*QF?!5&@& 75 M!,Q$FHWC4@XOJ6^"K@/RU&D)RT4HQ6BG9B<<2]7$-9D12;*#@[=&WS&G\['S 76 ML)?TR1<XKVONS^L(^BOJR.??W"H*"Q%M"[8T34TZ0O\D?M+T2B8:N9Q3[8$\ 77 M5-UIQI/^VM%'(>]SNI9?0K`/B3ARY#8>6M3J_)#6EVT$D<D1FKY7X[768ZZ? 78 MF"[4V>!);Y611DF^,416S,1!;ER1`BKRJ;H:>=J&9DY0E:/-M^(R9BN)]T;T 79 M,2V#H5*I79V7N2NNSS:76\POEH6=>37?..,L%M`LI_/XO&YG,*N8T?(.1;'I 80 M+"`C<V/'D_F?:^>GNA4&Z&Z9.],#,R'O,WFEN5.="_,4#>=A4IZH?/1*NPN# 81 M+RT$4T+\;@Q)KR(]AQH'M%DW9F?,AYVWZFPR@WFE>2Q,,<O6$\1TA@41Q?/K 82 MQ#ES.9[5$,[<_C9YF;[W%5A97JKS=L7>4#[<D$E(RG%N`Y1AAFG,=KYM"IB) 83 M/\VM4AXB,&<"-V!RXIOMEYY-EHF5K8_*R?0F?7:"]#/U5"^G;#-CB>&N<*X& 84 MGEF,G3[?SS80LVR?]ZJO&Y01EP=-QM[;]%NS&=;:V5OU[V60,$M6T+1-I#G3 85 M[^[5?0-73)O)8AZ-E!LP9ZMM9B5S,;22S"-ATJP8WQL1S[=,;F:P<Y-G%H@V 86 M*1M!J54T=I(OTJJH1&W=;&S/0)UQ.6*ZVS[2QDH;='C+[7YYR^:#"=FTY$X= 87 MW5@(\-[&\"W4'!H?784^$T2S$Q4:3_R)"=1U\XGK$Z`8Z!'UF:PYDF-R:._A 88 M2R;S^/Z.I+T%P2<3GG`,HL5;W..MH@\H1Z]IBORUG0E3Y^BJ!WYYTK"\"U76 89 M\%?6F2V@JDYO=E4UUNZZ^<$*JGG+S6,"96GRL*(BZ6'$_A('Z*:TZ.4;OPC) 90 M#T4^'__&OE>LL*,MV8CBSV8/*X.U;5"IU(P\MO$M!M?.U%A9/I;=4\EW+)5D 91 MKUH2:D"D4U+V'_CJMSKG(@D,8A%,.QNV1[67R&`7EIH)=J!A)-WR?J1V+=,@ 92 MZT*>>6?#/=-B/:7HZ3\DULJ]V'BMGO9:M:87/:N<CKT?>U[7*3N/^?3<0(J, 93 MNCDOW0;1X"A:;92H$T7DP/$_1ZE6)"S#+%@X+WG!V6.L+.)B12+T>GQ9*(O\ 94 M]IIQ8QM6=8O+;FJ*+F4F(S(*W8AW)>].>'>PYC<LY&J>%G31Z4H_LWU=>=HB 95 MT&SJW`>U['5EW^\6DBHJ\G:ZD^PHI"CN+FEP/K[NI!@;*%H1E72CDXQBDU!W 96 MHWS7+V\%$N/L&3ZB?O^T\$9+H%_(-JUMZ]V!GW7KE&JR8K^`J;H),K:Y_+(Q 97 M%5-)A5S3^BJ$FG1C/W?<[A1V-U:2S@<H^X4@R6P:*@[JQEPU<;<<F3\P)B^R 98 MB5\=M669C6PSAG5L5RPO'(FITZ\[$R3Z8,1NG*M"!)IO]/JN6[(9Y4`V,[6Y 99 M=LKLSUQ#><-79!/M+<)=Q*\[/<5)_\0.'B_^9%+*"LY0:/PS//:WK,*5N>]@ 100 MQ&#-H=J`G_LSONH4=OCG]]G>E[/_SC21NGG[QV2*2`;_GR7Z-V6)%-[_7(+H 101 M_W)BZ-Y)H/_:C,Y]Y+5=>,7,S`<EA7(O&D[T-LHC$9+Y)&--QB"6^J[2!Z9_ 102 M/G#\Q4S+_^H4TAU*>F?V!YO9_U3F)W,R\@30[TO\M-Z;^+%Y'PR73'<KQ_*! 103 M.9\_,.53F?&Y9Z:$]HSW)DGLE&XD2M17!*>>N7N5W<T,L<E'Z@2YS8V1AI+: 104 M,K=/6W_#-&O:AM:<]VRSAD<>9X2V58EWY3R=+6<SX>=)FN(MO6`YI@`+OY"O 105 MP>],R=Z:C@HVJ#MJ+08SGV8PJLE]+Y5>!^GP<C2_V#Q$E44GSSA>P]DHOVJZ 106 MD>/8^.PGQM?"/@!M+UDSS31D$2?D1/A9-J2F1U+$;=E['4=B62"@[$.ILMB; 107 MC,PILY\AZ4]QIUQ]RJA<+E)[4ET\#BDV'&F/5!"0N@'YBS,J4X3T1]VO@0&! 108 M>R*?X-&>M>`#4D?7FF'EX;O^R%=7<GR-AT+2(9(A0>1?\C#=..BZL2[2G]Y> 109 M!S)57I7SG,M'7JM%RQ\C&EZ*(0WI^I(<59H>ZX\%]CA?C<FDJJ3V"2`8"H*] 110 M\D<Z:AKRNP#X)K<XG/)LJ/ERJ[X8HD6U-LL/?#7[U7$RJ)9FKZ0$]L=F(!39 111 M8@7H/<B8TK<%MH?6^1#]L2":9:7BY6L)Q?7$*BSF>%,U);SY>+E(*R13UM.L 112 M9?D*AX;63*Q_/V58/Z]_3;C$*#_F(UX>_"9FH%*;#8M>K[A9()][/X;-U\Y% 113 M=5F_P,&RR^?9ROWLU:MO7]%*^%S'"O'%$C<ZL2`S4U0(#RCB2:2Z<0I6+D2\ 114 M8];,^RV;=K#.E@.UN-;-F\[7KH>QH;9NZEFM0WW);L*3J537WTR""*\ZK6)1 115 M4;A`DB//P-AUDS3U/=8A:V3]AL3%JS;J6ASF7H@S:0`G<A"KI"?[Y44Z[:GH 116 M/^SI5IF7-+')*STAJ-,EVA`2O9ZEVS]13V'1AOK3AMK`PEZII=K$3.M^-HE& 117 MV-/[7LL9SL5XG&PF#[ZJSATP>[-&2GQ<%Y`9S/;KXK<<)<_L2O])CJWAC7:E 118 M\]PK4C7ED#!;'%8MVV0W<_YF2^)OH!PS_=<[T+41B6O:%H0U&<8V7*W?X+ZB 119 M34A_MVNN^VAF"W>WJ[?1C7%"&MDJS;X);O$;]3=(+`<0[K/UB.4K$["H,RI] 120 M:4E?>\G^F(9G6N@.[!.:-A]SYSRCT?"%\9I,=,/9A/XCH.^8&5/*3S94O:OI 121 M-#M0F!U!28DC*'4O7[GYS]S-Z_F&;#2DJ`'/W+`@)7@H)@[ALJ)%KYT'#G@W 122 ML</&.<:!:QEAA6]M\_3>.B>AO9>E3Q43Q]R@T\<9+L\N1*K!3D:A'^;3/@%U 123 M$A$5J^P`J-!S%M>H[8`*[%R2('T`\B1[N_U\E)/2*"9WCF)2-8J5^G87%_(F 124 MFN\<MTWXY[9*9V@*!!5+!VY!H&A/XNIEM_^8`ZTLDJSB#8B*W!467"S`EXX5 125 M5;N<S8)#:QR33,,JDQBE9D8U?]=]0OR%@L_U-SMOUJ[\JP4DM]DN=;!7\F%* 126 MGW"L?Y?AE(Q2'F.['W^LR\KF7^_;,K5I\4(QONK'==>RRS"`W:UVNTL>K4H1 127 MK?NT55ZM_9,UQIMEVITMB<L1*[(FTG75J;'N1(YJ$@JQP!]-269!J'*,(J:& 128 M8:+T)5@LXAUUAI_0AA'9V!<R4@,^K?K:6Q_H3&BKA#\,E[C2QU0S8/Z8BV'[ 129 MO`X/][QNGV[Q.,&Q;OE<4BUEK&1RU">Y=Y0[@Q7C*XR,=HM\2/H/I^"OSLS_ 130 MU<W5\S8(`]$]OX*B#H[$T":%)7*V2IDJ1#^6*`,25`$)BH(5J?WU]=EWQB9N 131 MZZU5IR`[,C[[^?R>#U^_F)HVI`L)`)@#)OO)=8@=-!@>:\@6\U)C05CC'B[Y 132 MHV[0;4LD7EU"\6M1D#OA<:O2%XUT.Z&CFWD2>0B]\KMY?CF57A8[51M.;O?4 133 MVN4L8W$KY.J2&Y72M8\#5T3K-K$CK/11]8&?-V'=H6\/'`O=ZTY,;UL[6(EA 134 M#N]15#-VK#?[/^'KE.3])?<VBLIQ:M;LNU+=)];56K8UM(H_JS1P<LPA#\P< 135 M5GK84>TU04C\)XN0?KW8#\$\S%00WG%Q>+;V`44(6%.XIQ&H`<USCUP<GBNN 136 MC[&UVF%#<BY/0*D-76-`B(#ZPM<:K%ANYO=26U\+C04X.'+8MIZSYGY""72< 137 MMPYFD"T#IKJ26W0?$Z%531U)@?PAZN@%(Y<10!O*=Z64_!3/A':Z<D\&2&\E 138 M.]B3:-CW6(#55#Y$P['AA51RDS*0H\]?#5^0]8RH/;I4#F7R'\N-P]Z^G]BW 139 M`>*73&(S02_,UNLTO4NS&]@45VD&+RGNGYZ+!V:E==+9WMY'47<L'H]Q$I^Z 140 ?>?XTDXEPE6UU`BDQ"OW>*7\3C.GUXA.6;?MZ,5(````` 140 141 ` 141 142 end -
Tst/Short/countedref_s.res.gz.uu
r7023ce rdbf609 1 begin 644 countedref_s.res.gz 2 M'XL(""2\@U(``V-O=6YT961R969?<RYR97,`S7UM<QLYDN9W_8I:Q46,U.9H 3 M"D`!5;"&O)C9EXB^V-C=V)EO';TV)94LMBE2)BE;\L3^]\L$JI`/BD5*[AWW 4 MG:-;)`N)1&8BD<A,O-1?_OI//_Y;411J5OSA#\6_+);MV^)Z_;C:M3>;]O;= 5 M]F*WW9W\I0/2%PSTUW:[VQ:WZTU!$.VF75VWQ7QU4VSOYIOVIKB9[^;%[OFA 6 MW:9ZYJ+XUQ__7)P2KHOEXNKT,I54LX(>OENL%KNS\\L3_BQFLYR"5?OE8KN; 7 M"QEV5J3O[J+8/F]W[?W9::+F]%P:J&>I/-*'A0T@\A?INRKANX+OD7_A^N[Q 8 M[G&JZH10$:.+U:[XN/ZXSIY7TI"R%T,,#"ZP+O3$=K=9K#Z<<;D0K&HF8+RH 9 M"4WW3U6="OSL4!T-?&K@4Q.?#!G0I(=&>-#5Q8!`:4]3[P!_B[M%,>VP]1`. 10 M,!%'#),W!?VB_0B`*6>I?2K+VC=**AMBA*&*S;2</$UN'A(-!K@QQ,WJ\?ZJ 11 MW8Q@(VZ"6/<*@`G3,?$FLFFJ5$",C!?X6/!#9$TWOB^I2L%;J8CW!Z4)IDRU 12 M*ST+$GVC2GJ>2*I,U]K@,2A?9:67*P??ZZBXZZM?BJGR24Q5@YWY$(H92`"" 13 M=LUWU!E79UP^*4Z9M-/)Z:<O[:<O,-HL:)M5K,C/N[OUZMWF<75V>M/>%O?/ 14 M#QN6]0_SS8?M^=LB_"KX!V()8[!KL*L!I6:_E"BZ?5Q=OUO-[]$RV`K((;%\ 15 M7"R716#@`1FTT,^V?@$[_;AZ_M/J^=]W=^WFWP;M-:\G#6R1*[G:<K&-0WL2 16 M_T1M[$%@Z#H2#TO^RR?^C^1_>0*_$A1HOZM&!KNSL_U1YT@4IS=S0GDS3\_J 17 MJ(I3;C2V1[;T?Q?OB;OW9VS8SDECWL?!^KY8;(O5>E=L'Q\>UALR\!&X?7IH 18 MK^E7K,7P_'FD['Z>BC<;FH?6U]>/&YY[%JN"?EZU-#FU121QN5BU1.;;XGU. 19 MY_O$`NGXZ=VBW1#M_)&>^]F^8.IR1#`UF)R:.H`GO_5M;QK3^$D@(/VZB@-O 20 MU3ZNOK9W*V(0AE^=V5+ZIHII#RE`;@"D"0G#"@1U$@\P>FBF>0E8VIJT[HQ+ 21 M)XR#_QBV>/ZDZ/[O`9N2QSQ#3I5+J!K0PD:_%A6)@G6[6/(_HCLHNJHGRHA^ 22 M-]6^%&*%RQ.:*7_X@9X1>^0[L*7GXA]^2'6C!$4DH)V])(.&<L/_[_2SL:2? 23 M2&?2SB;V;M]O_Y^2[R+Y'95"?#WKI@,:6O21GH/:-6#L?'D1V6=1\!]S>?*3 24 M^ODM$T/C[2?=?34GK$PGH$@>AJ`/4P2CH+I3&4W>_&KL40/?M4^[S?QZQZJM 25 MS_O.@(+4`T$=D_Q?)T1?O<V0=:TD87J[1X3Z^Q-A]XE02`1,A[Z&GJ/9K1_( 26 M:1A/M`QB[W$0+^EK',0]@"K%\5$EV1(&@?Y)W:-/$A2Y0:<,QD6GE\5)_ST! 27 M&$#9&=IVN>.&(Z0T3K*E$G*;TA-BM(.:&H&K`6-SF$@C1`8'Z1]3///V[;;= 28 M+3@>X;H3/1%#ISCN>!FC"J':D`..34ZW'Q</Q9<-H3^]_$."F3:7)U*2*IA1 29 M-"2FD1&KE)V]AC07IM*[19A*[Q;I>9W,_)35(F.:;,%R&6A(PN>8)3R;IAA* 30 MZ9*?C;5/0]?TE/3`8@X41S/INX'O%09B#_--4(PE2H-C&2ZX/$F3O>+HA9]! 31 M?*=T?8@V-49<`\3YY"XPTA%W01D8&$8F627!34'1S=G3Y'GR]7RR?!B;%&5& 32 M5!#Y*(Y\'M;+Y^*!6']Z\_SF:V+)6`!SF:3BV'T04!@4A@;%0]"3@"Y)C0.> 33 M_GM5=H1_(C21\DAW7PZ=5^D>7[!B_]E301;LIEWM%K?DL`5C=[M9WQ?!N-$@ 34 M9^PGWV3WJ"$R?*&E]ZEMD%0ET8+B((H&<0@_-Z+(%2O&".L5B2<*^8'%+%HS 35 M"*X>>L$^@"A`;!P_]<U^DF:M2NBG2IYJJ&BR[DO-"'`%P!(A*NNB\(LWL=:O 36 MZ(1OZ@/KNCY(#::^L*!CM@&R?A.Z&J1K0!CTD"M'%<.IV9#>H"%OZ@1!O17B 37 MS[Z\?TX:F/(7_0B_>6F$NZK3B-OIDW[SK-]\U6_RP>U@<#O7V8"GA^F30/1* 38 M^_PP?9:G3??TZ\,4L&53^VU4+V&"0R8I?J*OTR?1/8Z=I/292Y^A5&/I5R[] 39 M"J4DGNWC%;D:MY.G"?75QS-&<,YR>B#Y&V+<?$W058+FF9>D^7``T(X",N8] 40 M4'&'5%U?_(K.JGN1=B98F/.#J*>>"N=-E&D=-"E9FD9UZO)IVIO5T?8_0?N- 41 M[C%]9P/;Z.A9UC)V./H;Y;V+^`+'WW=H-YW3S4T)7?:WDHG=EPEH5$,:M6J_ 42 M;'>;1_+$3^^?XS=.,[$KNY@$C_87R1PI"*P4!U9]%<Z6I@2L\C%]^GC!J5EP 43 M8R"(4C&("E!92E!Q%!4K0SI4<804P0409A+ONI"L4^=M-!(Y?`WP(5FV15OH 44 M??_H8B%!G2[+(:0NU<6`%EV*#ZC+;#K<=HY?SU(/%/F)SE__S%[L/W,CSXB1 45 M#BTG;ONGU#4=G$HQC.;P(%+ZR[0\65"%OD2)VZ=A$4(K8(77&Z)?37_6M_QW 46 MVT=??0A&OG;2#PT+$3I?B%BN^YA,4$DU!]6(NPA,WNYX@#;T>+5JH+Z'^IG; 47 MKX.+#T70S>S09Y3U[?:?@03^K=-O'WZ;]#N1H\GFI9%Q+VS"$H?FZ.!^2ZHF 48 M/<C1`#WZ1>)!S<$`=$`<K'T/W&]%\+H&U(WTH);LAS9EWB$K^I(Z)*).^&"5 49 M0W,@$*%#CQ!]I$A)J,;,,A0$0WI.<\+-NMVN?D<&Y,MZ\U$ZP8"*F$Q%^%N, 50 MGG-T0E27B5SN@F6II0"XYP@A4BN=&$E.,9;F:"%G>PC9`<)JB>;5DB&QNIB* 51 M9`12]W3J@0G4E3G>LI*F04ZPK**K@:G;;-M/PZ!75S54"+:.P:08M`*6330O 52 MFW`B]WK]\!Q':\=&J@E^OV:_OX/LM4*2UIJ=_B[R[(!&@D]M+>!S*<>CZFFR 53 M+Y6PQ5YZMPJ\O5,U)((R*+`&O-3!H,<-296H=CQU$3QG]J37'(P&7@'),=;' 54 M,<*@=]5`A0(/$5L/`@)Q,2XF:LA6R12I73T[2(+R8S2`1%R02)`AR=F'C*HT 55 M7X<LB/*$`ZPC+$#H^@C_T'A*;FI8CM"UA+FZ)J7N-23XUHR5YQ+NTP0$,P,[ 56 MP-+[ON_]>M),O/0^+#GH.O:^'Z.U&2&U@>'.ZPU<EV5O$W9V9P]AM&,8@?D& 57 MF&]LTG4MYK[96VHQ9&`RB#JN-]"3]OYA]QR02&O`.^2]->>]0_R7X?(JX7K! 58 M#YU_GB^6\ZMERZYF[X]>KU>[]FGW;2XI-=JM1)CDDVH/1L4;$4R%`QRL&SN# 59 MN!ED&H`AL:8YEPT0?R(0_I1R$G1\(*Z2KY/!XB)J+F)(Y<VL:P[&"Z>=CU0R 60 MD'4V[#?&1L5,&DXR!Q+SIP:JB=H8=A%QR(0VP[Z670)Q4#4L*!<O"=2$5#,5 61 MO\[=,J7D)`SGE$'2NNN,A)JSR4.*]6"4&]4)0;]$0*I@N@J=@Y>>5_(<HPK# 62 M^66I($LO1KDC38,]@[9KX%Y<+:-\)@F#WKEAUS,\1>_<L-?9PQJ!U0(KS8+S 63 M:#2HA+;PW64!W8XW4G4A71?1#0(Z`WZC8;]1JA3BGQN=Y0IV,;J"<D@A&TXA 64 M[[HP2@:*,7H6,'9A2)V>`UL&V&+7L)/F;KN]RUH##>>M,5S.060AW6T:`.$4 65 M^$C+[-MQ52[QF>]B($-L.$,<9/=YOD2&V)/K"%P$>3"`E%99*0V+!820IK+0 66 M`'5:!P-K\Z:"GF$7+M8'S>7<;:B7/;7$5:1$.+7`CI7PSMAD:YFW8!BL@[G4 67 M6.%B^9_,XQ)YM&)DEY%^!I)BZ";>V=+!1`-$*CPA!Q*:@AYCIRVBZH<D@8L] 68 ML#(HV%U;1AF\",H17B"_A[0N`?H$)5.1<6&S3[%=W[?D%5\]?OC`R:WK]?W] 69 M?'6S35"@M,Y&7;FYNNP^Q0*X;&Z_N8K^-4$F@'H/0`<(5!S7[`&9`1HPSG69 70 M=B\&T$G<^'@N,;%AURX'V<[OVTE$S9LJ$J`^`J@S2',$DKN\3)#5(4B=@<%H 71 MJ=V0I>7B8_MEL1VEN1[B'P#G=#<O0)L,VH]!CQ#!3N5!P(R`9J\O`#)KO-GK 72 MC!XR@]KKB!XJ$V\CD:9AOS2O<AIG[]/<RV!/=01N"`4VK&F&F'E7&L'?7"60 73 M@4CU"(R'J<:K(<IV]7C?;N:[]KR83H>XI!!DY/<D>1C'(11[8@84_Y"C,(=P 74 M0!]`8M-P8K.SL??M?99+,%ZB82IC6T$?4MI@J0F&E_PO^BY&UXNMJ$JQ%02S 75 M;RFJ4K0S`,2A&O&I!*0/`.D,RAR`0NM0E=485*Z\56F!!9>S(,-W2&4].PR8 76 M4]H<@309I-^'W&M8E0>`LD:5.@"5-:CT&%2P`$DZRHS#9"*$I&VE;"["T=%? 77 M*3?;AQK"U("UR;&&40VCBP60QKHP"-JI!]HY.D@CFK'Q5>F!2`_5/U1='ZS^ 78 M#UC]P/"NP'FO\GTA5"EZ`C!V*\X$CXZ/.+6DGM/NB';FTU`%GGZEF^C9/%ZU 79 M3P^;=KM=K%?;5.@AS<*[K<0IK=C1[X))=IS[I^Q:T0-.EH=\EFR[JH+?W\5_ 80 M!$(0PQBY"AGD@"]%8,F?K2!=7$%,P&UHC+`JB`HJC@JZUCIZ`*X!.'\Q;#D% 81 M9Q7D?JLJ)(.8+030`&`RTD+:)K2?VHT102A2E3P%\P4;YJNJWJ.LDH:!A<HG 82 MR@3``NDV2ULSSFX=9D`?9W:E5,+1RNYWCTEE'5-YZ\`3YW3WNA^L!.R[J*P$ 83 MTY5%);22@*L<L,8;TSMMM#%\(=AS`87^85^>H#B9QP@%IIKUSVMY:,-#B!1. 84 M8#-8#\1CCS'9Q+@#9APPPRE73JO3_\1/3@`G7/L$$A?OC0YVT$,)!)]5#:S5 85 M0?4LYH^J&D9-+:,F])6+HA(Y08ZURG*LRV4]#34$M(G][3@_CO2`J6[*J)%U 86 MMOLUE2J`E%BT:LS^6O3V+BU%2\JB`G>U8G>U`XV?%.`U`@F,-<(8P[#!W8<G 87 M[N*#Q;04BH$W7R(6/RVR^IQ0Y0=9YJ."[&;%V4VN>)GE&RKP_BKV_O8%H5D2 88 MK$,D$Q$%[):M>'F[!TZ\\4F=OAR,AO?(1EB$$((MYRP%P06)=AK!!$+-1MI2 89 M(%1IV);"O^6U<039WDE"QK*_)\B&A1:PB%/,JQ<E`>8$2]LQI@X@2%(#R/S% 90 M7JO]!&O17TLPU$#GK$RGP\)2"F7NM<&A$WFSH(H,7Z*,G;KP4%9?+#MQ`PI] 91 M*D.9E8,R$)F2N<6J-!1RIGBCOU+2+`A)R6*"A5-]ED_U#?LS<8U.TS<+#Z0' 92 MSI,-)P.[J.:99Q3,F5GVF\*$P&60JK+L*'7/V')U=:6XAA8:D$Y?XSP?(9P/ 93 M34WL&SEKREEJ`A^+[;-&'VHFV1-KS%@SC>"KH!EX#/UN'-ASPO/O_](A?!=' 94 M:]^RM!F"RCU((P"--&JD35D'`78&<YD%E\I6LN?$5AJ^&]Y]N;ZF<?NPG%^W 95 M/"T6R[OM)!XQNMN>%W_CW[PX?;>]+/X[5:P`>=A8$.L+/1-RHI+QM)4#^&`\ 96 MAY).+HVM@&E\+%.#M>5XAZHTUUNK7B,D6&*WUHS1E3P.:U$#X#%H`'M@TEH! 97 M1ZHL.%^6G:\QVL17LW94ZUU?[,I16F#MW/+:><Q"!+CS`-B7P2CGG.J+_Q*P 98 MQ<E,]BA;]M"85JFAA"HX,1#<(0(\']G*2/%/VLMH73A*<#FD0]:-$F#87T)\ 99 M+H,4I\UE1C'[?!EA0^IJ-=SOGTJTS"2?.<C`L<N)U\^?:>88$U-=C1"?6O#2 100 M@F4D0S@H[Z2*C[+,]6<B84`7^U6!L/3$]\0`!5U94T+$N*>$31`-&W&T[\VH 101 M6/9ZD\JD-V%IWL+2O&TL?(=ILZGA>]/OQ=6#D]\6W$7+[B)L0!75A)V0UJ>9 102 MH'AXQ\Z6X/)`H@<2V4>,S9MA\^`26G8)&>7WWF=*#?$&=F[I?6H;O(?@;O;[ 103 MUN7,EH/%<<>+XY%6DM-)>JH!0L[6.%@3=V5_N#JD0&(.B%,QTHS#3*@<`@5" 104 MCF527?ER)M7!DKA3+V12W3"_-Y9)=</TWF@FU0T3?*.95*=>D4EURKZ<P'3# 105 MS-]H`M.ID?SJ"%4CN=5]JD"PX'DZK6`;TV9\7X/3H#XZ9``VK]QAX'0U&U[M 106 M<&R?O=,6FG*A*392,.@=>)E.-P-J6.N/T@-R,.F`$]'V_.(>?`=^IPN;.;GA 107 M[VL2J!TR"=S0^]2R`2JJL9,L#CQ79]PW2@@V@3HCV1=G,)7$'V2,TT$45Y7] 108 MX"8I/B5DO`.@([#X),`:@+^S`,.!L;ZQ),2PZV!?<++=(.?"CG*1["&<O7%5 109 M#2B>!878<5?YT5ZSY6\G%5N.2<6.]I;5HQQ9T$,[KH?L/W=GEN@O:(L=;M!C 110 M76(8@8B^4-8-O+=AA#S?0WYOF?FXY0X$%K:Y[O/MU#[QG$7=)SZ<'"-(5J!O 111 M)O^;J'>FHYZ:$OJKWTAVKMJ7'1@IWJ$[)L<1)7"C2N!^*R5P^TI0@_M52S3N 112 M:@W?3=HY.BDV$Z`<4LP.4LR\8#0V%7/8,'Y7DJOKSJ5'N\PQPV".ZTMB[/"] 113 M!5;[,(&)N)JR(_-[:WQ3AI:Y)6E<_29,-VK(-(S^=#K$A6M5(#Y].CHQ<\)^ 114 M7_,;VP=RW]V$A&-P?5O"FOMM1.J&(JU'1=I\DTA]TD6Q,+X<D[-7OY':>K6O 115 MMK#VX7CMXS1<%,671O%G*@%3PJ%MN$/IRZ=XMQ1]264.X&HP.=N[]6:7S(X8 116 M'0A"G>_6>M=\0N[(M1]U6<YZ0#X%(6G?NA0_NB[U"^CZ3I/\;PV[NFN.8/]` 117 M7OM_;.:[Q?5\6;1/\_N'9;M]6US/K^_:!$?R:*_OUI+7JCF>A16B[:=0@1>( 118 M^@VSO%5?EHEJN%6D+ILNO1HJW;S;?GJD.F<=DO@TGON<;SZ<2S62WM_Z'QS@ 119 M%L7BMC@C&-X_47).=M/N'C>KXJP\EZ1LS:<)"TC//;84JH5&+@*5/Q&&E"BJ 120 M5=4C[N+"4&-2/*XHKCGG1GH45.V_-+63".0%CB+1P->\!5`YFUCS)A2A2\*I 121 M&O:6G"Y6V]U\N0S"%+F>T9],7I-"$LEUV%O2R2\62Y&&9F2+0+B&L@M9`0_; 122 MR5`_RH8@&%#*+2!S<:?I;KI;W+<;@:EG17=V]Y?)Q\E*"F@HA-N_RE*>\0YB 123 M:F%Z5KY="1V\>E'P_9MG!9]>*R_IXX\K^OOFS;DH`>_SIG\?>3T[ZM`"4!@N 124 M3-+FA8I78+3',-8YQN95&/T1C)7*,')L]S+&RAS#:'.,[E48ZV,8?8;1OJIG 125 M[+&>L7G/V%?UC#W6,S;O&?NJGK''>L;E/>->U3/N6,^XO&?<JWK&'>L9E_<, 126 M^-(U^-(U^-)UW=W>RB.6U]3"R"U^+P.<7>KA@*[[)<UKOMN(QND;)434.1\J 127 M\#'=8Z2.C!"&GQ:\(>IL\5\:D.2<-.6K<#:B9!%OPM?D&M94K\-G#^++]:MI 128 M7H?/'\+G<^WR^E7XO#F(+]<M_[H^\?407](3GW5(4[ZJ0YKR4(<TI<GQO:I# 129 MFO)0AS1EG>-[58<TY:$.:536(8UZ58<TZE"'-,KF^,1K;)2LX31P=JN!_0T- 130 M9)D;SC+W0U:/#-D&)O@&+O]JX(16`R>T&AU.;P<+(#CJ_IF69T`<G.%O./4+ 131 MOM_5S4W:(G7S-.G<B[O%A[O^^W(-=^0VG`FF.L7-8OY!'LKBV==VLYZ64L+' 132 M[`CT@C%.N5"*JJZ(&AB4V*Z$*`K&-15`1YC`,]_Q?;:8EED7)Q`2P6JJH;Z? 133 M=:[KW7RQ.NM(9C>UA^";OY*"\/R^QRO/WT`<5>9ODJ1O>`X7EJE<2NH+X3@K 134 M\!?)\60`$3?/Q$D/85V_L:`JG(,<6/V&$Y`@G%XV1>*45_43IW$&YJ9Y,`3A 135 M#.CP0(<+UZN&]D"1X9+?QLF*Y&+7;J:9!%VXU^_+W6+9!C>;(5B&YS`V717/ 136 MG?9E4ME*`;NW7,Z"%H`P/H16&*^NCUS"U<;OJ&O/@$AL/5B:;1=AM[Q3A#SX 137 M-]V%WHG>-SQRDM5M:@61RF*GIOO$U28#*2,(J8-`P%`/LR[',KF44C%3F6B. 138 MTRD1.V6"WQ3`)-%R3D].B[=%NMB^B9,LP_.?-QEX>4[0YP#+]C")-$RGO;I2 139 MW7.^JP.K1Y9$>1I4'I]R_4'J.M<-6-9NX@4_.6+Q.AH/(X"7MG.C5J)5XWT_ 140 MP:2%G4"9/>-SW@P>E%\L13C>S4]8Y&#/^,1,?!Y&-Q0T?0$/;G@N8:(O95[P 141 M8;4ZF:+R+-``ELAS>N!OZ8>Y$"HOTU-[W!3YLCY@BCS/I6.FR"MUP!1YGB[_ 142 M._V0A(M7-B8B_JF=7^\6G^>[MCB]7LZW6\Y*G!9?YL^38C?_V!:[]9HO5OE0 143 MG-W/5\]\\\>"M">AX:/'(CG/2\`#J^9YP9?[,.S<V-^<,8>]-IX#]&,6T&NP 144 M]5Z'X<,8IEV/A-X4]G7T%L)3W#GB>7).<M%NQ#1Z+4;(ZSTC5(8-:KD)\OI; 145 M3%!?*4;4$=N(^?$QJ([E^[;'&[$]WARU/=Z@[?'50=M3CAH?7QTR/N6^]?$5 146 M6A]??:/U\158'P_G&KR5"<O;W-;L]3Y,M]Z&N2D;B7`GI>>)-2QX\&TDY$3Q 147 M=LR0!GW/W\/=QR$;Q3<?<RZ48;\I3^K#+92#)MZGYNOHH%V58@?@:+3GF?R, 148 M"D-_PG!S8I<9*V0MO5-8U$QE@ZGGR)J1L9H-+J+Q/,]S&?5&$<N@'M@/!\+C 149 MV;O'ASM?/2^(=<APJZJ'BVE\=TKBK$=PGIV']QQA]\6L(4R4.(<>KJCQ''0# 150 M&6FCFJ\-D*%+>0[\Q+4L%@16#$OF+`&L5<_ZM3$A`QBJLYMVIA3(I%]:KOWR 151 M33G8BDC`$X81_6W4WI:X;,^H;\2W]`TH.^]K8Z$M^]W%1G#:?,'!G.SGPGU< 152 M(U&PT]<W]4NT@`C@$AHO9R>$G+0WUOO!ED<[1H[7'3E6'ID7R('%!0\G:SV< 153 MK%TN#?2'KZ%"V*;#RP`$(Q!P)VO);H$08/8(((BCK/7K!'#O..QZHQ\F=2$A 154 MGZ:C8U12(1A?*$0TAI:JDQ<:JZ`Q-WN)?KR4/%X5\U/U,UP&7)8HD'#+.$.$ 155 M0V9PM[EZE1R8]FJ/RG!#3)1"15*`2R5+95Z#EHU1CU<,$]5&(2JX4K)DCR:: 156 M8@V-H2PX@T"EG9UY_^X]H/6]M8K%YX-R70[*97,L%<(]F:76V(@'%*+YT,J@ 157 M[S2RI^W%T
X<0=3I1!Q!-6I^/HR\5^-G>B#;T3R#,X%)U+A4.#/)IX!KU 158 MTAC\48V0C?>'EP;'\N!X&Y7*[L[E<ON\NIYFB)H9F,A8V<!U<@3A<R;@2D@3 159 M?LN5D*"Q<-:!?L2+]<ZDH3"8XY4K$P>-5?H;&BNR^R<!-`R#[JG&IPX(S-Y> 160 MD$T4P>`Q;0U29O].E#5``RH?7%I(/Z*=43\G6C(I?4N7'*,%Y&'CNB_IQ]\9 161 M+VHY>ZJ=[R=^Y=_!JV3,XE;*=;\E[W;#V/KJJ3])"&<J"8SL!)455^LG>(AC 162 MS.))HFD.%P88GVD$KL.F:;[^<F]9G@I]7^&/7#J3:@Y'C0M[?"\6^?6']!SG 163 M1Q>654=Q59&$`S=["1RRZ>0."3Z,=GK7+A]84-VS/V[:V]FDN+BX.'];M$^[ 164 MEGKMIN"7;.T6Z]5\N=@]YV\N_`->5!=J4_,YLK@_/*G.[[N7Q17K6T&S+1[6 165 M%-UP.+E;'\`#EQ)$/(^KQ:?'MD?'9'4[/IX9SSB2I(8]DNN[]OKCMOARU_)+ 166 MQV*MXFY.\V+;K@K.$WR(+X')\72"$Z9"=+8M=G>DZXL5$7,_9Y$5]^UV.__0 167 M[B/H;Y[H$<RO=X\4X/-CD0N1\3S&B9KUN]SYEYZ=$X)=>J]D%,,U;.5<7_W2 168 M7N^VH@8XS\-9;OKANQ',UV/#U4RJY`@EY*P*G,QK";_B/6'%XE*P\7D>/DU0 169 M+'E%\)2D^98(_'AZ6:P?VM794L&HX>@EO&+EC`.$3X]K_L:#:Q$NG>&_Y^<( 170 MCW,_AS5?YHO=[6+37]Y,R"=\VA=V[A.<BSF:^>;#(MS_.K\94$&2X<)+/#LD 171 M]V@)7)/<$P8?<<T)QN<P>@2F08L`+P&C'R'JQ\L%&0E*@$.AZ^5ZV^8L-"B8 172 M!GV^QN6=.T%WIZG'^K?);N1*72SE_O4]S-G580_SK+S7M7B3>LF9UM=T+8=* 173 MHUV[EXH+$'*'?\DQ5.QSZ&#.O4+G[?><=_G5CWWOR&DN@B&9CO00;-RB'S3B 174 M%G!\6X5W.0WI4;`[BW[($L;5_/HC#_UI_^XWN>!.9:]P"N]PZJ%'7]V%K5FL 175 MZ/9:"Z=F^Q]P&$YE[W@*+WF2*I@S40JCJO#N)@&<.L''8=4^U6Z,:-6_!T3@ 176 M4Q$*0E4Y5<$3^3,]^+UH^M5F_;%=?>,+"0@S>2F`^KVTB0(-L=?W(<`=)`#[ 177 MA4.[WA!`M!#>'-79`'RS07A[5'8P(#,"V?NBP@NCXF6.T-DZ;J@OWH2B@E?) 178 M_O2X6],D2>S\[J;MD=/P_)V\Z)7J57V]ZO)$*WE.XJPZ;-ESAY2`QZVTO&*M 179 MNT]\4DTLC)7N%E!X79F*\=U/]/1GSA&EQ\BNZ5W>#=0[].*9!%#-#KTY*KPZ 180 MJAMM3^%R"E@TH5(7:YX]A0/&?&HH%=6'BYK#13@,JQ(D!D?857B3%'7:/[*[ 181 MQ)QMR<DHVMM;="M4U=^X>7TW7WUH[UNAFX_PR%.XW#D!X`"I7+<.L6T[NX]W 182 M_$QZ.Q_.RG>A.Z\3I52Z4A6J.T=;"5-/Q:2`,Y(JO"M*"`3KV`-`=IY^J%P< 183 M-XO;2-^N^#S?+.;L"Y*#&X6Q7GUN-WP)E52';$!XP91<2L,U1H_[J?"BJ5!. 184 MKFH'%RL`",]:L70_S#MZP(SJ=F]C.(M(S[\=0=V="]]#<.R^9:K7H&1]7+!+ 185 MHMW=S7?1Q;AIVX=EOS1'=HI^I^DXO#TJCL,)CYO<KKG^U3Z\+%].BGY,%C@H 186 M.>Z204G&Y9G^AX'IS'!@0AGX7"H<V0]O0'J(M)"W\TQ]67SE[NQC!N+Q=KY8 187 M;J.%C_#ON?WWD^X(&'WAUXJ>![B]UY'F-?#C_'\*269YLW@2V$#%-\Y$CD\E 188 MO%X*,E&%FZ?Z>LEH#6M3O0_K]<V)DWHUU`MJ>*`>QW]8K_F5]?ROJU>C':GE 189 MCJ]^U`?E[?_`Z`^Q5&?LGB^3]+I[0&Z*]8K?6<8FCD+EW>99*@XRR,]I,#Y) 190 M`OE)AG%=8=Y3A[SGU\N\.8YT*:SDF%G,?VT/-?15&OH*#;F4FXRM/%V*5GQH 191 M5^V&@MCY<M=N5A1,?Y9W;];U-W*$!J8.!J;X_:_\E_`T8'!"A!HO:D[%R>1< 192 MTE1)D?V/?.Y^_A1^G%$T$)_^'WKZ(]32^XX6%J,;RZM?W0O1XQ6U\<WQ5`): 193 MT^"TRO'??@V.HL0?X#"P@_GQ``1*DY?`QHE`*CSJ/.]0/4"%-,)K8:-D``@* 194 M`^Z/4.'=69D4=29%CMR$`'T(/7H0O%*6T\RO:24V-7()KE1XL]9+7&H.ZHYS 195 MJ4L]&VGY/%S5F&!,CF8$HD+2[,7+_.MR7THC>&O$*T)B,A;;O_SY%$/T\+JN 196 M'.4^#+RX2X4W=XU4F!2R^X&`--8PHS24`H"2P!4QK=QH8WEMY!>VV"H->VPI 197 M!"KWJ2!E`:)UWO/[<M#(E3:'2(,*R)BV^<58J/\Z[@,J_GFU?=SP\%BNYS?! 198 MB5VWW:NOY_?S#VVX&GYWQR?E4LU:SA*E`49D0,-RZT5W7NL4N1Z^E?&O7];Q 199 M-4QB.;7!S1Y$NPY^+NQJ4N']7;'VY<F/X2(*^M`_3Y_IP_P\E3E&Q]V_C"7, 200 MG!VFD+$0T7&\%DUYP#GI:D![<L/(`;Z-/<:W&1ZL'^6[?IGOYM5\^U?PS8MX 201 G1_G&=PGK+@3\GTZ<FJ/$W7;W;KN;[QZW/!7^KY/_"RAA(I9(B0`` 1 begin 640 countedref_s.res.gz 2 M'XL("$1=TE0``V-O=6YT961R969?<RYR97,`S5UM<^,X<O[N7\&X4G7V6N<E 3 M``(DQR>E[BY)U:92EU3NOFUM9F2;'FM'EC22/&//U?WW=`,D^@%)R9[-S293 4 MNY9$-!K=C4:CN_'"/__EGW_X4Y9E:I9]_WWVKXME\R:[63^N]LWMMKE[N[O< 5 M[_8G?VZ!]"4#_:79[7?9W7J;$42S;58W339?W6:[^_FVN<UNY_MYMG_>-+M8 6 MSUQF__[#'[)3PG6Y7%R?7L628I;1P[>+U6)_=GYUPI_9;)92L&H^7^[V<R'# 7 MSK+XW5UFN^?=OGDX.XW4G)Y+`^4LE@?ZL+`"1/5E_*YR^*[@>^!?N+Y_O'^< 8 MJC(B5,3H8K7//JP_K)/GA32D[&4?`X,+K/,]L=MO%ZOW9UPN!*N2"1@OJGS3 9 MW5-5QH)Z=JB.!CXU\*F)3X;T:.)#(SSHXK)'H+2GJ7>`O\7](INVV#H(!YB( 10 M(X9)FX)^T?4(@,EGL7TJ2]HW2BH;8H2ALNTTGSQ-;C>1!@/<&.)F]?APW6Q' 11 ML!$W7JR#`F#"M$Q<!#9-$0N(D?&".A1\%UC35=V5%+G@+53`^YW2!)/'VH6> 12 M>8E>J)R>1Y(*T[;6>PS*5UCIY<+!]S(H[OKZYVRJZBBFHL+.W/AB!A(`KUWS 13 M/77&]1F73[)3)NUT<OKQ<_/Q,XPV"]IF%2OR\_Y^O7J[?5R=G=XV=]G#\V;+ 14 MLOYNOGV_.W^3^5\9_T`L?@RV#;8UH-0,2XFBN\?5S=O5_`$M@RV`'!++A\5R 15 MF7D&-LB@A7ZVY0O8Z<?U\^]7S_^QOV^V?^JU5[V>-+!%+N=JR\4N#.U)^!.T 16 ML0.!H>M(/"SYSQ_Y/Y+_U0G\BE"@_:X8&>S.SH:CSI$H3F_GA/)V'I^5016G 17 MW&AHCVSI/V7OB+MW9VS8SDECWH7!^BY;[++5>I_M'C>;]98,?`!NGC;-#?T* 18 MM1B>/X^4/<QC\79+\]#ZYN9QRW//8I71S^N&)J<F"R0N%ZN&R'R3O4OI?!=9 19 M(!T_O5\T6Z*=/^+S>C843)F/"*8$DU-2!_#DM[[K3&,</Q$$I%\68>"MFL?5 20 ME^9^10S"\"L36TK?5#;M(`7(]8`T(6%8@:!.X@%&#\TT+0%+6Y+6G7'IA''P 21 M'\,6KS[)VO\[P"KG,<^04^4BJ@JTL-*O146B8-W.EOR/Z/:*KLJ),J+?53&4 22 M0JAP=4(SY7??T3-BCWP'MO1<_-UWL6Z0H(@$M+.3I-=0;OC_3C\K2_J)=$;M 23 MK$+O=OWV_Y1\%\AOJ13BRUD['=#0HH_X'-2N`F-7YY>!?18%_S%7)S^JG]XP 24 M,33>?M3M5W/"RG0"BE3#$*S]%,$HJ.Y41E-M?C'VH(%OFZ?]=GZS9]76YUUG 25 M0$'L`:^.4?ZO$V)=O$F0M:U$8=9V0(3Z^Q-AAT0H)`*FP[J$GJ/9K1O(<1A/ 26 MM`SBNL9!O*2O81!W`"H7QT?E9$L8!/HG=H\^B5#D!ITR&!>1AG5?8[D!C*V= 27 M;99[;C=`2MLD6BHAKRD^(3Y;J*D1N!(P5H=I-$*C]X_^&,.9-V]VS7[!X0C7 28 MG>B)V#G%8<?+&)6/U/H<<&ARNONPV&2?MX3^].K["#.MKDZD)%8PHVA(3",# 29 M5BD[>PUISL^D]PL_D]XOXO,R6ODI:T7"-)F"Y=+3$(7/(8M_-HTAE-(Y/QMK 30 MGT:NZ2CI@,4:*`YFXG<#WPN,PS;SK5>,)4J#0QDNN#J)<[WBX(6?07BG='F( 31 M-C5&7`7$U=%;8*0CWH(R,"Z,S+%*8IN,@INSI\GSY,OY9+D9FQ-E0E00^"@. 32 M?#;KY7.V(=:?+IXOOD26C`4PET@J#-V-@,*@,#0H-EY//+HH-8YWNN]%WA+^ 33 MD=`$R@/=73ET7J$[?-Z(_5='!1FPVV:U7]R1O^9MW=UV_9!YVT:#G+&??)79 34 MHX;([OF6WL6V05*%!`N*8R@:Q#[ZW(HB%ZP8(ZP7))X@Y`V+6;2F%UMM.L%N 35 M0!0@-@Z?NF8_2K-61?13)4\U5#1)]\5F!+@`8`D0E75!^-E%J/4+.N&K^L"Z 36 MM@]B@[$O+.B8K8"L7X6N"NGJ$08]Y/)1Q7!JUJ?7:\A%&2&HMWSXV95WSTD# 37 M8_JB&^&W+XUP5[0:<3=]TA?/^N*+OD@'MX/![5QK`YXVTR>!Z)3V>3-]EJ=5 38 M^_3+9@K8DIG]+JB7,,$1DQ0_T=?ID^@>ATY2^LRESU"JL?0+EWZ!4A+/[O&: 39 M/(V[R=.$^NK#&2,X9SEM2/Z&&#=?(G01H7GF)6EN#@#:44#&/``5;TB5Y>4O 40 MZ*RR$VEK@H6YNA?TE%/AO`HR+;TF14M3J59=/DX[LSK:_D=HO](=IF]L8"L= 41 M',M2Q@X'?Z.\MP&?Y_C;#NVJ];FY*:'+_EHRL4.9@$95I%&KYO-NOWTD1_ST 42 MX3E\XRP3N[*+B?=H?Y;$D8*X2G%<U57A9&G,OZHZ9$\?+SDS"VX,Q%`JQ%`> 43 M*LD(*@ZB0F7(ABH.D`*X`,),4KLV(FO5>1>,1`I?`KS/E>W0%M9U]^AR(3&= 44 MSO,^I,[598\6G8L/J/-D.MRUCE_'4@<4^`G.7_?,7@Z?N9%GQ$B+EO.VW5/J 45 MFA9.Q1!&<W@0*/UYFI\LJ$)7HL3MT[`&H16PPLL-P:^F/^L[_KOK@J\N`B-? 46 M.^J'AG4(G:Y#+-==2":HI)J#:L1=`"9O=SP^ZWN\6E50OX;ZB=NOO8L/1=#- 47 M[-`GE'7M=I^>!/ZMX^_:_S;Q=R1'D\V+(^-!V(05#LW1P<..5$UZD*,!>O2S 48 MQ(.:@P'H@#!8NQYXV(G@=0FH*^E!+<D/;?*T0U;T)79(0!WQP2*'YD`@0/L> 49 M(?I(D:)0C9DE*`B&])SFA-MULUO]A@S(Y_7V@W2"`14QB8KPMQ`]I^B$J#81 50 MN=Q[RU)*`7#/$4*@5CHQD!QC+,W10LIV'[(%A,42S8LE?6)U-@7)=("Z(U/W 51 M+*`NS/&&E;0,8H)%%5WT+-UVUWSLQ[RZ**&"-W4,)L6@%+!HHGG1A-.X-^O- 52 M<QBL+1NQ)KC]FMW^%K)3"DE9:_;YV\"S!1J)/;6U@,_%#(\JI]&\%,(6.^GM 53 M&O#N7I60!DJ@P!CP0@>#'K<C1:3:\<Q%\)S7DUYS,!AX_2/%6!['"&/>%3T- 54 M\CP$;!T(",2%L)BH(5,E,Z1VY>P@":H>HP$DXKQ$O`Q)SK7/ITKSI4^"J)IP 55 M@'&$Y0=='N$?&H^I30V+$;J4*%>7I-2=AGC7FK'R5,)]&H%@8F#_5WJ_[GJ_ 56 MG%236GH?%AQT&7J_'J.U&B&U@M'.JPU<EV5O(W;V9@]AM&,8@?D*F*]LU'4M 57 MUKX:++08LB\)1!E6&^A)\[#9/WLDTAKP#EEOS5EO'_XEN&H5<;W@ALX_S1?+ 58 M^?6R84^S<T=OUJM]\[3_.H^4&FW7(4QT274-1J4V(I@"!SA8-_8%<2O(U`-# 59 M7DUS)AL@?D\@_"GE).CP0#RENHP&BXNHN8`AEE>SMCD8+YQT/E+)0,[9L-L8 60 M&A4S:3C%[$E,GQJH)FICV$/$(>/;]+M:]A'$056_G)R])%#C,\U4_#IOR^22 61 MDC"<4@9)Z[8S(FI.)O<IUKU1;E0K!/T2`;&":2NT_EU\7LAS#"H,IY>E@BR\ 62 M&.6.-`WV#-HN@7OQM(RJ$TD8=,X->Y[^*3KGAIW.#M8(K!98:19\1Z-!);2% 63 M[RZ)Y_:\C:J-Z-J`KA?/&7`;#;N-4B43]]SH)%6P#\$5E$,&V7`&>=]&43)0 64 MC-$SC[&-0LKX'-@RP!9[AJTT][O=?=(::#AOC.%RCB$SZ6Y3`0AGP$=:9M>. 65 MJW))G?@N!A+$AA/$7G:?YDMDB#VYEL"%EP<#2&F1E-*P6$`$:0H+#5"GM3"P 66 M,F\*Z!EVX4)]T%Q.W?IZR5-+7`5*A%,+[%B)[HR-MI9Y\X;!.IA+C14NEO_% 67 M/"Z11RM&=AGH9R`IAF[B?2TM3#!`I,(3<B"A*>@Q=MH"JFY($KC8`RN#@MVU 68 M99#!BZ`<X'GR.TCK(F`=H60J,LYO]<EVZX>&O.+KQ_?O.;=ULWYXF*]N=Q$* 69 ME-;9H"NWUU?MIU@`E\SMM]?!OR;("%`.`+2'0,5QU0#(]-"`<2[SN'?1@T[" 70 MML=S"8D-NW8IR&[^T$P":MY2$0'U$4"=0)HCD-SE>80L#D'J!`Q&2^GZ+"T7 71 M'YK/B]THS64??P\XI;MZ`=HDT/48]`@1[%0>!$P(J`9]`9!)X]6@,SK(!&K0 72 M$1U4(MY*(DW#?FE:Y33,WJ>IE\&>Z@A<'PIL6%7U,?.>-(*_O8X@/9'J$9@: 73 MIII:]5$VJ\>'9CO?-^?9=-K')84@HWH@R<,X#J$8B!E0_$.*PAS"`7T`>4W# 74 M><W6QCXT#TDNP=02#5,9VPKZD-(*2XTWO.1_T7<QNK78BB(76T$P0TM1Y**= 75 M'B`,U8!/12!]`$@G4.8`%%J'(B_&H%+E+7(+++B4!1F^?2K+V6'`E-+J"*1) 76 M(.LAY*!AE1\`2AI5Z@!4TJ#28U#>`D3I*#,.DX@0<K:%LJD(1T=_H=QL"-6' 77 M*0%KE6+UHQI&%PL@CG5A$+13][1S=)`&-&/CJ]`]D1ZJ?ZBZ/EC]'[#Z@>%= 78 M@/->I-M"J%+P!&#L%IP('AT?86J)/:?=$>U,IZ$"//U"5\&S>;QNGC;;9K=; 79 MK%>[6%A#FH7W6HE36K"CWP:3[#AW3]FUH@><*_?Y+-ET57B_OXW_"(0@^C%R 80 MX1/('E^,P*(_6T"VN("8@-O0&&$5$!44'!6TK;7T`%P%</5EO^48G!60^BT* 81 MGPQBMA!``X!)2/-I&]]^;#=$!+Y(%?(4S!=LER^*<D!9(0T#"T4=*1,`"Z3; 82 M)&O-.-MEF!Y]G-F54@E'"SOL'A/+6J;2UH$GSND.NA^L!&R[**P$TX5%);22 83 M@"L<L,;;TEMMM"%\(=AS`87^85^>H#B9QP@%IIAUSTMY:/U#B!1.8"]8!\1C 84 MCS'9R+@#9APPPRE73JO3_\1/2@`G7+L$$A</1@<[Z+X$@L^B!-9*KWH6\T=% 85 M":.FE%'C^\H%48F<(,=:)#G6Y;*<^AH"6H7^=IP?1WK`5%=YT,@RV?L:2Q5` 86 M2BQ:5&:X%+V[CRO1DK(HP%TMV%UM0<,G!7B50`)CE3#&,&QPA_#$77BPF.9" 87 M,?!6YXBEGF9)?4ZH\H,D\U%`=K/@["97O$KR#05X?P5[?T-!:)8$ZQ#)1$0! 88 M>V4+7MWN@"-O?$ZG*P>C4=?(AE^$$((MYRP%P26)=AK`!$+-1MI2(%1IV.;" 89 MO^6E<039W4M"QK*_)\CZA1:PB%/,JQ<Y`:8$2]LAIO8@2%(%R.K+0:O=!&O1 90 M7XLPU$#KK$RG_<)<"F7NM=ZA$WFSH+($7Z2,G3K_4%9?+#MQ/0KK6(8RRWME 91 M(#(E<XM5<2BD3/$V?Z6D61"2DL4$"V?Z+)_IZ_=GY!J=IJ\6'D@/G"?KSP6V 92 M4<TSSRB8,[/L-_D)@<L@567946J?L>5JZTIQ"2U4()VNQGDZ0C@?&IL8&CEK 93 M\EEL`A^+[;-&'VHFVA-KS%@SE>`KH!EX#/UN'-ASPO,?_]HB?!M&:]>RM.F# 94 MR@&D$8!*&C72IJR#`#N]N<R"2V4+V7)B"PW?#6^^7-_0N-TLYS<-3XO9\GXW 95 M"0>,[G?GV5_Y-R].W^^NLK_%B@4@]_L*0GVA9T).5#2>MG``[XUG7]+1I;$% 96 M,(V/96JP-A_O4!7G>FO5:X0$2^S6FC&ZHL=A+6H`/`8-8`],6LO@0)4%Y\NR 97 M\S5&F_AJUHYJO>N*73Y*"ZR=6UX[#UD(#W?N`;LR&.604[7.XEPE.Y`M.V`A 98 MT2UMP3$`[^10^?G(_D2*:N(&1>NJ_M[Z6`+=6\+,_XF]>QPT[*-]^@0FN]0I 99 MSAC/6$Z.?OIT=0)/BI8/>)2<ROM$J'OM,>MI@V6_P:Z@@OAKT*5E.`=!)A&M 100 MI<]8#G@=2)'*1(K@UUGPZVQEX#MT:V7AN^LVMNK>*6H+&43+&438S2F:`!Z: 101 M!0]M\Y9=%\$%NP]M#23Z4UN^>=-O'APSRXX9H_S6FS:M/R'E6WH7VP9;Q8Y> 102 MW`0NYY\L.'B6';Q`*\FI4RL'B]$N%_/K8/.B8P_-;Q7P"8604>'$QE4$*#"O 103 M*`<JSP7"'LE+NMR]F)=T<`K*Y=7QO*3K)][&\I*NGW@;S4NZ?N)M-"_I^HFW 104 ML;RD&\^\]:DJ7I$.=,H>20=*@R.YH"%5(%A8NW8*-P5MQW<).`WJPXX?0;YR 105 MO=ZQ*]B[)N'8IG4'+I]CEX^:8B,%@]YI"R"N1PUK_5%Z0`[L\,5-[<\O;FAW 106 M6JR-XQV5ON%O:Q*H'3()W-"[V+("*O38L1`'2^O.%%\I(7`BG9'@P1E,$/`' 107 M&>,G:3(N.I`4GP09#]%`8!9W(;HB!^!O+,""!=@U%H7(Z_PC@BOT*!=^Q7_( 108 M1;2'<)#%%190/`L*L>.N*$=[K:A^1:E4HU(9[2V;CW($>PN<'==#VYW">.*_ 109 MH"VV?^R>=8EA!"(X0DDW\+Z"$?+*#O(;R\R680,;"(SW+HSQ70^)]_M+!\2[ 110 ML!//*]`W/8Y"+;744U.1?J=_)=DY/9`=N/V.W?X1.;H1)7"C2N!^+25P0R6` 111 M/;;.2;K$E3E\5W$?YB3;3H!R2.BZTL!DG$W'IF*.&<;O'7*E;5UZM,O^!H]T 112 MCNM*VL#A&PNL+/T$)N(JJY;,;ZWQ9>5;YI:D\?K78;KN,5W!Z(]'+5RETMCM 113 MZ>C$[+=^##3?7W/B`[EO;D(JTPD4;4A5_"HB]<?I$I':49&ZKQ)I&751+$Q5 114 MC<JY_I74MJJ':@M[7QSO?3GUER[Q!4S\&4O`E'!HZ^\C^OPQW--$7V)9`7`6 115 M3,[N?KW=1[,C1@>"4%>WZY-K/FYVY`H-5U>S#I#/%$@2U<'FDS+/7T#7=9ID 116 M4\M<07U_F/#[[#^W\_WB9K[,FJ?YPV;9[-YD-_.;^R;"D3R:F_NUI)%*CF=A 117 MO67WT5?@Y99N^REO?)=%EQ)6(LK<M<E*7^GV[>[C(]4Y:Y&$I^$0Y7S[_CS6 118 M(N']-?Z@\"/+%G?9&8'P9H2<$YS;9O^X765G^;ED.$O>:YU!,NRQH4C-MW'I 119 MB?R1,,0D4<GG^`+B-BST-2;9XXK"FG-NI$-!U?Y;8SL%U^Q(X`O3/*0<\RMY 120 M.4'`)9@J8:?'Z6*UV\^72R]*D>H9_4FD-<D*0,R^9RN]4!R+(/PLM8KZZB]T 121 M;`-6P>/7'GS](!J"8$`I-X"LO;EE/]TO'IJMP(2;^?@8[,^3#Y.5%-!`\/=H 122 MY;D\*V>^A>E9_F8%=)#Z9WR3Y5G&)\'R*_KXW8K^7ER<BP[PE@OZ]X'7AH,& 123 MR>5K)6^HSD3:O*'B98S&',-H4XSN51C+8QCK!"-'=B]C+-01C(5),1:OPFB/ 124 M82Q3C*_JF>)8S]BT9^RK>L8>ZQF;]HQ]5<_88SUCTYYQK^H9=ZQG7-HS[E4] 125 MXX[UC$M[!CSI$CSI$CSIDCUI/V9IQ/+ZE!^YV6]E@+-#W1_097<7W`U?$T3C 126 M]$()$67*A_)\3`>,E($1PO#C@C<7G2W^6P.2E).R>AU.4;*`-^*K4@VK]*OP 127 M5>8@OE2_*O<Z?.5!?*EVU?FK\-7J$+XZU:WZ=7U2VX/XTOZH7]<?]:'^J/*D 128 M/ZK\5?U1Y8?ZH\IMBN]5_5'EA_JCRI/^J-2K^J-2A_JC4B;%)RYCI60!IX+= 129 M!94JX7L%WVL9L7IDQ%8POU=P5W`%UVM5<+U6Q=/V]]][`R`X;/=,RS,@3@-Q 130 MG/<%Q^_Z]C;N-KI]FK3>Q?WB_7WW?;F&RV8K3@-3G>QV,7\?'QI9.?O2;-?3 131 M7$IX&Q>!7C+&*1=*D6Z+J(%>B6E+B")O6V,!=(3Q//-EV6>+:9YT<03A<V%3 132 M#?7Y]AWOM][/%ZNSEF3P42L^11\5A*?W`:\\?0-Q5)F_28:^XBE<6*9R*;&7 133 MPG%2P%?<M'XG`XBX>2*.>@C[&RL+JL()R)[1KSC[",+I9)-%3OF:WLAIF("Y 134 M:1X,7C@I'3S9"AW5K%6W+2@R7*Y;.5F.7.R;[321H/,7[7V^7RP;[V4S!,OP 135 M',:F"S>"9UV95#92P-XME[.@!<"/CTBK@_'JNK#%WQ'\EKKV#(C$UKVEV;7A 136 M=<.;+LB!OVAOQH[T7O#(D89K"%,6>S4=TE:J!"0/(*0-`@$CW<^Y',BD0HK% 137 M3&0D.4RF1.N4Z;W(@$>BY9R>G&9O@-HPQ3(\_[E(P/-S@CX'6#:'4:)^,NVT 138 ME>J>\Z476#VP)+I3H>Y4<CZ#(76J&K"D7=7^!IH4L?@<50T#@)>U4YN6HU'C 139 M'33>HOD]-8DYXT,L#.YU7PP%S\#^"8L<S!D?L`[/_>"&`M<5\-B&YR4P!-." 140 M7ZF.EB@_\S2`(:HY-?#7^$-="I57\:DY;HGJW!ZP1#5/I6.6J.:9=-02U3Q; 141 M_BW^D&1+K4Q(0OQS,[_9+S[-]TUV>K.<[W:<D3C-/L^?)]E^_J')]NLUWU#R 142 M/CM[F*^>^0Z-!6E/1,.7Q8OD:E[^[1FUVI]:IC[TNS:&&S/FL+^EYO#\F`&L 143 M%9CZ6OGAPQBF;8_XWA3V=7`6_%/<-5+SW!SEHHL1RUC#6>5:#VQ0[K=ZI1:H 144 MUK_``M4AG@[81LQ/'4+J4#ZT/;41VU.;H[:G-FA[:G/0]N2CQJ<N#AF??&A] 145 MZ@*M3UU\I?6I"[`^-1PAJ.$VF-JFMF;0^S#;UN&B_&0D6I`<SZM^L8/O]2`? 146 MBC<V^A3H._[N[Q#VJ2B^09CSH`S[53E2:N%-]J[7Q+O8O`W^V74N=@".)-<\ 147 MD9]1H>]/&&Y6[#)CA8QES0MZ4E1-9:MFS7$U(V,UZUWI4O,TSV74&UDH@WI@ 148 M/QP(CR?O#A_N(:UY,:Q%AIL^:P>L\:Q-@CWK$)PG)\MKCJ^[8M80)DI\PQIV 149 MO=4<<@,9<8=:72H@0^?R'/@)ZU@L"*SHE\M9`EC+SKIUL4@&G$JHX53"<JFF 150 M%,?$7UKNSZK]FA)N_R/@"<.(_I;U8#M<LONRABM@:KAPON8];2RT9;=/-^Z( 151 MJL/:"YQ`/QGFP>NP/J)@SVS-2Q?':0$15"70(EN4(SE6R*E3<NP8.77>DF/E 152 MD7J!'%A8J&O0U;J`WC'0'[6%"GZ+#B\!$(Q`E`!1P5$A`ARV?Y2Q;H4`;N]. 153 M+OS.5>Q`PCV-1["H1".8/RADKGQ+Q<D+C1706#$[2CY!6&PGR*/X">[4S9/; 154 MO\.E+`3A#VO!%>'YJ^3`M!<#*CDCT$JA("G`W8RY4J]!RZ:HPRMFB6JC$!7< 155 M@IVS/Q,,L8;&4!:</J#2ULJ\>_L.T):=K0K%Y_WRJE<N>V*I$*[.S76.C=2" 156 M0HO>0RN]OM/(GC:7?7-%#PN$D.N=`,+%E?DP]F)!/,@-YH7^`41OCS*7`@?( 157 MI\E!]GB==\[;Q`9DXVW=N<&1W#LF1J5PW\=R][RZF2:(W`P,9*ALX%HV@NCM 158 M48:;%4WO9D706#BO23_"2;HS:<@/YG!UR<1!8T7^%8UER36.`.J'0?M4XU,G 159 M!.)MXGF13!/>W#%M%5)F_DZ454`#*A_<%D@_@IU1/T5:$BE]39<<HP7E$59\ 160 M23_^SGA1RVT>G4OQ*O\./B5C%J=2;LW->9\;1M;73]V)/#B;2&!D)Z@LNUX_ 161 MP4,<8[:`#933%,X/,#X;*%S[W6[W?(WD8$&>"LNNPN^X=`;5<-2$P[27B_0: 162 M094[G!^=7U(=P^5T(.'`#5D"AVSZO5QA(9@/=9W>-\L-"ZI]]KMM<S>;9)>7 163 ME^=OLN9IWU"OW6;\JJK]8KV:+Q?[Y_3]?]_CA6^^-C6?(@L[PZ/J_+9]Y5JV 164 MOA,TNVRSIMB&@\G]^@`>.-P?\#RN%A\?FPX=D]7N]7AF/.-(HAIV2&[NFYL/ 165 MN^SS?<.O[@JULOLYS8M-L\HX2_`^O$HEQ=,*3ICRL=DNV]^3KB]61,S#G$66 166 M/32[W?Q],T30W>#0(9C?[!\IO.?'(A<BXWF,$S7K]K?S+ST[)P3[^';&((8; 167 MV,2YOOZYN=GO1`UPGG<.#!,'*7Z8\2W3<,41E53MNGN&D[F3X"O<MY4MI-!? 168 M6[E8?<B6O!AX2L)\0_1].+W*UIMF=;94,&@X=/$O*CGCZ.#CXYJ_\=A:^+M; 169 M^._Y.<+CU,\QS>?Y8G^WV'97(!/R"1^:A2W[!%>$!,U\^W[AKU&=W_:H(,%P 170 M87)&2*ZC$C@7O1,&'_'+":9,8?08#!J$LH:.J'S(CW?T,1*4`,=!-\OUKDE9 171 MJ%`P%;I\59'V[02]G<J.=6]Z]>6PA_T>K5?V,*=6^SW,D_*@:RN<4CC-^IJN 172 MK=6!KAWDX3R$W(2?<P`5^APZF!.OT'G#GJN+]`;%KG?D&!?!D$Q'>@AV;-$/ 173 M?@,CG(*F)]48/2`3E<ORQ?7\Y@./_&GW`C6Y)X[@%%8B'ZB#'GW_E;26O$') 174 MOT*IUYH_?-K]@"-P2F$TI3B:DBJ8,%')*Y7\.Y4$<.H`'Z_G#:AV8T1S$.75 175 M6^!C$0I"Z90J[XC\@1[\5C3]>KO^T*R^\EI_PDQ."J!^)VVB0'WH]6T(*`X2 176 M@/W"D5UG""!8\.]K:FT`OA_`OZLI.1&0&`&%`9W2X3;SM+-UV$F?7?BBC%?( 177 M?O^X7],<2>S\YK;ID-/P_(V\+97JZ:Y><76BE3PG<18MMN1Y@92`PZVTW&+= 178 M7LL]*286QHH.F]3AI5\JA'<_TM.?.$$4'R.[IO-XMU+/J-GX&T$B@)X=>O^2 179 M?T]3.]J>_!T/L&)"I>T[7LZ>_#E=/BX4B^SA(G>X"(>AJ4!B!F8C_^XFZK0_ 180 MLK?$G.W(Q\B:NSOT*E317?QR<S]?O6\>&J&;S^[(4[@C.0+@`.&W+OE%B%W3 181 MVGV\*F?2V7E_Y+R-W'F1*.;1"0.J.P=;$5-'Q22#PY'*OZU)"`3K&`$JQ%BG 182 MXKA=W`7Z]MFG^78Q9U>0_-L@C/7J4[/ENYQB=;C<G7XHB#Q\C=%S?LJ_V\F7 183 MDZ?:PH4*`,*S5B@=1GE'3Y8I_S:H]K8>_CC_>@0V^`)#!,>N+:9Z,!VJ\*I= 184 M$.W^?KX/+L9MTVR6W;H<V2GZ?2OUJFX<3GC<I';-'_EI7YF6Y9.L&Y,9#DH. 185 MNV10DG%YIO]A8#K5'YA0!CZ7X@6#\!ZA3:"%O)UGZLOL"W=G%S(0CW?SQ7(7 186 M+'R`?\?MOYNT9[_H"[^;\]S##=[IF=;`C_/_+229Y>WB26`]%5\Y$SD^CO!Z 187 M*<A$Y>+KFC83,5K]VE3O_7I]>^*DGH5Z7@T/U./P#^NY7UBO_(7UT([PGHQV 188 M5NI&O5?>[@^,_O`*@&#LGJ^B]-KK-&ZS]8K?_,4FCB+E_?99*O82R,]Q,#Y) 189 M_OA)AG&I,>VI?=KSRU7:'`>Z%%5RR"SFOS2'&OHB#7V!AHJ8F@RM/%V)5KQO 190 M5LV68MCY<M]L5Q1+?Y(W6(:S5%_!$1J8,ER^_MM?^$_P@,'Q$6JX[S@61Y-S 191 M15,E!?8_\('[^9/_<4;10'CZ;_3T!ZE5Y4-'"XO1C>6EK_:MXN&FU_#Z=2H! 192 MK:EP6N7X;UB#HRCQ!S@,;&%^.`"!TN3UKW$B$BI0YWESZ@$JI!%>"!LE`T!0 193 M&'!QA%*UZ;W/0R=2Y,A-"-"'T*,'P<MD*<W\LE-B$])^JD97BI?-7N:R?HE+ 194 MG>>SD9;/_8V'$4:E:$8@8'[R+\)ZD7__)JP>U`A>BWA%2$S&8O?G/YQBB*XY 195 MY$M1CL#@2U+SND^IKS#)9.N#PA=F*?_&K!$:<@%`2>""F%;%:&-I;>07MM<J 196 M#?MKZ4<UI(*4!8E.>WXH!XU<:76(-*B`C&F\]Y+OYP']UV$34/8OJ]WCEH?' 197 M<CV_]4[LNFG?'SU_F+]O_`WK^WL^(A=KRC6TIW&`09Y=P\VG[3FMI+3L6;>_ 198 M?%Z'EQEI`,*-'D2Z]FXN[&@BD'""FVI?G?S@+Z"@#_W3])D^S$]3F6)TV/C+ 199 M6/S$V6+R"0N1'(=KP9)[G).VAK1GY&:1<;:-.<:VZ9^G'V,;5O$.L=V^9NLU 200 L;)>O8;MZB6V(<W4;`/YOITW_MJ[];O]VMY_O'W<\$?[CR?\`/I]YE(N(```` 202 201 ` 203 202 end -
Tst/Short/countedref_s.tst
r7023ce rdbf609 567 567 list ll=list(val); 568 568 ll; 569 link(ll[1])=8; 570 val; 571 ll; 569 572 570 shared vv =ll[1]; 573 571 vv=9; -
doc/NEWS.texi
r7023ce rdbf609 31 31 @item brillnoether.lib (@nref{brillnoether_lib}) 32 32 @item hess.lib (@nref{hess_lib}) 33 @item gradedModules.lib (@nref{gradedModules_lib}) 33 34 @end itemize 34 35 35 36 Changed libraries: 36 37 @itemize 37 @item Presolve::findvars (@nref{findvars}, @nref{variables})38 @item Presolve::findvars (@nref{findvars}, @nref{variables}) 38 39 @item Ring::addvarsTo (@nref{addvarsTo}) 39 40 @item Ring::addNvarsTo (@nref{addNvarsTo}) 40 @item grobcov.lib (grobcovK) (@nref{grobcov_lib}) 41 @item Schreyer::s_res (@nref{s_res}) 42 @item grobcov.lib (grobcovK) (@nref{grobcov_lib}) with new routines 43 AddCons (@nref{AddCons}), AddConsP (@nref{AddConsP}). 41 44 @item normaliz.lib (for normaliz >=2.8) (@nref{normaliz_lib}) 42 45 @end itemize
Note: See TracChangeset
for help on using the changeset viewer.