Changeset d4cec61 in git
- Timestamp:
- Aug 30, 2009, 5:26:00 PM (14 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- f414c0965b52eb8faa2ff8c9afef799657e50a29
- Parents:
- 0cd54028aee03d965d1c6ff02be782f1b55ad9e1
- Location:
- kernel
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/f5gb.cc
r0cd5402 rd4cec61 27 27 #include "f5lists.h" 28 28 #include "timer.h" 29 int notInG = 0; 30 int numberOfRules = 0; 29 31 int reductionsToZero = 0; 30 32 int reductionTime = 0; … … 110 112 ================================================== 111 113 */ 112 LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag ) {114 LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag, int termination) { 113 115 //Print("in f5inc\n"); 114 116 //pWrite(rules->getFirst()->getRuleTerm()); … … 166 168 //sPolyList->print(); 167 169 //reduction(sPolyList, critPairs, gPrev, rules, lTag, rTag, gbPrev); 168 newReduction(sPolyList, critPairs, gPrev, rules, lTag, rTag, gbPrev );170 newReduction(sPolyList, critPairs, gPrev, rules, lTag, rTag, gbPrev, termination); 169 171 //timer3 = getTimer(); 170 172 //reductionTime = reductionTime + timer3; … … 563 565 //rules->insertOrdered(rNew); 564 566 rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term())); 567 numberOfRules++; 565 568 //Print("RULE ADDED: \n"); 566 569 //pWrite(rules->getFirst()->getRuleTerm()); … … 575 578 //rules->insertOrdered(rNew); 576 579 rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term())); 580 numberOfRules++; 577 581 //Print("RULE ADDED: \n"); 578 582 //pWrite(rules->getFirst()->getRuleTerm()); … … 606 610 //Print("IN SPOLS 3\n"); 607 611 rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term())); 612 numberOfRules++; 608 613 //Print("RULE ADDED: \n"); 609 614 //pWrite(rules->getFirst()->getRuleTerm()); … … 625 630 //rules->insertOrdered(rNew); 626 631 rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term())); 632 numberOfRules++; 627 633 //Print("RULE ADDED: \n"); 628 634 //pWrite(rules->getFirst()->getRuleTerm()); … … 701 707 */ 702 708 void newReduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, RList* rules, LTagList* lTag, RTagList* rTag, 703 ideal gbPrev ) {709 ideal gbPrev, int termination) { 704 710 //Print("##########################################In REDUCTION!########################################\n"); 705 711 // check if sPolyList has any elements … … 728 734 // with label index = current label index: this is done such that there 729 735 // is no label corruption during the reduction process 730 findReducers(temp,sPolyList,gbPrev,gPrev,critPairs,rules,lTag,rTag );736 findReducers(temp,sPolyList,gbPrev,gPrev,critPairs,rules,lTag,rTag, termination); 731 737 //} 732 738 //else { … … 762 768 * ================================================================================ 763 769 */ 764 void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag ) {770 void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag, int termination) { 765 771 int canonicalize = 0; 766 772 //int timerRed = 0; 773 bool addToG = 1; 767 774 number sign = nInit(-1); 768 775 LList* good = new LList(); … … 809 816 kBucket_Minus_m_Mult_p(bucket,u,tempRedPoly,&lTempRedPoly); 810 817 canonicalize++; 818 //Print("Reduction\n"); 811 819 if(!(canonicalize % 50)) { 812 820 kBucketCanonicalize(bucket); … … 826 834 } 827 835 else { 836 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 0) { 837 Print("NOT ALLOWED REDUCER:\n"); 838 pWrite(u); 839 pWrite(tempRed->getTerm()); 840 pWrite(tempRed->getPoly()); 841 addToG = 0; 842 } 828 843 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) != 0) { 829 844 // passing criterion2 ? … … 834 849 if(NULL == redPoly) { 835 850 bad->insert(tempRed->getLPoly()); 851 addToG = 1; 836 852 //poly tempRedPoly = tempRed->getPoly(); 837 853 //break; … … 849 865 kBucket_Minus_m_Mult_p(bucket,u,tempRedPoly,&lTempRedPoly); 850 866 canonicalize++; 867 //Print("REDUCTION\n"); 868 addToG = 1; 851 869 if(!(canonicalize % 50)) { 852 870 kBucketCanonicalize(bucket); … … 867 885 } 868 886 } 887 else { 888 Print("CRIT 1 "); 889 890 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 1 ) { 891 Print("NOT ALLOWED REDUCER:\n"); 892 pWrite(u); 893 pWrite(tempRed->getTerm()); 894 pWrite(tempRed->getPoly()); 895 addToG = 0; 896 } 897 } 898 } 899 else { 900 Print("CRIT 2 "); 901 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 1) { 902 Print("NOT ALLOWED REDUCER:\n"); 903 pWrite(u); 904 pWrite(tempRed->getTerm()); 905 pWrite(tempRed->getPoly()); 906 addToG = 0; 907 } 869 908 } 870 909 } … … 893 932 } 894 933 else { 895 //Print("\nELEMENT ADDED TO GPREV: "); 896 //pWrite(redPoly); 934 Print("\nELEMENT ADDED TO GPREV: "); 897 935 pNorm(redPoly); 936 pWrite(pHead(redPoly)); 937 pWrite(l->getTerm()); 898 938 //Print("%d\n",canonicalize); 899 939 l->setPoly(redPoly); 900 940 gPrev->insert(l->getLPoly()); 901 criticalPair(gPrev,critPairs,lTag,rTag,rules); 941 //Print("%d\n\n",termination); 942 if(termination == 1) { 943 if(addToG) { 944 //Print("----------------HERE?-----------------\n"); 945 criticalPair(gPrev,critPairs,lTag,rTag,rules); 946 } 947 else { 948 notInG++; 949 Print("\nNONONO"); 950 pWrite(pHead(l->getPoly())); 951 pWrite(l->getTerm()); 952 } 953 } 954 else { 955 criticalPair(gPrev,critPairs,lTag,rTag,rules); 956 } 902 957 } 903 958 … … 925 980 //Print("HIERHIERHIERHIERHIERHIER\n"); 926 981 rules->insert(tempBad->getIndex(),ppMult_qq(u,tempBad->getTerm())); 982 numberOfRules++; 927 983 //gPrev->print(); 928 984 //pWrite(l->getPoly()); … … 1213 1269 ========================================================================== 1214 1270 */ 1215 ideal F5main(ideal id, ring r, int opt ) {1271 ideal F5main(ideal id, ring r, int opt, int termination) { 1216 1272 switch(opt) { 1217 1273 case 0: … … 1301 1357 //Print("%p\n",gPrevTag); 1302 1358 //pWrite(gPrevTag->getPoly()); 1303 gPrev = F5inc(i, id->m[i-1], gPrev, gbPrev, ONE, lTag, rules, rTag );1359 gPrev = F5inc(i, id->m[i-1], gPrev, gbPrev, ONE, lTag, rules, rTag, termination); 1304 1360 //Print("%d\n",gPrev->count(gPrevTag->getNext())); 1305 1361 //Print("%d\n",gPrev->getLength()); … … 1415 1471 gbPrev = idAdd(gbPrev,gbAdd); 1416 1472 } 1417 //if(i<IDELEMS(id)) {1473 if(i<IDELEMS(id)) { 1418 1474 ideal tempId = kInterRed(gbPrev); 1419 1475 gbPrev = tempId; … … 1432 1488 */ 1433 1489 } 1434 //}1490 } 1435 1491 gbLength = gPrev->getLength(); 1436 1492 } … … 1439 1495 1440 1496 } 1497 timer = getTimer(); 1441 1498 //Print("\n\nADDING TIME IN REDUCTION: %d\n\n",reductionTime); 1442 Print("\n\nNumber of zero-reductions: %d\n",reductionsToZero); 1443 timer = getTimer(); 1444 Print("Highest Degree during computations: %d\n",highestDegree); 1445 Print("Time for computations: %d/1000 seconds\n",timer); 1446 Print("Number of elements in gb: %d\n",IDELEMS(gbPrev)); 1499 Print("\n\nNumber of zero-reductions: %d\n",reductionsToZero); 1500 Print("Number of rules: %d\n",numberOfRules); 1501 Print("Elements not added to G: %d\n",notInG); 1502 Print("Highest Degree during computations: %d\n",highestDegree); 1503 Print("Time for computations: %d/1000 seconds\n",timer); 1504 Print("Number of elements in gb: %d\n",IDELEMS(gbPrev)); 1447 1505 //LNode* temp = gPrev->getFirst(); 1448 1506 //while(NULL != temp) { … … 1454 1512 delete rTag; 1455 1513 delete gPrev; 1514 notInG = 0; 1515 numberOfRules = 0; 1456 1516 reductionsToZero = 0; 1457 1517 highestDegree = 0; -
kernel/f5gb.h
r0cd5402 rd4cec61 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: f5gb.h,v 1.4 2 2009-07-16 07:47:51ederc Exp $ */4 /* $Id: f5gb.h,v 1.43 2009-08-30 15:26:00 ederc Exp $ */ 5 5 /* 6 6 * ABSTRACT: f5gb interface … … 43 43 ================================================== 44 44 */ 45 LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag );45 LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag,int termination); 46 46 47 47 /* … … 95 95 ======================================================================== 96 96 */ 97 inline void newReduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, RList* rules, LTagList* lTag, RTagList* rTag, ideal gbPrev );97 inline void newReduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, RList* rules, LTagList* lTag, RTagList* rTag, ideal gbPrev, int termination); 98 98 99 99 /*! … … 109 109 * ================================================================================ 110 110 */ 111 void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag );111 void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag, int termination); 112 112 113 113 /* … … 140 140 ====================================== 141 141 */ 142 ideal F5main(ideal i, ring r, int opt );142 ideal F5main(ideal i, ring r, int opt, int termination); 143 143 144 144 #endif
Note: See TracChangeset
for help on using the changeset viewer.