Changeset a05c71 in git
- Timestamp:
- Aug 31, 2009, 3:55:46 PM (14 years ago)
- Branches:
- (u'spielwiese', '8d54773d6c9e2f1d2593a28bc68b7eeab54ed529')
- Children:
- fb1212fa95dcc1179dddfd72a79683e1282d5662
- Parents:
- f414c0965b52eb8faa2ff8c9afef799657e50a29
- Location:
- kernel
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/f5data.h
rf414c0 ra05c71 3 3 * Computer Algebra System SINGULAR * 4 4 ****************************************/ 5 /* $Id: f5data.h,v 1.1 3 2009-07-16 07:47:51ederc Exp $ */5 /* $Id: f5data.h,v 1.14 2009-08-31 13:55:46 ederc Exp $ */ 6 6 /* 7 7 * ABSTRACT: labeled polynomial interface … … 17 17 ========================================================= 18 18 */ 19 class LPoly ;19 class LPolyOld; 20 20 class CPairOld; 21 class Rule ;21 class RuleOld; 22 22 23 23 … … 27 27 ============================ 28 28 */ 29 class LPoly {29 class LPolyOld { 30 30 private: 31 31 poly term; //term of signature 32 32 int index; //index of signature 33 33 poly polynomial; //standard polynomial data 34 Rule * _rule;34 RuleOld* _RuleOld; 35 35 bool del; 36 36 public: 37 inline LPoly (poly t, int i, poly p, Rule* r=NULL);37 inline LPolyOld(poly t, int i, poly p, RuleOld* r=NULL); 38 38 inline void setPoly(poly p); 39 39 inline poly getPoly(); … … 42 42 inline void setIndex(int i); 43 43 inline int getIndex(); 44 inline void setRule (Rule* r);45 inline Rule * getRule();44 inline void setRuleOld(RuleOld* r); 45 inline RuleOld* getRuleOld(); 46 46 inline void setDel(bool d); 47 47 inline bool getDel(); 48 inline void set(poly t, int i, poly p, Rule * r);49 inline LPoly * get();48 inline void set(poly t, int i, poly p, RuleOld* r); 49 inline LPolyOld* get(); 50 50 }; 51 51 52 LPoly ::LPoly(poly t,int i,poly p, Rule* r) {52 LPolyOld::LPolyOld(poly t,int i,poly p, RuleOld* r) { 53 53 set(t,i,p,r); 54 54 del = 0; 55 55 } 56 56 57 void LPoly ::setPoly(poly p) {57 void LPolyOld::setPoly(poly p) { 58 58 //poly _p = pInit(); 59 59 //_p = pCopy(p); … … 61 61 } 62 62 63 void LPoly ::setTerm(poly t) {63 void LPolyOld::setTerm(poly t) { 64 64 //poly _t = pInit(); 65 65 //_t = pCopy(t); … … 67 67 } 68 68 69 void LPoly ::setIndex(int i) {69 void LPolyOld::setIndex(int i) { 70 70 index = i; 71 71 } 72 72 73 void LPoly ::setRule(Rule* r) {74 _ rule= r;75 } 76 77 void LPoly ::setDel(bool d) {73 void LPolyOld::setRuleOld(RuleOld* r) { 74 _RuleOld = r; 75 } 76 77 void LPolyOld::setDel(bool d) { 78 78 del = d; 79 79 } 80 80 81 poly LPoly ::getPoly() {81 poly LPolyOld::getPoly() { 82 82 return polynomial; 83 83 } 84 84 85 poly LPoly ::getTerm() {85 poly LPolyOld::getTerm() { 86 86 return term; 87 87 } 88 88 89 int LPoly ::getIndex() {89 int LPolyOld::getIndex() { 90 90 return index; 91 91 } 92 92 93 Rule * LPoly::getRule() {94 return _ rule;95 } 96 97 bool LPoly ::getDel() {93 RuleOld* LPolyOld::getRuleOld() { 94 return _RuleOld; 95 } 96 97 bool LPolyOld::getDel() { 98 98 return del; 99 99 } 100 100 101 void LPoly ::set(poly t, int i, poly p, Rule* r) {101 void LPolyOld::set(poly t, int i, poly p, RuleOld* r) { 102 102 this->setTerm(t); 103 103 this->setIndex(i); 104 104 this->setPoly(p); 105 this->setRule (r);106 } 107 108 LPoly * LPoly::get() {105 this->setRuleOld(r); 106 } 107 108 LPolyOld* LPolyOld::get() { 109 109 return this; 110 110 } … … 120 120 long deg; // total degree of the critical pair 121 121 poly t1; // first term for label 122 LPoly * lp1; // first labeled poly122 LPolyOld* lp1; // first labeled poly 123 123 poly t2; // second term for label 124 LPoly * lp2; // second labeled poly125 Rule * testedRule; // already tested by rules up to lastRuleTested124 LPolyOld* lp2; // second labeled poly 125 RuleOld* testedRuleOld; // already tested by RuleOlds up to lastRuleOldTested 126 126 public: 127 inline CPairOld(long degree, poly term1, LPoly * lpoly1, poly term2, LPoly* lpoly2, Rule* r = NULL);127 inline CPairOld(long degree, poly term1, LPolyOld* LPolyOld1, poly term2, LPolyOld* LPolyOld2, RuleOld* r = NULL); 128 128 inline long getDeg(); 129 129 inline poly getT1(); 130 130 inline poly* getAdT1(); 131 inline LPoly * getAdLp1();131 inline LPolyOld* getAdLp1(); 132 132 inline poly getLp1Poly(); 133 133 inline poly getLp1Term(); … … 135 135 inline poly getT2(); 136 136 inline poly* getAdT2(); 137 inline LPoly * getAdLp2();137 inline LPolyOld* getAdLp2(); 138 138 inline poly getLp2Poly(); 139 139 inline poly getLp2Term(); 140 140 inline int getLp2Index(); 141 inline Rule * getTestedRule();142 inline void setTestedRule (Rule* r);141 inline RuleOld* getTestedRuleOld(); 142 inline void setTestedRuleOld(RuleOld* r); 143 143 }; 144 144 145 CPairOld::CPairOld(long degree, poly term1, LPoly * lpoly1, poly term2, LPoly* lpoly2, Rule* r) {145 CPairOld::CPairOld(long degree, poly term1, LPolyOld* LPolyOld1, poly term2, LPolyOld* LPolyOld2, RuleOld* r) { 146 146 deg = degree; 147 147 t1 = term1; 148 lp1 = lpoly1;148 lp1 = LPolyOld1; 149 149 t2 = term2; 150 lp2 = lpoly2;151 testedRule = r;150 lp2 = LPolyOld2; 151 testedRuleOld = r; 152 152 } 153 153 … … 172 172 } 173 173 174 LPoly * CPairOld::getAdLp1() {174 LPolyOld* CPairOld::getAdLp1() { 175 175 return lp1; 176 176 } 177 177 178 LPoly * CPairOld::getAdLp2() {178 LPolyOld* CPairOld::getAdLp2() { 179 179 return lp2; 180 180 } … … 204 204 } 205 205 206 Rule * CPairOld::getTestedRule() {207 return testedRule ;208 } 209 210 void CPairOld::setTestedRule (Rule* r) {211 testedRule = r;206 RuleOld* CPairOld::getTestedRuleOld() { 207 return testedRuleOld; 208 } 209 210 void CPairOld::setTestedRuleOld(RuleOld* r) { 211 testedRuleOld = r; 212 212 } 213 213 … … 215 215 /*! 216 216 ======================================================== 217 structure of rules(i.e. already computed / known labels)217 structure of RuleOlds(i.e. already computed / known labels) 218 218 ======================================================== 219 219 */ 220 class Rule {220 class RuleOld { 221 221 private: 222 int index; // index of the labeled polynomial the rulecomes from223 poly term; // term of the labeled polynomial the rulecomes from222 int index; // index of the labeled polynomial the RuleOld comes from 223 poly term; // term of the labeled polynomial the RuleOld comes from 224 224 public: 225 inline Rule (int i, poly term);226 inline ~Rule ();225 inline RuleOld(int i, poly term); 226 inline ~RuleOld(); 227 227 inline int getIndex(); 228 228 inline poly getTerm(); 229 229 }; 230 230 231 Rule ::Rule(int i, poly t) {231 RuleOld::RuleOld(int i, poly t) { 232 232 index = i; 233 233 term = t; 234 234 } 235 235 236 Rule ::~Rule() {236 RuleOld::~RuleOld() { 237 237 //pDelete(&term); 238 238 } 239 239 240 int Rule ::getIndex() {240 int RuleOld::getIndex() { 241 241 return index; 242 242 } 243 243 244 poly Rule ::getTerm() {244 poly RuleOld::getTerm() { 245 245 return term; 246 246 } -
kernel/f5gb.cc
rf414c0 ra05c71 112 112 ================================================== 113 113 */ 114 LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag, int termination) {114 LList* F5inc(int i, poly f_i, LList* gPrev, LList* reducers, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag, int termination) { 115 115 //Print("in f5inc\n"); 116 116 //pWrite(rules->getFirst()->getRuleTerm()); … … 168 168 //sPolyList->print(); 169 169 //reduction(sPolyList, critPairs, gPrev, rules, lTag, rTag, gbPrev); 170 newReduction(sPolyList, critPairs, gPrev, r ules, lTag, rTag, gbPrev, termination);170 newReduction(sPolyList, critPairs, gPrev, reducers, rules, lTag, rTag, gbPrev, termination); 171 171 //timer3 = getTimer(); 172 172 //reductionTime = reductionTime + timer3; … … 251 251 poly lcm = pOne(); 252 252 poly t = pHead(newElement->getPoly()); 253 Rule * testedRule= NULL;253 RuleOld* testedRuleOld = NULL; 254 254 if(NULL != rules->getFirst()) { 255 testedRule = rules->getFirst()->getRule();255 testedRuleOld = rules->getFirst()->getRuleOld(); 256 256 } 257 257 // computation of critical pairs … … 271 271 && !criterion2(gPrev->getFirst()->getIndex(), u1, newElement, rules, rTag) 272 272 && !criterion1(gPrev,u1,newElement,lTag) && !criterion1(gPrev,u2,temp,lTag)) { 273 // if they pass the test, add them to CListOld critPairs, having the LPoly with greater273 // if they pass the test, add them to CListOld critPairs, having the LPolyOld with greater 274 274 // label as first element in the CPairOld 275 275 if(newElement->getIndex() == temp->getIndex() && 276 276 -1 == pLmCmp(ppMult_qq(u1, newElement->getTerm()),ppMult_qq(u2, temp->getTerm()))) { 277 277 CPairOld* cp = new CPairOld(pDeg(ppMult_qq(u2,pHead(temp->getPoly()))), u2, 278 temp->getLPoly (), u1, newElement->getLPoly(), testedRule);278 temp->getLPolyOld(), u1, newElement->getLPolyOld(), testedRuleOld); 279 279 critPairs->insert(cp); 280 280 } 281 281 else { 282 282 CPairOld* cp = new CPairOld(pDeg(ppMult_qq(u2,pHead(temp->getPoly()))), u1, 283 newElement->getLPoly (), u2, temp->getLPoly(), testedRule);283 newElement->getLPolyOld(), u2, temp->getLPolyOld(), testedRuleOld); 284 284 critPairs->insert(cp); 285 285 } … … 437 437 } 438 438 if(NULL != testNode) { 439 if(testNode->getRule () == l->getRule()) {439 if(testNode->getRuleOld() == l->getRuleOld()) { 440 440 //Print("%p\n%p\n",testNode->getRule(),l->getRule()); 441 441 //Print("EQUAL\n"); … … 445 445 } 446 446 } 447 while(NULL != testNode && testNode->getRule () != l->getRule()448 && l->getIndex() == testNode->getRule Index()) {447 while(NULL != testNode && testNode->getRuleOld() != l->getRuleOld() 448 && l->getIndex() == testNode->getRuleOldIndex()) { 449 449 //Print("%p\n",testNode); 450 450 //pWrite(testNode->getRuleTerm()); … … 453 453 //pWrite(u1); 454 454 //Print("%d\n",testNode->getRuleIndex()); 455 if(pLmDivisibleByNoComp(testNode->getRule Term(),u1)) {455 if(pLmDivisibleByNoComp(testNode->getRuleOldTerm(),u1)) { 456 456 //Print("-----------------Criterion 2 NOT passed!-----------------------------------\n"); 457 457 //Print("INDEX: %d\n",l->getIndex()); … … 475 475 ================================================================================================================= 476 476 */ 477 inline bool criterion2(poly t, LPoly * l, RList* rules, Rule* testedRule) {477 inline bool criterion2(poly t, LPolyOld* l, RList* rules, RuleOld* testedRuleOld) { 478 478 //Print("------------------------------IN CRITERION 2/2-----------------------------------------\n"); 479 //Print("LAST R ULE TESTED: %p",testedRule);479 //Print("LAST RuleOld TESTED: %p",testedRuleOld); 480 480 /* 481 481 Print("RULES: \n"); … … 497 497 poly u1 = ppMult_qq(t,l->getTerm()); 498 498 // first element added to rTag was NULL, check for this 499 while(NULL != testNode && testNode->getRule () != testedRule) {499 while(NULL != testNode && testNode->getRuleOld() != testedRuleOld) { 500 500 //pWrite(testNode->getRuleTerm()); 501 if(pLmDivisibleByNoComp(testNode->getRule Term(),u1)) {501 if(pLmDivisibleByNoComp(testNode->getRuleOldTerm(),u1)) { 502 502 //Print("--------------------------Criterion 2 NOT passed!------------------------------\n"); 503 503 //Print("INDEX: %d\n",l->getIndex()); … … 529 529 while(NULL != temp) { 530 530 //Print("JA\n"); 531 // only if a new rulewas added since the last test in subalgorithm criticalPair()531 // only if a new RuleOld was added since the last test in subalgorithm criticalPair() 532 532 //if(rules->getFirst() != rTag->getFirst()) { 533 if(!criterion2(temp->getT1(),temp->getAdLp1(),rules,temp->getTestedRule ())) {533 if(!criterion2(temp->getT1(),temp->getAdLp1(),rules,temp->getTestedRuleOld())) { 534 534 // the second component is tested only when it has the actual index, otherwise there is 535 // no new ruleto test since the last test in subalgorithm criticalPair()535 // no new RuleOld to test since the last test in subalgorithm criticalPair() 536 536 if(highestDegree < pDeg(ppMult_qq(temp->getT1(),temp->getLp1Poly()))) { 537 537 highestDegree = pDeg(ppMult_qq(temp->getT1(),temp->getLp1Poly())); … … 539 539 } 540 540 if(temp->getLp2Index() == temp->getLp1Index()) { 541 if(!criterion2(temp->getT2(),temp->getAdLp2(),rules,temp->getTestedRule ())) {541 if(!criterion2(temp->getT2(),temp->getAdLp2(),rules,temp->getTestedRuleOld())) { 542 542 // computation of S-polynomial 543 543 //poly p1 = temp->getLp1Poly(); … … 556 556 // S-polynomial also of a zero S-polynomial 557 557 //zeroList->insert(temp->getAdT1(),temp->getLp1Index(),&sp); 558 // origin of rulecan be set NULL as the labeled polynomial558 // origin of RuleOld can be set NULL as the labeled polynomial 559 559 // will never be used again as it is zero => no problems with 560 560 // further criterion2() tests and termination conditions … … 566 566 rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term())); 567 567 numberOfRules++; 568 //Print("R ULEADDED: \n");568 //Print("RuleOld ADDED: \n"); 569 569 //pWrite(rules->getFirst()->getRuleTerm()); 570 570 //rules->print(); … … 579 579 rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term())); 580 580 numberOfRules++; 581 //Print("R ULEADDED: \n");581 //Print("RuleOld ADDED: \n"); 582 582 //pWrite(rules->getFirst()->getRuleTerm()); 583 583 //rules->print(); 584 sPolyList->insertByLabel(ppMult_qq(temp->getT1(),temp->getLp1Term()),temp->getLp1Index(),sp,rules->getFirst()->getRule ());584 sPolyList->insertByLabel(ppMult_qq(temp->getT1(),temp->getLp1Term()),temp->getLp1Index(),sp,rules->getFirst()->getRuleOld()); 585 585 //sPolyList->insertByLabel(ppMult_qq(temp->getT1(),temp->getLp1Term()),temp->getLp1Index(),sp,rNew); 586 586 } … … 603 603 if(NULL == sp) { 604 604 // zeroList->insert(temp->getAdT1(),temp->getLp1Index(),&sp); 605 // origin of rulecan be set NULL as the labeled polynomial605 // origin of RuleOld can be set NULL as the labeled polynomial 606 606 // will never be used again as it is zero => no problems with 607 607 // further criterion2() tests and termination conditions … … 611 611 rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term())); 612 612 numberOfRules++; 613 //Print("R ULEADDED: \n");613 //Print("RuleOld ADDED: \n"); 614 614 //pWrite(rules->getFirst()->getRuleTerm()); 615 615 //rules->print(); … … 631 631 rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term())); 632 632 numberOfRules++; 633 //Print("R ULEADDED: \n");633 //Print("RuleOld ADDED: \n"); 634 634 //pWrite(rules->getFirst()->getRuleTerm()); 635 635 //rules->print(); 636 636 //Print("%d\n",rules->getFirst()->getRuleIndex()); 637 637 //Print("%p\n",sPolyList->getFirst()); 638 sPolyList->insertByLabel(ppMult_qq(temp->getT1(),temp->getLp1Term()),temp->getLp1Index(),sp,rules->getFirst()->getRule ());638 sPolyList->insertByLabel(ppMult_qq(temp->getT1(),temp->getLp1Term()),temp->getLp1Index(),sp,rules->getFirst()->getRuleOld()); 639 639 //sPolyList->insertByLabel(ppMult_qq(temp->getT1(),temp->getLp1Term()),temp->getLp1Index(),sp,rNew); 640 640 } … … 706 706 ======================================================================== 707 707 */ 708 void newReduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, RList* rules, LTagList* lTag, RTagList* rTag,708 void newReduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, LList* reducers, RList* rules, LTagList* lTag, RTagList* rTag, 709 709 ideal gbPrev, int termination) { 710 710 //Print("##########################################In REDUCTION!########################################\n"); … … 734 734 // with label index = current label index: this is done such that there 735 735 // is no label corruption during the reduction process 736 findReducers(temp,sPolyList,gbPrev,gPrev, critPairs,rules,lTag,rTag, termination);736 findReducers(temp,sPolyList,gbPrev,gPrev,reducers,critPairs,rules,lTag,rTag, termination); 737 737 //} 738 738 //else { … … 768 768 * ================================================================================ 769 769 */ 770 void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag, int termination) {770 void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, LList* reducers, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag, int termination) { 771 771 int canonicalize = 0; 772 772 //int timerRed = 0; … … 775 775 LList* good = new LList(); 776 776 LList* bad = new LList(); 777 LList* monomials = new LList(l->getLPoly ());777 LList* monomials = new LList(l->getLPolyOld()); 778 778 poly u = pOne(); 779 779 number nOne = nInit(1); … … 794 794 //Print("\n\n\nTO BE REDUCED: "); 795 795 //pWrite(l->getPoly()); 796 //pWrite(l->getTerm()); 796 797 //pWrite(tempPoly); 797 798 while(NULL != tempPoly) { … … 835 836 else { 836 837 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;838 //Print("NOT ALLOWED REDUCER, EQUAL LABELS:\n"); 839 //pWrite(u); 840 //pWrite(tempRed->getTerm()); 841 //pWrite(pHead(tempRed->getPoly())); 842 //addToG = 0; 842 843 } 843 844 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) != 0) { … … 848 849 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 1) { 849 850 if(NULL == redPoly) { 850 bad->insert(tempRed->getLPoly ());851 bad->insert(tempRed->getLPolyOld()); 851 852 addToG = 1; 852 853 //poly tempRedPoly = tempRed->getPoly(); … … 886 887 } 887 888 else { 888 Print("CRIT 1 ");889 //Print("CRIT 1 "); 889 890 890 891 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; 892 //Print("NOT ALLOWED REDUCER, CRIT 1:\n"); 893 //pWrite(u); 894 //pWrite(tempRed->getTerm()); 895 //pWrite(tempRed->getPoly()); 896 if(pLmDivisibleByNoComp(tempRed->getTerm(),l->getTerm())) { 897 //Print("REDUCER LABEL: "); 898 //pWrite(tempRed->getTerm()); 899 addToG = 0; 900 } 896 901 } 897 902 } 898 903 } 899 904 else { 900 Print("CRIT 2 ");905 //Print("CRIT 2 "); 901 906 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 //Print("NOT ALLOWED REDUCER, CRIT 2:\n"); 908 //pWrite(u); 909 //pWrite(tempRed->getTerm()); 910 //pWrite(tempRed->getPoly()); 911 if(pLmDivisibleByNoComp(tempRed->getTerm(),l->getTerm())) { 912 //Print("REDUCER LABEL: "); 913 //pWrite(tempRed->getTerm()); 914 addToG = 0; 915 } 907 916 } 908 917 } … … 912 921 tempRed = tempRed->getNext(); 913 922 } 923 // reduction process with elements in LList* reducers 924 if(NULL != tempPoly) { 925 //Print("HERE\n"); 926 tempRed = reducers->getFirst(); 927 while(NULL != tempRed) { 928 //Print("TEMPREDPOLY: "); 929 //pWrite(tempRed->getPoly()); 930 //pWrite(tempPoly); 931 if(pLmDivisibleByNoComp(tempRed->getPoly(),tempPoly)) { 932 //Print("A\n"); 933 u = pDivideM(pHead(tempPoly),pHead(tempRed->getPoly())); 934 //Print("U: "); 935 //pWrite(u); 936 if(tempRed->getIndex() != idx) { 937 // passing criterion1 ? 938 if(!criterion1(gPrev,u,tempRed,lTag)) { 939 poly tempRedPoly = tempRed->getPoly(); 940 //Print("REDUCER: "); 941 //pWrite(ppMult_qq(u,tempRedPoly)); 942 pIter(tempRedPoly); 943 int lTempRedPoly = pLength(tempRedPoly); 944 kBucketExtractLm(bucket); 945 kBucket_Minus_m_Mult_p(bucket,u,tempRedPoly,&lTempRedPoly); 946 canonicalize++; 947 //Print("Reduction\n"); 948 if(!(canonicalize % 50)) { 949 kBucketCanonicalize(bucket); 950 } 951 tempPoly = kBucketGetLm(bucket); 952 //Print("TEMPPOLY: "); 953 //pWrite(tempPoly); 954 if(NULL != tempPoly) { 955 tempRed = gPrev->getFirst(); 956 continue; 957 } 958 else { 959 break; 960 } 961 } 962 963 } 964 else { 965 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 0) { 966 //Print("NOT ALLOWED REDUCER, EQUAL LABELS:\n"); 967 //pWrite(u); 968 //pWrite(tempRed->getTerm()); 969 //pWrite(pHead(tempRed->getPoly())); 970 //addToG = 0; 971 } 972 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) != 0) { 973 // passing criterion2 ? 974 if(!criterion2(gPrev->getFirst()->getIndex(), u,tempRed,rules,rTag)) { 975 // passing criterion1 ? 976 if(!criterion1(gPrev,u,tempRed,lTag)) { 977 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 1) { 978 if(NULL == redPoly) { 979 bad->insert(tempRed->getLPolyOld()); 980 addToG = 1; 981 //poly tempRedPoly = tempRed->getPoly(); 982 //break; 983 } 984 } 985 else { 986 poly tempRedPoly = tempRed->getPoly(); 987 //Print("REDUCER: "); 988 //pWrite(ppMult_qq(u,tempRedPoly)); 989 pIter(tempRedPoly); 990 int lTempRedPoly = pLength(tempRedPoly); 991 //Print("HEAD MONOMIAL KBUCKET: "); 992 //pWrite(kBucketGetLm(bucket)); 993 kBucketExtractLm(bucket); 994 kBucket_Minus_m_Mult_p(bucket,u,tempRedPoly,&lTempRedPoly); 995 canonicalize++; 996 //Print("REDUCTION\n"); 997 addToG = 1; 998 if(!(canonicalize % 50)) { 999 kBucketCanonicalize(bucket); 1000 } 1001 //Print("HEAD MONOMIAL KBUCKET: "); 1002 //pWrite(kBucketGetLm(bucket)); 1003 tempPoly = kBucketGetLm(bucket); 1004 //Print("TEMPPOLY: "); 1005 //pWrite(tempPoly); 1006 if(NULL != tempPoly) { 1007 tempRed = gPrev->getFirst(); 1008 continue; 1009 } 1010 else { 1011 break; 1012 } 1013 } 1014 } 1015 } 1016 else { 1017 //Print("CRIT 1 "); 1018 1019 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 1 ) { 1020 //Print("NOT ALLOWED REDUCER, CRIT 1:\n"); 1021 //pWrite(u); 1022 //pWrite(tempRed->getTerm()); 1023 //pWrite(tempRed->getPoly()); 1024 if(pLmDivisibleByNoComp(tempRed->getTerm(),l->getTerm())) { 1025 //Print("REDUCER LABEL: "); 1026 //pWrite(tempRed->getTerm()); 1027 addToG = 0; 1028 } 1029 } 1030 } 1031 } 1032 else { 1033 //Print("CRIT 2 "); 1034 if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 1) { 1035 //Print("NOT ALLOWED REDUCER, CRIT 2:\n"); 1036 //pWrite(u); 1037 //pWrite(tempRed->getTerm()); 1038 //pWrite(tempRed->getPoly()); 1039 if(pLmDivisibleByNoComp(tempRed->getTerm(),l->getTerm())) { 1040 //Print("REDUCER LABEL: "); 1041 //pWrite(tempRed->getTerm()); 1042 addToG = 0; 1043 } 1044 } 1045 } 1046 } 1047 1048 } 1049 tempRed = tempRed->getNext(); 1050 } 1051 } 914 1052 if(NULL != tempPoly) { 915 1053 if(NULL == redPoly) { … … 932 1070 } 933 1071 else { 934 Print("\nELEMENT ADDED TO GPREV: ");1072 //Print("\nELEMENT ADDED TO GPREV: "); 935 1073 pNorm(redPoly); 936 pWrite(pHead(redPoly));937 pWrite(l->getTerm());1074 //pWrite(pHead(redPoly)); 1075 //pWrite(l->getTerm()); 938 1076 //Print("%d\n",canonicalize); 939 1077 l->setPoly(redPoly); 940 gPrev->insert(l->getLPoly()); 1078 if(addToG == 0 && termination == 1) { 1079 reducers->insert(l->getLPolyOld()); 1080 } 1081 else { 1082 gPrev->insert(l->getLPolyOld()); 1083 } 941 1084 //Print("%d\n\n",termination); 942 1085 if(termination == 1) { … … 947 1090 else { 948 1091 notInG++; 949 Print("\nNONONO");950 pWrite(pHead(l->getPoly()));951 pWrite(l->getTerm());1092 //Print("\nNONONO"); 1093 //pWrite(pHead(l->getPoly())); 1094 //pWrite(l->getTerm()); 952 1095 } 953 1096 } … … 989 1132 if(NULL != temp) { 990 1133 pNorm(temp); 991 LNode* tempBadNew = new LNode(ppMult_qq(u,tempBad->getTerm()),tempBad->getIndex(),temp,rules->getFirst()->getRule ());1134 LNode* tempBadNew = new LNode(ppMult_qq(u,tempBad->getTerm()),tempBad->getIndex(),temp,rules->getFirst()->getRuleOld()); 992 1135 //pWrite(temp); 993 1136 //pWrite(tempBadNew->getPoly()); … … 1121 1264 //tempRed->setDel(1); 1122 1265 //rules->insert(tempRed->getIndex(),tempRed->getTerm()); 1123 LNode* tempRedNew = new LNode(tempRed->getTerm(),tempRed->getIndex(),temp,rules->getFirst()->getRule ());1266 LNode* tempRedNew = new LNode(tempRed->getTerm(),tempRed->getIndex(),temp,rules->getFirst()->getRuleOld()); 1124 1267 //tempRed->getLPoly()->setRule(rules->getFirst()->getRule()); 1125 1268 tempRedNew->setDel(1); … … 1174 1317 //Print("ELEMENT ADDED TO GPREV: "); 1175 1318 //pWrite(l->getPoly()); 1176 gPrev->insert(l->getLPoly ());1319 gPrev->insert(l->getLPolyOld()); 1177 1320 //Print("TEMP RED == 0 "); 1178 1321 //pWrite(l->getPoly()); … … 1242 1385 if(NULL != tempSpoly) { 1243 1386 pNorm(tempSpoly); 1244 sPolyList->insertByLabel(ppMult_qq(u,temp->getTerm()),temp->getIndex(),tempSpoly,rules->getFirst()->getRule ());1387 sPolyList->insertByLabel(ppMult_qq(u,temp->getTerm()),temp->getIndex(),tempSpoly,rules->getFirst()->getRuleOld()); 1245 1388 //Print("NEW ONE: "); 1246 1389 //pWrite(tempSpoly); … … 1335 1478 //idShow(id); 1336 1479 LList* gPrev = new LList(ONE, i, id->m[0]); 1480 LList* reducers = new LList(); 1337 1481 //idShow(id); 1338 1482 //Print("%p\n",id->m[0]); … … 1357 1501 //Print("%p\n",gPrevTag); 1358 1502 //pWrite(gPrevTag->getPoly()); 1359 gPrev = F5inc(i, id->m[i-1], gPrev, gbPrev, ONE, lTag, rules, rTag, termination);1503 gPrev = F5inc(i, id->m[i-1], gPrev, reducers, gbPrev, ONE, lTag, rules, rTag, termination); 1360 1504 //Print("%d\n",gPrev->count(gPrevTag->getNext())); 1361 1505 //Print("%d\n",gPrev->getLength()); -
kernel/f5gb.h
rf414c0 ra05c71 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: f5gb.h,v 1.4 3 2009-08-30 15:26:00ederc Exp $ */4 /* $Id: f5gb.h,v 1.44 2009-08-31 13:55:46 ederc Exp $ */ 5 5 /* 6 6 * ABSTRACT: f5gb interface … … 34 34 ========================================================================== 35 35 */ 36 bool compareMonomials(int* m1, int** m2, int numberOfRule s);36 bool compareMonomials(int* m1, int** m2, int numberOfRuleOlds); 37 37 38 38 … … 43 43 ================================================== 44 44 */ 45 LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag,int termination);45 LList* F5inc(int i, poly f_i, LList* gPrev,LList* reducers, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag,int termination); 46 46 47 47 /* … … 52 52 ================================================================ 53 53 */ 54 void criticalPair(LList* gPrev, CListOld* critPairs, LTagList* lTag, RTagList* rTag, RList* rules);54 void criticalPair(LList* gPrev, CListOld* critPairs, LTagList* lTag, RTagList* rTag, RList* RuleOlds); 55 55 56 56 /* … … 66 66 ===================================== 67 67 */ 68 inline bool criterion2(int idx, poly t, LNode* l, RList* rules, RTagList* rTag);68 inline bool criterion2(int idx, poly t, LNode* l, RList* RuleOlds, RTagList* rTag); 69 69 70 70 /* 71 71 ========================================================================================================== 72 Criterion 2, i.e. Rewritten Criterion, for its second call in sPols(), with added lastRule Tested parameter72 Criterion 2, i.e. Rewritten Criterion, for its second call in sPols(), with added lastRuleOldTested parameter 73 73 ========================================================================================================== 74 74 */ 75 inline bool criterion2(poly t, LPoly * l, RList* rules, Rule* testedRule);75 inline bool criterion2(poly t, LPolyOld* l, RList* RuleOlds, RuleOld* testedRuleOld); 76 76 77 77 /* … … 80 80 ================================== 81 81 */ 82 inline void computeSPols(CNode* first, RTagList* rTag, RList* rules, LList* sPolyList);82 inline void computeSPols(CNode* first, RTagList* rTag, RList* RuleOlds, LList* sPolyList); 83 83 84 84 /* … … 87 87 ======================================================================== 88 88 */ 89 inline void reduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, RList* rules, LTagList* lTag, RTagList* rTag,89 inline void reduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, RList* RuleOlds, LTagList* lTag, RTagList* rTag, 90 90 ideal gbPrev); 91 91 … … 95 95 ======================================================================== 96 96 */ 97 inline void newReduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, RList* rules, LTagList* lTag, RTagList* rTag, ideal gbPrev, int termination);97 inline void newReduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, LList* reducers, RList* rules, LTagList* lTag, RTagList* rTag, ideal gbPrev, int termination); 98 98 99 99 /*! … … 106 106 * 107 107 * the "bad" ones are the reducers which corrupt the label of temp, they are tested 108 * later on for possible new rules and S-polynomials to be added to the algorithm108 * later on for possible new RuleOlds and S-polynomials to be added to the algorithm 109 109 * ================================================================================ 110 110 */ 111 void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag, int termination);111 void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, LList* reducers, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag, int termination); 112 112 113 113 /* … … 117 117 ===================================================================================== 118 118 */ 119 inline void topReduction(LNode* l, LList* sPolyList, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag, ideal gbPrev);119 inline void topReduction(LNode* l, LList* sPolyList, LList* gPrev, CListOld* critPairs, RList* RuleOlds, LTagList* lTag, RTagList* rTag, ideal gbPrev); 120 120 121 121 /* … … 133 133 ===================================================================== 134 134 */ 135 inline LNode* findReductor(LNode* l, LList* sPolyList, LNode* gPrevRedCheck, LList* gPrev, RList* rules, LTagList* lTag,RTagList* rTag);135 inline LNode* findReductor(LNode* l, LList* sPolyList, LNode* gPrevRedCheck, LList* gPrev, RList* RuleOlds, LTagList* lTag,RTagList* rTag); 136 136 137 137 /* -
kernel/f5lists.cc
rf414c0 ra05c71 30 30 next = NULL; 31 31 } 32 LNode::LNode(LPoly * lp) {32 LNode::LNode(LPolyOld* lp) { 33 33 data = lp; 34 34 next = NULL; 35 35 } 36 36 37 LNode::LNode(LPoly * lp, LNode* l) {37 LNode::LNode(LPolyOld* lp, LNode* l) { 38 38 //Print("HIER LNODE\n"); 39 39 data = lp; … … 41 41 } 42 42 43 LNode::LNode(poly t, int i, poly p, Rule * r) {44 LPoly * lp = new LPoly(t,i,p,r);43 LNode::LNode(poly t, int i, poly p, RuleOld* r) { 44 LPolyOld* lp = new LPolyOld(t,i,p,r); 45 45 data = lp; 46 46 next = NULL; 47 47 } 48 48 49 LNode::LNode(poly t, int i, poly p, Rule * r, LNode* l) {50 LPoly * lp = new LPoly(t,i,p,r);49 LNode::LNode(poly t, int i, poly p, RuleOld* r, LNode* l) { 50 LPolyOld* lp = new LPolyOld(t,i,p,r); 51 51 data = lp; 52 52 next = l; … … 54 54 55 55 LNode::LNode(LNode* ln) { 56 data = ln->getLPoly ();56 data = ln->getLPolyOld(); 57 57 next = ln->getNext(); 58 58 } … … 75 75 // insert new elements to the list always at the end (labeled / classical polynomial view) 76 76 // needed for list gPrev 77 inline LNode* LNode::insert(LPoly * lp) {77 inline LNode* LNode::insert(LPolyOld* lp) { 78 78 //Print("LAST GPREV: "); 79 79 //pWrite(this->getPoly()); … … 89 89 } 90 90 91 inline LNode* LNode::insert(poly t, int i, poly p, Rule * r) {91 inline LNode* LNode::insert(poly t, int i, poly p, RuleOld* r) { 92 92 if(NULL == this) { 93 93 LNode* newElement = new LNode(t,i,p,r,this); … … 103 103 // insert new elements to the list always in front (labeled / classical polynomial view) 104 104 // needed for sPolyList 105 inline LNode* LNode::insertSP(LPoly * lp) {105 inline LNode* LNode::insertSP(LPolyOld* lp) { 106 106 LNode* newElement = new LNode(lp, this); 107 107 //Print("INSERTED IN SPOLYLIST: "); … … 110 110 } 111 111 112 inline LNode* LNode::insertSP(poly t, int i, poly p, Rule * r) {112 inline LNode* LNode::insertSP(poly t, int i, poly p, RuleOld* r) { 113 113 LNode* newElement = new LNode(t, i, p, r, this); 114 114 //Print("INSERTED IN SPOLYLIST: "); … … 118 118 // insert new elemets to the list w.r.t. increasing labels 119 119 // only used for the S-polys to be reduced (TopReduction building new S-polys with higher label) 120 inline LNode* LNode::insertByLabel(poly t, int i, poly p, Rule * r) {120 inline LNode* LNode::insertByLabel(poly t, int i, poly p, RuleOld* r) { 121 121 //Print("ADDING SOLYS TO THE LIST\n"); 122 122 //Print("new element: "); … … 222 222 } 223 223 224 // get the LPoly * out of LNode*225 LPoly * LNode::getLPoly() {224 // get the LPolyOld* out of LNode* 225 LPolyOld* LNode::getLPolyOld() { 226 226 return data; 227 227 } 228 228 229 // get the data from the LPoly saved in LNode229 // get the data from the LPolyOld saved in LNode 230 230 poly LNode::getPoly() { 231 231 return data->getPoly(); … … 240 240 } 241 241 242 Rule * LNode::getRule() {243 return data->getRule ();244 } 245 246 void LNode::setRule (Rule* r) {247 return data->setRule (r);242 RuleOld* LNode::getRuleOld() { 243 return data->getRuleOld(); 244 } 245 246 void LNode::setRuleOld(RuleOld* r) { 247 return data->setRuleOld(r); 248 248 } 249 249 … … 252 252 } 253 253 254 // set the data from the LPoly saved in LNode254 // set the data from the LPolyOld saved in LNode 255 255 void LNode::setPoly(poly p) { 256 256 data->setPoly(p); … … 333 333 } 334 334 335 LList::LList(LPoly * lp) {335 LList::LList(LPolyOld* lp) { 336 336 first = new LNode(lp); 337 337 last = first; … … 339 339 } 340 340 341 LList::LList(poly t,int i,poly p,Rule * r) {341 LList::LList(poly t,int i,poly p,RuleOld* r) { 342 342 first = new LNode(t,i,p,r); 343 343 last = first; … … 356 356 357 357 // insertion at the end of the list, needed for gPrev 358 void LList::insert(LPoly * lp) {358 void LList::insert(LPolyOld* lp) { 359 359 last = last->insert(lp); 360 360 if(NULL == first) { … … 369 369 } 370 370 371 void LList::insert(poly t,int i, poly p, Rule * r) {371 void LList::insert(poly t,int i, poly p, RuleOld* r) { 372 372 last = last->insert(t,i,p,r); 373 373 if(NULL == first) { … … 379 379 380 380 // insertion in front of the list, needed for sPolyList 381 void LList::insertSP(LPoly * lp) {381 void LList::insertSP(LPolyOld* lp) { 382 382 first = first->insertSP(lp); 383 383 length++; … … 385 385 } 386 386 387 void LList::insertSP(poly t,int i, poly p, Rule * r) {387 void LList::insertSP(poly t,int i, poly p, RuleOld* r) { 388 388 first = first->insertSP(t,i,p,r); 389 389 length++; … … 392 392 393 393 394 void LList::insertByLabel(poly t, int i, poly p, Rule * r) {394 void LList::insertByLabel(poly t, int i, poly p, RuleOld* r) { 395 395 first = first->insertByLabel(t,i,p,r); 396 396 length++; … … 483 483 484 484 // NOTE: We insert at the beginning of the list and length = i-1, where i is the actual index. 485 // Thus given actual index i and idx being the index of the LPoly under investigation485 // Thus given actual index i and idx being the index of the LPolyOld under investigation 486 486 // the element on position length-idx is the right one 487 487 LNode* LTagNode::get(int idx, int length) { … … 719 719 } 720 720 721 LPoly * CNode::getAdLp1() {721 LPolyOld* CNode::getAdLp1() { 722 722 return this->data->getAdLp1(); 723 723 } 724 724 725 LPoly * CNode::getAdLp2() {725 LPolyOld* CNode::getAdLp2() { 726 726 return this->data->getAdLp2(); 727 727 } … … 767 767 } 768 768 769 Rule * CNode::getTestedRule() {770 return this->data->getTestedRule ();769 RuleOld* CNode::getTestedRuleOld() { 770 return this->data->getTestedRuleOld(); 771 771 } 772 772 … … 854 854 } 855 855 856 RNode::RNode(Rule * r) {856 RNode::RNode(RuleOld* r) { 857 857 data = r; 858 858 next = NULL; … … 860 860 861 861 RNode::~RNode() { 862 //Print("DELETE R ULE\n");862 //Print("DELETE RuleOld\n"); 863 863 delete data; 864 864 } 865 865 866 RNode* RNode::insert(Rule * r) {866 RNode* RNode::insert(RuleOld* r) { 867 867 RNode* newElement = new RNode(r); 868 868 newElement->next = this; … … 873 873 //Print("IN INSERT: "); 874 874 //pWrite(t); 875 Rule * r = new Rule(i,t);876 //Print("ADDRESS OF R ULE: %p\n",r);875 RuleOld* r = new RuleOld(i,t); 876 //Print("ADDRESS OF RuleOld: %p\n",r); 877 877 RNode* newElement = new RNode(r); 878 878 //Print("ADDRESS OF RNODE: %p\n",newElement); 879 //Print("ADDRESS OF RNODE DATA: %p\n",newElement->getRule ());879 //Print("ADDRESS OF RNODE DATA: %p\n",newElement->getRuleOld()); 880 880 newElement->next = this; 881 881 return newElement; … … 883 883 884 884 885 RNode* RNode::insertOrdered(Rule * r) {885 RNode* RNode::insertOrdered(RuleOld* r) { 886 886 RNode* newElement = new RNode(r); 887 887 RNode* temp = this; … … 890 890 return newElement; 891 891 } 892 if(1 == pLmCmp(newElement->getRule Term(),temp->getRuleTerm())) {892 if(1 == pLmCmp(newElement->getRuleOldTerm(),temp->getRuleOldTerm())) { 893 893 newElement->next = temp; 894 894 return newElement; 895 895 } 896 896 else { 897 while(NULL != temp && 1 == pLmCmp(temp->getRule Term(),newElement->getRuleTerm())) {897 while(NULL != temp && 1 == pLmCmp(temp->getRuleOldTerm(),newElement->getRuleOldTerm())) { 898 898 temp = temp->getNext(); 899 899 } … … 908 908 } 909 909 910 Rule * RNode::getRule() {910 RuleOld* RNode::getRuleOld() { 911 911 return data; 912 912 } 913 913 914 int RNode::getRule Index() {914 int RNode::getRuleOldIndex() { 915 915 return data->getIndex(); 916 916 } 917 917 918 poly RNode::getRule Term() {918 poly RNode::getRuleOldTerm() { 919 919 return data->getTerm(); 920 920 } … … 923 923 RNode* temp = this; 924 924 while(NULL != temp) { 925 pWrite(temp->getRule Term());926 Print("%d\n\n",temp->getRule Index());925 pWrite(temp->getRuleOldTerm()); 926 Print("%d\n\n",temp->getRuleOldIndex()); 927 927 temp = temp->getNext(); 928 928 } … … 938 938 } 939 939 940 RList::RList(Rule * r) {940 RList::RList(RuleOld* r) { 941 941 first = new RNode(r); 942 942 } … … 950 950 //Print("1 %p\n",first); 951 951 //if(first) { 952 //Print("1' %p\n",first->getRule ());952 //Print("1' %p\n",first->getRuleOld()); 953 953 //Print("2 %p\n",first->getNext()); 954 //Print("3 %p\n",first->getNext()->getRule ());955 //Print("3 %p\n",first->getNext()->getRule Term());954 //Print("3 %p\n",first->getNext()->getRuleOld()); 955 //Print("3 %p\n",first->getNext()->getRuleOldTerm()); 956 956 //} 957 957 delete temp; … … 964 964 } 965 965 966 void RList::insert(Rule * r) {966 void RList::insert(RuleOld* r) { 967 967 first = first->insert(r); 968 968 } 969 969 970 void RList::insertOrdered(Rule * r) {970 void RList::insertOrdered(RuleOld* r) { 971 971 first = first->insertOrdered(r); 972 972 } … … 976 976 } 977 977 978 Rule * RList::getRule() {979 return this->getRule ();978 RuleOld* RList::getRuleOld() { 979 return this->getRuleOld(); 980 980 } 981 981 … … 1029 1029 1030 1030 // NOTE: We insert at the beginning of the list and length = i-1, where i is the actual index. 1031 // Thus given actual index i and idx being the index of the LPoly under investigation1031 // Thus given actual index i and idx being the index of the LPolyOld under investigation 1032 1032 // the element on position length-idx+1 is the right one 1033 1033 RNode* RTagNode::get(int idx, int length) { … … 1058 1058 RTagNode* temp = this; 1059 1059 if(NULL != temp && NULL != temp->getRNode()) { 1060 Print("1. element: %d, ",getRNode()->getRule ()->getIndex());1061 pWrite(getRNode()->getRule ()->getTerm());1060 Print("1. element: %d, ",getRNode()->getRuleOld()->getIndex()); 1061 pWrite(getRNode()->getRuleOld()->getTerm()); 1062 1062 temp = temp->next; 1063 1063 int i = 2; 1064 1064 while(NULL != temp->getRNode() && NULL != temp) { 1065 Print("%d. element: %d, ",i,getRNode()->getRule ()->getIndex());1066 pWrite(getRNode()->getRule ()->getTerm());1065 Print("%d. element: %d, ",i,getRNode()->getRuleOld()->getIndex()); 1066 pWrite(getRNode()->getRuleOld()->getTerm()); 1067 1067 temp = temp->next; 1068 1068 i++; -
kernel/f5lists.h
rf414c0 ra05c71 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: f5lists.h,v 1.2 3 2009-07-16 07:47:51ederc Exp $ */4 /* $Id: f5lists.h,v 1.24 2009-08-31 13:55:46 ederc Exp $ */ 5 5 /* 6 6 * ABSTRACT: list interface … … 32 32 /* 33 33 ======================================= 34 class LNode (nodes for lists of LPoly s)34 class LNode (nodes for lists of LPolyOlds) 35 35 ======================================= 36 36 */ 37 37 class LNode { 38 38 private: 39 LPoly * data;39 LPolyOld* data; 40 40 LNode* next; 41 41 public: 42 42 // generating new list elements from the labeled / classical polynomial view 43 43 LNode(); 44 LNode(LPoly * lp);45 LNode(LPoly * lp, LNode* l);46 LNode(poly t, int i, poly p, Rule * r=NULL);47 LNode(poly t, int i, poly p, Rule * r, LNode* l);44 LNode(LPolyOld* lp); 45 LNode(LPolyOld* lp, LNode* l); 46 LNode(poly t, int i, poly p, RuleOld* r=NULL); 47 LNode(poly t, int i, poly p, RuleOld* r, LNode* l); 48 48 LNode(LNode* ln); 49 49 ~LNode(); … … 51 51 // insert new elements to the list at the end from the labeled / classical polynomial view 52 52 // needed for gPrev 53 LNode* insert(LPoly * lp);54 LNode* insert(poly t, int i, poly p, Rule * r);55 LNode* insertByDeg(LPoly * lp);53 LNode* insert(LPolyOld* lp); 54 LNode* insert(poly t, int i, poly p, RuleOld* r); 55 LNode* insertByDeg(LPolyOld* lp); 56 56 // insert new elements to the list in front from the labeled / classical polynomial view 57 57 // needed for sPolyList 58 LNode* insertSP(LPoly * lp);59 LNode* insertSP(poly t, int i, poly p, Rule * r);58 LNode* insertSP(LPolyOld* lp); 59 LNode* insertSP(poly t, int i, poly p, RuleOld* r); 60 60 // insert new elements to the list with resp. to increasing labels 61 61 // only used for the S-polys to be reduced (TopReduction building new S-polys with higher label) 62 LNode* insertByLabel(poly t, int i, poly p, Rule * r);62 LNode* insertByLabel(poly t, int i, poly p, RuleOld* r); 63 63 LNode* insertByLabel(LNode* l); 64 64 LNode* insertFirst(LNode* l); … … 69 69 // only used for the S-polys, which are already sorted by increasing degree by CListOld 70 70 LNode* deleteByDeg(); 71 // get the LPoly * out of LNode*72 LPoly * getLPoly();73 // get the data from the LPoly saved in LNode71 // get the LPolyOld* out of LNode* 72 LPolyOld* getLPolyOld(); 73 // get the data from the LPolyOld saved in LNode 74 74 poly getPoly(); 75 75 poly getTerm(); 76 76 int getIndex(); 77 Rule * getRule();77 RuleOld* getRuleOld(); 78 78 bool getDel(); 79 // set the data from the LPoly saved in LNode79 // set the data from the LPolyOld saved in LNode 80 80 void setPoly(poly p); 81 81 void setTerm(poly t); 82 82 void setIndex(int i); 83 83 void setNext(LNode* l); 84 void setRule (Rule* r);84 void setRuleOld(RuleOld* r); 85 85 void setDel(bool d); 86 86 // test if for any list element the polynomial part of the data is equal to *p … … 94 94 /* 95 95 ============================ 96 class LList(lists of LPoly s)96 class LList(lists of LPolyOlds) 97 97 ============================ 98 98 */ … … 104 104 public: 105 105 LList(); 106 LList(LPoly * lp);107 LList(poly t,int i,poly p, Rule * r = NULL);106 LList(LPolyOld* lp); 107 LList(poly t,int i,poly p, RuleOld* r = NULL); 108 108 ~LList(); 109 109 // insertion at the end of the list 110 110 // needed for gPrev 111 void insert(LPoly * lp);112 void insert(poly t,int i, poly p, Rule * r = NULL);113 void insertByDeg(LPoly * lp);111 void insert(LPolyOld* lp); 112 void insert(poly t,int i, poly p, RuleOld* r = NULL); 113 void insertByDeg(LPolyOld* lp); 114 114 // insertion in front of the list 115 115 // needed for sPolyList 116 void insertSP(LPoly * lp);117 void insertSP(poly t,int i, poly p, Rule * r = NULL);118 void insertByLabel(poly t, int i, poly p, Rule * r = NULL);116 void insertSP(LPolyOld* lp); 117 void insertSP(poly t,int i, poly p, RuleOld* r = NULL); 118 void insertByLabel(poly t, int i, poly p, RuleOld* r = NULL); 119 119 void insertByLabel(LNode* l); 120 120 void insertFirst(LNode* l); … … 133 133 /* 134 134 ============================================== 135 class LtagNode (nodes for lists of LPoly tags)135 class LtagNode (nodes for lists of LPolyOld tags) 136 136 ============================================== 137 137 */ … … 155 155 /* 156 156 ========================================================================= 157 class LTagList(lists of LPoly tags, i.e. first elements of a given index)157 class LTagList(lists of LPolyOld tags, i.e. first elements of a given index) 158 158 ========================================================================= 159 159 */ … … 215 215 CPairOld* getData(); 216 216 CNode* getNext(); 217 LPoly * getAdLp1();218 LPoly * getAdLp2();217 LPolyOld* getAdLp1(); 218 LPolyOld* getAdLp2(); 219 219 poly getLp1Poly(); 220 220 poly getLp2Poly(); … … 227 227 int getLp1Index(); 228 228 int getLp2Index(); 229 Rule * getTestedRule();229 RuleOld* getTestedRuleOld(); 230 230 void print(); 231 231 }; … … 254 254 /* 255 255 ====================================== 256 class RNode (nodes for lists of Rule s)256 class RNode (nodes for lists of RuleOlds) 257 257 ====================================== 258 258 */ 259 259 class RNode { 260 260 private: 261 Rule * data;261 RuleOld* data; 262 262 RNode* next; 263 263 public: 264 264 RNode(); 265 RNode(Rule * r);265 RNode(RuleOld* r); 266 266 ~RNode(); 267 RNode* insert(Rule * r);267 RNode* insert(RuleOld* r); 268 268 RNode* insert(int i, poly t); 269 RNode* insertOrdered(Rule * r);269 RNode* insertOrdered(RuleOld* r); 270 270 RNode* getNext(); 271 Rule * getRule();272 int getRule Index();273 poly getRule Term();274 void print(); 275 }; 276 277 /* 278 ============================ 279 class RList (lists of Rule s)271 RuleOld* getRuleOld(); 272 int getRuleOldIndex(); 273 poly getRuleOldTerm(); 274 void print(); 275 }; 276 277 /* 278 ============================ 279 class RList (lists of RuleOlds) 280 280 ============================ 281 281 */ … … 287 287 public: 288 288 RList(); 289 RList(Rule * r);289 RList(RuleOld* r); 290 290 ~RList(); 291 void insert(Rule * r);291 void insert(RuleOld* r); 292 292 void insert(int i, poly t); 293 void insertOrdered(Rule * r);293 void insertOrdered(RuleOld* r); 294 294 RNode* getFirst(); 295 Rule * getRule();295 RuleOld* getRuleOld(); 296 296 void print(); 297 297 }; … … 301 301 /* 302 302 ============================================= 303 class RtagNode (nodes for lists of Rule tags)303 class RtagNode (nodes for lists of RuleOld tags) 304 304 ============================================= 305 305 */ … … 325 325 /* 326 326 ======================================================================== 327 class RTagList(lists of Rule tags, i.e. first elements of a given index)327 class RTagList(lists of RuleOld tags, i.e. first elements of a given index) 328 328 ======================================================================== 329 329 */
Note: See TracChangeset
for help on using the changeset viewer.