Changeset 635bdd in git
- Timestamp:
- Nov 21, 2014, 1:41:33 PM (9 years ago)
- Branches:
- (u'spielwiese', 'a719bcf0b8dbc648b128303a49777a094b57592c')
- Children:
- f2ba60d666fcc3a4164b840100f6e982e9749517
- Parents:
- 10b82cde01129c33a7f8f0327bfc5e043a2199b3cb6dc33c118a894b213ceda9734ce618f5c616b9
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/modwalk.lib
-
Property
mode
changed from
100644
to100755
rcb6dc33 r635bdd 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() -
Property
mode
changed from
-
Singular/LIB/primdec.lib
r10b82c r635bdd 1 1 //////////////////////////////////////////////////////////////////////////// 2 version="version primdec.lib 4.0. 0.0 Jun_2013"; // $Id$2 version="version primdec.lib 4.0.1.1 Nov_2014 "; // $Id$ 3 3 category="Commutative Algebra"; 4 4 info=" … … 4422 4422 for(i=nrows(m);i>=1; i--) 4423 4423 { 4424 PHI[i]= ideal(m[i,1..ncols(m)]);4424 PHI[i]=simplify(ideal(m[i,1..ncols(m)]),2); 4425 4425 I=0; 4426 4426 for(j=ncols(PHI[i]);j>0;j--) -
Singular/LIB/rwalk.lib
-
Property
mode
changed from
100644
to100755
-
Property
mode
changed from
-
Singular/LIB/swalk.lib
-
Property
mode
changed from
100644
to100755
-
Property
mode
changed from
-
Singular/extra.cc
rcb6dc33 r635bdd 1954 1954 if (strcmp(sys_cmd, "Mfrwalk") == 0) 1955 1955 { 1956 const short t[]={ 6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,RING_CMD};1956 const short t[]={4,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD}; 1957 1957 if (!iiCheckTypes(h,t,1)) return TRUE; 1958 1958 if (((intvec*) h->next->Data())->length() != currRing->N && -
Singular/iparith.cc
r10b82c r635bdd 7121 7121 { 7122 7122 (*iv)[i]=(int)(long)h->Data(); 7123 } 7124 else if (h->Typ()==INTVEC_CMD) 7125 { 7126 intvec *ivv=(intvec*)h->Data(); 7127 for(int j=0;j<ivv->length();j++,i++) 7128 { 7129 (*iv)[i]=(*ivv)[j]; 7130 } 7131 i--; 7123 7132 } 7124 7133 else -
Singular/walk.cc
-
Property
mode
changed from
100644
to100755
rcb6dc33 r635bdd 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); -
Property
mode
changed from
-
Singular/walk.h
-
Property
mode
changed from
100644
to100755
-
Property
mode
changed from
-
Tst/Short/bug_tr667.res.gz.uu
r10b82c r635bdd 1 1 begin 640 bug_tr667.res.gz 2 M'XL(",7_:50``V)U9U]T<C8V-RYR97,`Q55-;YM`$+W[5ZRB'F#9)>PL7ZX% 3 M4C^DRE+42W)I*R=*;"L!.2;R+M3+K^^P-I`/M>HER0%8S[R9]W;G&<XOOLZ_ 4 M$T)$3L[FG\F)5MK?%#<GL\GY,0,YP>!5L2VTX\XFW9/D.;FI;Z_T+HX3?[O^ 5 M[2M]K8<*F9-A'?KD])3<%]M/2GVYN]X-B<CO"$\>=L7]:KU\QAGG9%=L;\D. 6 MKXP$S#%,LXK5K&1[IECKLM7#B$YR4JS6UQLR1S`7"36TO`2ZIRV'F&JJ/(R5 7 M#$)J,*QI=0F>`&H8%P$U/,%0C8GR4!'1<FR=YF13*$W.`%N/NW#F[HB9XM'! 8 MC'3[5$6[)NJNJC<K<K,F(2/;2I-H\DLL/DX0>H6+K#RL8)'IPTHN,C/!WR/$ 9 M#!"(M<(ME0-2B&D-Y;[UXBA0$XR,56!TA3L;:D5B2D#DBQZ)[<`A,%`!CP)3 10 MP3$98E4*&FK`"C'5",1*Q)4\A`C;'6#1(HL052%*ADC:@3JJ0S9>9#(,C,2X 11 MET:6I$1=V/?8MN[IDD46IT%@HBKT1!"#!8>EQ/$DH:[#O4+UD$0!<F"1XB!3 12 MVZ\&+YI:X59AF":178(W%4&`-/UT1#":40C_:"L<II.PIG&9TZ*SEJQXXBB! 13 MGL=A/U0;TR&;!@W3-)X<AR[D(\\-032[(VG3<'!I2PL/*[E$CCZVO)2>I$LN 14 M64LU]I3H/$1U:9=J7HSMHT>J8Y\<_R7?+GY:Y_5VZI^]`9:>`]1R#E&T`2KA 15 M,`1P_$AZ(,>[8ZE1!73!`15V93;/P:IK+4AVV^J%6P7PK@IZ^N<'\900%2R' 16 M1CA%BBJY/?0W.I7WE-.["%^21Q>=__BGB5Y;['/3O\>!O=#P-R.]@I__9_]O 17 >0=L;(WWTJIGZ]EO??<UKY0AW]F'R!W\#-+LA"``` 2 M'XL("$J,:U0``V)U9U]T<C8V-RYR97,`Q59;;YLP&'W/K["J/8`Q%'\V$!:! 3 MM(LT18KVTKYL4UJU2=2"TE`%PP*_?A\F7)I=M&EJ^Y#@?#X^Y_B[H%Q<?IQ_ 4 M)H3PF"SF[\F9RI6S36[/9I.+XP[$!(/7R2Y1ACF;-$\2Q^2VN+M6>]\/G-WF 5 MNY.K&]6?$#'IU](AY^?D(=F]R_,/]S=[8JB]@Z<8T<_0[)&>TS@X>]PG#^O- 6 MZL2$'Y-]LKLC>_Q$Q&5&Q13+6,%2=F`YJTVV?AS004R2]>9F2^8(MGE`*YI> 7 M`3W0V@:?*II;&$L92%IA6-'L"BP.M&(V=VEE!Q@J<"-M3W@T':BG,=DFN2(+ 8 M0.KA6L;<'#`AYA)FI+EXGM0;DM]GQ79-;C=$,K++%/$FW_CR[02AU[B(\G8% 9 MRRAM5V(951/\/4#2'J+&$#&"5#T$?)7CK0<RSL,"TD-M^9Y[%)/+*%`%8`S0 10 MC1SQ0*4R3$?/QH,JU;A3UD!SVN!6D('MN54&:4_.IZ"@`#S!0]1)\23B4EN" 11 MAW0MS%M&'J(R1`F)H@VHD6IW_64DI%L)C%M33XNDZ`MYC[1%)Q<L(W_JNI67 12 M28N[/FBP3`76-)"JD(<<W4/@N:B!AW(;Q%3S%6!YH3:N'<IIX.DE6"%W793I 13 M2LK=>%SL!6!BS%E3X+;"24Z`C>K,GQ;XU]7KN/DIM_@7[O\H>V<`NI[F?4]_ 14 MNOPZ;FF.(]V8,18<@[(/RV'2.<YO.Z)(8@2L+$UFU#BE*Y8\F4[NZ_L^9MNJ 15 M098E#E]96F*D-I[?/CAUB"%H6=I@TIHF%IZT!6ITL=65L`1=V8+55"&GP"E& 16 M5+-M4F4G`WTXN`;7(<<W3G?E+KO=LTOTRC*`:LT^BDE')S;T`4PZBK;B^&UH 17 M:70!3;!'R>:8WK=!NZLU2#37ZHQK!_"J#CKYTT0\%40'JYX(JTC1I:V3_D)9 18 M>4T[71?A"!^[Z.++'YOHN<V>-OUK).PG#[]KI&?HY[^Y_TO(=HT!HU>-</0? 19 4J>:O4I$;^")],_D!_<@,CGX)```` 18 20 ` 19 21 end -
Tst/Short/bug_tr667.stat
r10b82c r635bdd 1 1 >> tst_memory_0 :: 1416 232901:4011, 64 bit:4.0.1:x86_64-Linux:nepomuck:5242162 1 >> tst_memory_1 :: 1416 232901:4011, 64 bit:4.0.1:x86_64-Linux:nepomuck:26255363 1 >> tst_memory_2 :: 1416 232901:4011, 64 bit:4.0.1:x86_64-Linux:nepomuck:26360324 1 >> tst_timer_1 :: 1416 232901:4011, 64 bit:4.0.1:x86_64-Linux:nepomuck:11541 1 >> tst_memory_0 :: 1416334410:4011, 64 bit:4.0.1:x86_64-Linux:nepomuck:605288 2 1 >> tst_memory_1 :: 1416334410:4011, 64 bit:4.0.1:x86_64-Linux:nepomuck:2691072 3 1 >> tst_memory_2 :: 1416334410:4011, 64 bit:4.0.1:x86_64-Linux:nepomuck:2691072 4 1 >> tst_timer_1 :: 1416334410:4011, 64 bit:4.0.1:x86_64-Linux:nepomuck:1031 -
Tst/Short/bug_tr667.tst
r10b82c r635bdd 2 2 tst_init(); 3 3 4 // minAssChar 4 // minAssChar (tr.667, tr.669) 5 5 LIB"primdec.lib"; 6 6 ring rng = 0,(y,t,o,u,j,x,s,z),dp; … … 8 8 list L2 = minAssChar(I); 9 9 L2; // size should be 4, not 5 10 minAssChar(L2[2]); // size is 2, should be 1 11 minAssChar(L2[3]); // size is 2, should be 1 12 list L1 = minAssGTZ(I); 13 size(L1); 10 14 11 15 ring r = (7,vv),(z,t,c,i),dp; -
kernel/GBEngine/kstdfac.cc
r10b82c r635bdd 322 322 PrintS("-");mflush(); 323 323 } 324 int i; 325 if (strat->redTailChange) 326 { 327 for(i=strat->tl;i>=0;i--) 328 { 329 strat->initEcart(&strat->T[i]); 330 } 331 } 324 332 ideal fac; 325 333 ideal fac_copy; … … 334 342 deleteInS(si,strat); 335 343 336 int i;337 344 for(i=IDELEMS(fac)-1;i>=0;i--) 338 345 { -
kernel/GBEngine/kutil.cc
r10b82c r635bdd 1113 1113 * used in mora case and if pLexOrder & sugar in bba case 1114 1114 */ 1115 void initEcartNormal ( LObject* h)1115 void initEcartNormal (TObject* h) 1116 1116 { 1117 1117 h->FDeg = h->pFDeg(); … … 1121 1121 } 1122 1122 1123 void initEcartBBA ( LObject* h)1123 void initEcartBBA (TObject* h) 1124 1124 { 1125 1125 h->FDeg = h->pFDeg(); -
kernel/GBEngine/kutil.h
r10b82c r635bdd 277 277 int (*red)(LObject * L,kStrategy strat); 278 278 int (*red2)(LObject * L,kStrategy strat); 279 void (*initEcart)( LObject * L);279 void (*initEcart)(TObject * L); 280 280 int (*posInT)(const TSet T,const int tl,LObject &h); 281 281 int (*posInLSba)(const LSet set, const int length, … … 507 507 #endif 508 508 509 void initEcartNormal ( LObject* h);510 void initEcartBBA ( LObject* h);509 void initEcartNormal (TObject* h); 510 void initEcartBBA (TObject* h); 511 511 void initS (ideal F, ideal Q,kStrategy strat); 512 512 void initSL (ideal F, ideal Q,kStrategy strat); -
kernel/ideals.cc
r10b82c r635bdd 2368 2368 if ((w !=NULL)&&(*w!=NULL) &&(del>0)) 2369 2369 { 2370 intvec *wtmp=new intvec((*w)->length()-del); 2370 int nl=si_max((*w)->length()-del,1); 2371 intvec *wtmp=new intvec(nl); 2371 2372 for(i=0;i<res->rank;i++) (*wtmp)[i]=(**w)[i]; 2372 2373 delete *w;
Note: See TracChangeset
for help on using the changeset viewer.