Changeset 9cf0188 in git
- Timestamp:
- Nov 11, 2014, 6:20:32 PM (9 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 806aa81abc5cb8a600086b328a894cb962aed3fb
- Parents:
- 41933adc2a2e4fa659c5917cf88bbb70355103f4
- Location:
- Singular
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/modwalk.lib
r41933a r9cf0188 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 staticproc modpWalk(def II, int p, int variant, list #)32 proc modpWalk(def II, int p, int variant, list #) 32 33 "USAGE: modpWalk(I,p,#); I ideal, p integer, variant integer 33 34 ASSUME: If size(#) > 0, then … … 80 81 } 81 82 } 82 83 //------------------------- make i homogeneous -----------------------------84 if(!mixedTest() && !h)85 {86 if(!((find(ordstr_R0, "M") > 0) || (find(ordstr_R0, "a") > 0) || neg))87 {88 if(!((order == "simple") || (sizerl > 4)))89 {90 list rl@r = ringlist(@r);91 nvar@r = nvars(@r);92 intvec w;93 for(k = 1; k <= nvar@r; k++)94 {95 w[k] = deg(var(k));96 }97 w[nvar@r + 1] = 1;98 rl@r[2][nvar@r + 1] = "homvar";99 rl@r[3][2][2] = w;100 def HomR = ring(rl@r);101 setring HomR;102 ideal i = imap(@r, i);103 i = homog(i, homvar);104 }105 }106 }107 108 83 //------------------------- compute a standard basis mod p ----------------------------- 109 110 84 if(variant == 1) 111 85 { … … 113 87 { 114 88 i = rwalk(i,radius,pert_deg,#); 115 // rwalk(i,radius,pert_deg,#); std(i);116 89 } 117 90 else … … 175 148 } 176 149 } 177 178 if(!mixedTest() && !h) 179 { 180 if(!((find(ordstr_R0, "M") > 0) || (find(ordstr_R0, "a") > 0) || neg)) 181 { 182 if(!((order == "simple") || (sizerl > 4))) 183 { 184 i = subst(i, homvar, 1); 185 i = simplify(i, 34); 186 setring @r; 187 i = imap(HomR, i); 188 i = interred(i); 189 kill HomR; 190 } 191 } 192 } 150 193 151 setring R0; 194 152 return(list(fetch(@r,i),p)); … … 487 445 if(n2 > 4) 488 446 { 489 //L[5] = prime(random(an,en));447 L[5] = prime(random(an,en)); 490 448 } 491 449 if(printlevel >= 10) … … 528 486 //------------------- Now all leading ideals are the same -------------------- 529 487 //------------------- Lift results to basering via farey --------------------- 530 531 488 tt = timer; rt = rtimer; 532 489 N = T2[1]; … … 545 502 546 503 //---------------- Test if we already have a standard basis of I -------------- 547 548 504 tt = timer; rt = rtimer; 549 pTest = pTestSB(I,J,L,variant); 550 //pTest = primeTestSB(I,J,L,variant); 505 pTest = primeTest(J, prime(random(1000000000,2134567879))); 551 506 if(printlevel >= 10) 552 507 { … … 596 551 } 597 552 //-------------- We do not already have a standard basis of I, therefore do the main computation for more primes -------------- 598 599 553 T1 = H; 600 554 T2 = N; … … 613 567 for(i=j; i<=size(L); i++) 614 568 { 615 //Arguments[i-j+1] = list(II,L[i],variant,list(curr_weight,target_weight));616 569 Arguments[size(Arguments)+1] = list(II,L[i],variant,list(curr_weight,target_weight)); 617 570 } … … 621 574 for(i=j; i<=size(L); i++) 622 575 { 623 //Arguments[i-j+1] = list(II,L[i],variant);624 576 Arguments[size(Arguments)+1] = list(II,L[i],variant); 625 577 } … … 632 584 for(i=1; i<=size(PP); i++) 633 585 { 634 //P[size(P) + 1] = PP[i];635 586 T1[size(T1) + 1] = PP[i][1]; 636 587 T2[size(T2) + 1] = bigint(PP[i][2]); … … 649 600 echo = 2; 650 601 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 dp 653 ideal J = modWalk(I,1); 602 ideal I= y3+xyz+y2z+xz3, 3+xy+x2y+y2z; 603 ideal J = modWalk(I,2); 654 604 J; 655 605 } … … 772 722 return(J); 773 723 } 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 } 724 974 725 //////////////////////////////////////////////////////////////////////////////// 975 726 static proc mixedTest() -
Singular/extra.cc
r41933a r9cf0188 1928 1928 if (strcmp(sys_cmd, "Mfrwalk") == 0) 1929 1929 { 1930 const short t[]={ 6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,RING_CMD};1930 const short t[]={4,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD}; 1931 1931 if (!iiCheckTypes(h,t,1)) return TRUE; 1932 1932 if (((intvec*) h->next->Data())->length() != currRing->N && -
Singular/walk.cc
r41933a r9cf0188 562 562 } 563 563 564 /***************************************************************************** 565 * compute the gcd of the entries of the vectors curr_weight and diff_weight * 566 *****************************************************************************/ 567 static int simplify_gcd(intvec* curr_weight, intvec* diff_weight) 568 { 569 int j; 570 int nRing = currRing->N; 571 int gcd_tmp = (*curr_weight)[0]; 572 for (j=1; j<nRing; j++) 573 { 574 gcd_tmp = gcd(gcd_tmp, (*curr_weight)[j]); 575 if(gcd_tmp == 1) 576 { 577 break; 578 } 579 } 580 if(gcd_tmp != 1) 581 { 582 for (j=0; j<nRing; j++) 583 { 584 gcd_tmp = gcd(gcd_tmp, (*diff_weight)[j]); 585 if(gcd_tmp == 1) 586 { 587 break; 588 } 589 } 590 } 591 return gcd_tmp; 592 } 593 564 594 /********************************************* 565 595 * cancel gcd of integers zaehler and nenner * … … 1861 1891 } 1862 1892 1893 1894 /************************************************************** 1895 * Look for the position of the smallest absolut value in vec * 1896 **************************************************************/ 1897 static int MivAbsMaxArg(intvec* vec) 1898 { 1899 int k = MivAbsMax(vec); 1900 int i=0; 1901 while(1) 1902 { 1903 if((*vec)[i] == k || (*vec)[i] == -k) 1904 { 1905 break; 1906 } 1907 i++; 1908 } 1909 return i; 1910 } 1911 1912 1863 1913 /********************************************************************** 1864 1914 * Compute a next weight vector between curr_weight and target_weight * … … 1875 1925 1876 1926 int nRing = currRing->N; 1877 int checkRed, j, kkk,nG = IDELEMS(G);1927 int checkRed, j, nG = IDELEMS(G); 1878 1928 intvec* ivtemp; 1879 1929 … … 1913 1963 mpz_init(dcw); 1914 1964 1915 //int tn0, tn1, tz1, ncmp, gcd_tmp, ntmp;1916 1965 int gcd_tmp; 1917 1966 intvec* diff_weight = MivSub(target_weight, curr_weight); … … 1919 1968 intvec* diff_weight1 = MivSub(target_weight, curr_weight); 1920 1969 poly g; 1921 //poly g, gw; 1970 1922 1971 for (j=0; j<nG; j++) 1923 1972 { … … 1981 2030 } 1982 2031 } 1983 //Print("\n// Alloc Size = %d \n", nRing*sizeof(mpz_t));2032 //Print("\n// Alloc Size = %d \n", nRing*sizeof(mpz_t)); 1984 2033 mpz_t *vec=(mpz_t*)omAlloc(nRing*sizeof(mpz_t)); 1985 2034 1986 2035 1987 // there is no 0<t<1 and define the next weight vector that is equal to the current weight vector 2036 // there is no 0<t<1 and define the next weight vector that is equal 2037 // to the current weight vector 1988 2038 if(mpz_cmp(t_nenner, t_null) == 0) 1989 2039 { … … 2056 2106 #endif 2057 2107 2058 // BOOLEAN isdwpos; 2059 2060 // construct a new weight vector 2108 // construct a new weight vector and check whether vec[j] is overflow, 2109 // i.e. vec[j] > 2^31. 2110 // If vec[j] doesn't overflow, define a weight vector. Otherwise, 2111 // report that overflow appears. In the second case, test whether the 2112 // the correctness of the new vector plays an important role 2113 2061 2114 for (j=0; j<nRing; j++) 2062 2115 { … … 2102 2155 } 2103 2156 } 2104 2157 // reduce the vector with the gcd 2158 if(mpz_cmp_si(ggt,1) != 0) 2159 { 2160 for (j=0; j<nRing; j++) 2161 { 2162 mpz_divexact(vec[j], vec[j], ggt); 2163 } 2164 } 2105 2165 #ifdef NEXT_VECTORS_CC 2106 2166 PrintS("\n// gcd of elements of the vector: "); … … 2108 2168 #endif 2109 2169 2110 /**********************************************************************2111 * construct a new weight vector and check whether vec[j] is overflow, *2112 * i.e. vec[j] > 2^31. *2113 * If vec[j] doesn't overflow, define a weight vector. Otherwise, *2114 * report that overflow appears. In the second case, test whether the *2115 * the correctness of the new vector plays an important role *2116 **********************************************************************/2117 kkk=0;2118 2170 for(j=0; j<nRing; j++) 2119 2171 { … … 2131 2183 2132 2184 REDUCTION: 2185 checkRed = 1; 2133 2186 for (j=0; j<nRing; j++) 2134 2187 { 2135 (*diff_weight)[j] = mpz_get_si(vec[j]); 2136 } 2137 while(MivAbsMax(diff_weight) >= 5) 2138 { 2139 for (j=0; j<nRing; j++) 2140 { 2141 if(mpz_cmp_si(ggt,1)==0) 2142 { 2143 (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5); 2144 // Print("\n// vector[%d] = %d \n",j+1, (*diff_weight1)[j]); 2145 } 2146 else 2147 { 2148 mpz_divexact(vec[j], vec[j], ggt); 2149 (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5); 2150 // Print("\n// vector[%d] = %d \n",j+1, (*diff_weight1)[j]); 2151 } 2152 /* 2153 if((*diff_weight1)[j] == 0) 2154 { 2155 kkk = kkk + 1; 2156 } 2157 */ 2158 } 2159 2160 2161 /* 2162 if(kkk > nRing - 1) 2163 { 2164 // diff_weight was reduced to zero 2165 // Print("\n // MwalkNextWeightCC: geaenderter Vector gleich Null! \n"); 2166 goto TEST_OVERFLOW; 2167 } 2168 */ 2169 2170 if(test_w_in_ConeCC(G,diff_weight1) != 0) 2171 { 2172 Print("\n// MwalkNextWeightCC: geaenderter vector liegt in Groebnerkegel! \n"); 2173 for (j=0; j<nRing; j++) 2174 { 2175 (*diff_weight)[j] = (*diff_weight1)[j]; 2176 } 2177 if(MivAbsMax(diff_weight) < 5) 2178 { 2179 checkRed = 1; 2180 goto SIMPLIFY_GCD; 2181 } 2182 } 2183 else 2184 { 2185 // Print("\n// MwalkNextWeightCC: geaenderter vector liegt nicht in Groebnerkegel! \n"); 2186 break; 2187 } 2188 (*diff_weight1)[j] = mpz_get_si(vec[j]); 2189 } 2190 while(test_w_in_ConeCC(G,diff_weight1)) 2191 { 2192 for(j=0; j<nRing; j++) 2193 { 2194 (*diff_weight)[j] = (*diff_weight1)[j]; 2195 mpz_set_si(vec[j], (*diff_weight)[j]); 2196 } 2197 for(j=0; j<nRing; j++) 2198 { 2199 (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5); 2200 } 2201 } 2202 if(MivAbsMax(diff_weight)>10000) 2203 { 2204 for(j=0; j<nRing; j++) 2205 { 2206 (*diff_weight1)[j] = (*diff_weight)[j]; 2207 } 2208 j = 0; 2209 while(test_w_in_ConeCC(G,diff_weight1)) 2210 { 2211 (*diff_weight)[j] = (*diff_weight1)[j]; 2212 mpz_set_si(vec[j], (*diff_weight)[j]); 2213 j = MivAbsMaxArg(diff_weight1); 2214 (*diff_weight1)[j] = floor(0.1*(*diff_weight1)[j] + 0.5); 2215 } 2216 goto SIMPLIFY_GCD; 2188 2217 } 2189 2218 … … 2224 2253 mpz_clear(t_null); 2225 2254 2226 2227 2228 2255 if(Overflow_Error == FALSE) 2229 2256 { 2230 2257 Overflow_Error = nError; 2231 2258 } 2232 rComplete(currRing);2233 for( kkk=0; kkk<IDELEMS(G);kkk++)2234 { 2235 poly p=G->m[ kkk];2259 rComplete(currRing); 2260 for(j=0; j<IDELEMS(G); j++) 2261 { 2262 poly p=G->m[j]; 2236 2263 while(p!=NULL) 2237 2264 { … … 2273 2300 } 2274 2301 2275 /************************************************************** 2302 /******************************************************************** 2276 2303 * define and execute a new ring which order is (a(vb),a(va),lp,C) * 2277 * ************************************************************ /2304 * ******************************************************************/ 2278 2305 static void VMrHomogeneous(intvec* va, intvec* vb) 2279 2306 { … … 4445 4472 { 4446 4473 next_weight2 = MkInterRedNextWeight(next_weight22,target_weight,G); 4474 if(MivAbsMax(next_weight2)>1147483647) 4475 { 4476 for(i=0; i<nV; i++) 4477 { 4478 (*next_weight22)[i] = (*next_weight2)[i]; 4479 } 4480 i = 0; 4481 while(test_w_in_ConeCC(G,next_weight22)) 4482 { 4483 (*next_weight2)[i] = (*next_weight22)[i]; 4484 i = MivAbsMaxArg(next_weight22); 4485 (*next_weight22)[i] = floor(0.1*(*next_weight22)[i] + 0.5); 4486 } 4487 } 4447 4488 delete next_weight22; 4448 4489 break; … … 4575 4616 else 4576 4617 { 4577 rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung4618 rChangeCurrRing(VMrDefault(orig_target_weight)); 4578 4619 } 4579 4620 TargetRing = currRing; … … 4646 4687 else 4647 4688 { 4648 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung4689 rChangeCurrRing(VMrDefault(curr_weight)); 4649 4690 } 4650 4691 newRing = currRing; … … 4755 4796 else 4756 4797 { 4757 rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung4798 rChangeCurrRing(VMrDefault(orig_target_weight)); 4758 4799 } 4759 4800 F1 = idrMoveR(G, newRing,currRing); … … 4786 4827 else 4787 4828 { 4788 rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung4829 rChangeCurrRing(VMrDefault(orig_target_weight)); 4789 4830 } 4790 4831 KSTD_Finish: … … 4884 4925 tim = clock(); 4885 4926 /* 4886 Print("\n// **** Gr ï¿œbnerwalk took %d steps and ", nwalk);4927 Print("\n// **** Groebnerwalk took %d steps and ", nwalk); 4887 4928 PrintS("\n// **** call the rec. Pert. Walk to compute a red GB of:"); 4888 4929 idElements(Gomega, "G_omega"); … … 4914 4955 oldRing = currRing; 4915 4956 4916 / * create a new ring newRing */4957 // create a new ring newRing 4917 4958 if (rParameter(currRing) != NULL) 4918 4959 { … … 4921 4962 else 4922 4963 { 4923 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung4964 rChangeCurrRing(VMrDefault(curr_weight)); 4924 4965 } 4925 4966 newRing = currRing; … … 4947 4988 else 4948 4989 { 4949 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung4990 rChangeCurrRing(VMrDefault(curr_weight)); 4950 4991 } 4951 4992 newRing = currRing; … … 5018 5059 else 5019 5060 { 5020 rChangeCurrRing(VMrDefault(target_weight)); // Aenderung5061 rChangeCurrRing(VMrDefault(target_weight)); 5021 5062 } 5022 5063 F1 = idrMoveR(G, newRing,currRing); … … 5792 5833 5793 5834 to = clock(); 5794 / * perturbs the original vector */5835 // perturbs the original vector 5795 5836 if(MivComp(curr_weight, iv_dp) == 1) //rOrdStr(currRing) := "dp" 5796 5837 { … … 5809 5850 DefRingPar(curr_weight); 5810 5851 else 5811 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 15852 rChangeCurrRing(VMrDefault(curr_weight)); 5812 5853 5813 5854 G = idrMoveR(Go, XXRing,currRing); … … 5824 5865 ring HelpRing = currRing; 5825 5866 5826 / * perturbs the target weight vector */5867 // perturbs the target weight vector 5827 5868 if(tp_deg > 1 && tp_deg <= nV) 5828 5869 { … … 5830 5871 DefRingPar(target_weight); 5831 5872 else 5832 rChangeCurrRing(VMrDefault(target_weight)); // Aenderung 25873 rChangeCurrRing(VMrDefault(target_weight)); 5833 5874 5834 5875 TargetRing = currRing; … … 5891 5932 DefRingPar(curr_weight); 5892 5933 else 5893 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 35934 rChangeCurrRing(VMrDefault(curr_weight)); 5894 5935 5895 5936 newRing = currRing; … … 6014 6055 DefRingPar(orig_target); 6015 6056 else 6016 rChangeCurrRing(VMrDefault(orig_target)); //Aenderung6057 rChangeCurrRing(VMrDefault(orig_target)); 6017 6058 6018 6059 TargetRing=currRing; … … 6192 6233 DefRingPar(omtmp); 6193 6234 else 6194 rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung36235 rChangeCurrRing(VMrDefault1(omtmp)); 6195 6236 6196 6237 testring = currRing; … … 6242 6283 else 6243 6284 { 6244 rChangeCurrRing(VMrDefault1(omtmp)); // Aenderung46285 rChangeCurrRing(VMrDefault1(omtmp)); 6245 6286 } 6246 6287 #ifdef TEST_OVERFLOW … … 6280 6321 DefRingPar(omtmp); 6281 6322 else 6282 rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung56323 rChangeCurrRing(VMrDefault1(omtmp)); 6283 6324 6284 6325 testring = currRing; … … 6347 6388 DefRingPar(Xivinput); 6348 6389 else 6349 rChangeCurrRing(VMrDefault1(Xivinput)); //Aenderung66390 rChangeCurrRing(VMrDefault1(Xivinput)); 6350 6391 6351 6392 testring = currRing; … … 6394 6435 DefRingPar(omega); 6395 6436 else 6396 rChangeCurrRing(VMrDefault1(omega)); //Aenderung76437 rChangeCurrRing(VMrDefault1(omega)); 6397 6438 6398 6439 Gomega1 = idrMoveR(Gomega, oRing,currRing); … … 6517 6558 /* determine the next border */ 6518 6559 next_vect = MWalkRandomNextWeight(G, omega,omega2, weight_rad, 1+nlev); 6519 //next_vect = MkInterRedNextWeight(omega,omega2,G); 6560 if(isNolVector(next_vect)) 6561 { 6562 next_vect = MkInterRedNextWeight(omega,omega2,G); 6563 } 6520 6564 xtnw=xtnw+clock()-to; 6521 6565 #ifdef PRINT_VECTORS … … 6539 6583 DefRingPar(omtmp); 6540 6584 else 6541 rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung36585 rChangeCurrRing(VMrDefault1(omtmp)); 6542 6586 6543 6587 testring = currRing; … … 6589 6633 else 6590 6634 { 6591 rChangeCurrRing(VMrDefault1(omtmp)); // Aenderung46635 rChangeCurrRing(VMrDefault1(omtmp)); 6592 6636 } 6593 6637 #ifdef TEST_OVERFLOW … … 6627 6671 DefRingPar(omtmp); 6628 6672 else 6629 rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung56673 rChangeCurrRing(VMrDefault1(omtmp)); 6630 6674 6631 6675 testring = currRing; … … 6694 6738 DefRingPar(Xivinput); 6695 6739 else 6696 rChangeCurrRing(VMrDefault1(Xivinput)); //Aenderung66740 rChangeCurrRing(VMrDefault1(Xivinput)); 6697 6741 6698 6742 testring = currRing; … … 6741 6785 DefRingPar(omega); 6742 6786 else 6743 rChangeCurrRing(VMrDefault1(omega)); //Aenderung76787 rChangeCurrRing(VMrDefault1(omega)); 6744 6788 6745 6789 Gomega1 = idrMoveR(Gomega, oRing,currRing); … … 6874 6918 DefRingPar(ivtarget); 6875 6919 else 6876 rChangeCurrRing(VMrDefault1(ivtarget)); //Aenderung16920 rChangeCurrRing(VMrDefault1(ivtarget)); 6877 6921 6878 6922 I1 = idrMoveR(I, oldRing,currRing); … … 6903 6947 DefRingPar(ivstart); 6904 6948 else 6905 rChangeCurrRing(VMrDefault1(ivstart)); //Aenderung26949 rChangeCurrRing(VMrDefault1(ivstart)); 6906 6950 6907 6951 I = idrMoveR(I1,tRing,currRing); … … 7000 7044 DefRingPar(ivtarget); 7001 7045 else 7002 rChangeCurrRing(VMrDefault1(ivtarget)); //Aenderung17046 rChangeCurrRing(VMrDefault1(ivtarget)); 7003 7047 7004 7048 I1 = idrMoveR(I, oldRing,currRing); … … 7029 7073 DefRingPar(ivstart); 7030 7074 else 7031 rChangeCurrRing(VMrDefault1(ivstart)); //Aenderung27075 rChangeCurrRing(VMrDefault1(ivstart)); 7032 7076 7033 7077 I = idrMoveR(I1,tRing,currRing); … … 7101 7145 intvec* hilb_func; 7102 7146 #endif 7103 / * to avoid (1,0,...,0) as the target vector */7147 // to avoid (1,0,...,0) as the target vector 7104 7148 intvec* last_omega = new intvec(nV); 7105 7149 for(i=nV-1; i>0; i--) … … 7116 7160 7117 7161 to=clock(); 7118 / * compute a red. GB w.r.t. the help ring */7162 // compute a red. GB w.r.t. the help ring 7119 7163 if(MivComp(curr_weight, iv_dp) == 1) //rOrdStr(currRing) = "dp" 7120 7164 G = MstdCC(G); … … 7125 7169 DefRingPar(curr_weight); 7126 7170 else 7127 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 47171 rChangeCurrRing(VMrDefault(curr_weight)); 7128 7172 G = idrMoveR(G, XXRing,currRing); 7129 7173 G = MstdCC(G); … … 7151 7195 DefRingPar(curr_weight); 7152 7196 else 7153 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 57197 rChangeCurrRing(VMrDefault(curr_weight)); 7154 7198 to=clock(); 7155 7199 Gw = idrMoveR(G, exring,currRing); … … 7186 7230 DefRingPar(curr_weight); 7187 7231 else 7188 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 67232 rChangeCurrRing(VMrDefault(curr_weight)); 7189 7233 7190 7234 newRing = currRing; … … 7271 7315 DefRingPar(target_tmp); 7272 7316 else 7273 rChangeCurrRing(VMrDefault(target_tmp)); // Aenderung 87317 rChangeCurrRing(VMrDefault(target_tmp)); 7274 7318 7275 7319 lpRing = currRing; … … 7331 7375 DefRingPar(target_tmp); 7332 7376 else 7333 rChangeCurrRing(VMrDefault(target_tmp)); //Aenderung 97377 rChangeCurrRing(VMrDefault(target_tmp)); 7334 7378 7335 7379 lpRing = currRing; … … 7534 7578 else 7535 7579 { 7536 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 107580 rChangeCurrRing(VMrDefault(curr_weight)); 7537 7581 } 7538 7582 G = idrMoveR(G, XXRing,currRing); … … 7567 7611 else 7568 7612 { 7569 rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 117613 rChangeCurrRing(VMrDefault(curr_weight)); 7570 7614 } 7571 7615 to=clock(); … … 7610 7654 else 7611 7655 { 7612 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 127656 rChangeCurrRing(VMrDefault(curr_weight)); 7613 7657 } 7614 7658 newRing = currRing; … … 7779 7823 else 7780 7824 { 7781 rChangeCurrRing(VMrDefault(target_tmp)); // Aenderung 137825 rChangeCurrRing(VMrDefault(target_tmp)); 7782 7826 } 7783 7827 } … … 7852 7896 else 7853 7897 { 7854 rChangeCurrRing(VMrDefault(target_tmp)); // Aenderung 147898 rChangeCurrRing(VMrDefault(target_tmp)); 7855 7899 } 7856 7900 } … … 8095 8139 else 8096 8140 { 8097 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 158141 rChangeCurrRing(VMrDefault(curr_weight)); 8098 8142 } 8099 8143 newRing = currRing; … … 8517 8561 else 8518 8562 { 8519 rChangeCurrRing(VMrDefault(cw_tmp)); // Aenderung 168563 rChangeCurrRing(VMrDefault(cw_tmp)); 8520 8564 } 8521 8565 G = idrMoveR(Go, XXRing,currRing); … … 8591 8635 else 8592 8636 { 8593 rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 178637 rChangeCurrRing(VMrDefault(curr_weight)); 8594 8638 } 8595 8639 newRing = currRing; … … 8653 8697 else 8654 8698 { 8655 rChangeCurrRing(VMrDefault(target_weight)); // Aenderung 188699 rChangeCurrRing(VMrDefault(target_weight)); 8656 8700 } 8657 8701 F1 = idrMoveR(G, newRing,currRing);
Note: See TracChangeset
for help on using the changeset viewer.