Changeset 338842d in git
- Timestamp:
- Mar 1, 2009, 9:31:55 PM (14 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 18765e261637faef8a8abfb3019c46a6d8e668a5
- Parents:
- 5887d78d81d30fb2177cf296ce90d01565c6ae3b
- Location:
- kernel
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/f5gb.cc
r5887d7 r338842d 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: f5gb.cc,v 1.3 6 2009-02-28 21:14:06ederc Exp $ */4 /* $Id: f5gb.cc,v 1.37 2009-03-01 20:31:54 ederc Exp $ */ 5 5 /* 6 6 * ABSTRACT: f5gb interface … … 150 150 //Print("3rd gPrev: "); 151 151 //pWrite(gPrev->getFirst()->getNext()->getNext()->getPoly()); 152 153 152 //delete sPolyList; 153 //delete critPairs; 154 //gPrev->print(); 154 155 return gPrev; 155 156 } … … 632 633 // try l as long as there are reductors found by findReductor() 633 634 do { 634 LNode* tempRed = new LNode(); 635 LNode* gPrevRedCheck = new LNode(lTag->getFirstCurrentIdx()); 636 LNode* tempRed = new LNode(); 635 637 //Print("TESTED POLYNOMIAL IN THE FOLLOWING: "); 636 638 //pWrite(l->getPoly()); 637 639 //Print("HIER\n"); 638 tempRed = findReductor(l,gPrev ,rules,lTag,rTag);640 tempRed = findReductor(l,gPrevRedCheck,gPrev,rules,lTag,rTag); 639 641 //Print("--------------------------------HIER DEBUG 2----------------------------------\n"); 640 642 // if a reductor for l is found and saved in tempRed … … 713 715 714 716 //pWrite(l->getPoly()); 715 l->setGPrevRedCheck(NULL);717 gPrevRedCheck = lTag->getFirstCurrentIdx(); 716 718 } 717 719 else { … … 753 755 ===================================================================== 754 756 */ 755 LNode* findReductor(LNode* l, L List* gPrev, RList* rules, LTagList* lTag,RTagList* rTag) {757 LNode* findReductor(LNode* l, LNode* gPrevRedCheck, LList* gPrev, RList* rules, LTagList* lTag,RTagList* rTag) { 756 758 // allociation of memory for the possible reductor 757 759 //Print("IN FIND REDUCTOR\n"); … … 765 767 // that we can start searching for new reducers from this point and 766 768 // not from the first element of gPrev with the current index 767 if(NULL != l->getGPrevRedCheck()) { 768 temp = l->getGPrevRedCheck()->getNext(); 769 } 770 // no reductors were searched for l before, thus start at the first 771 // element of gPrev with the current index, tagged by lTag 772 else { 773 temp = lTag->getFirstCurrentIdx(); 774 } 769 temp = gPrevRedCheck; 775 770 // search for reductors until we are at the end of gPrev resp. at the 776 771 // end of the elements of the current index 777 772 while(NULL != temp && temp->getIndex() == l->getIndex()) { 773 //pWrite(temp->getPoly()); 774 //Print("INDEX: %d\n",temp->getIndex()); 778 775 // does the head of the element of gPrev divides the head of 779 776 // the to be reduced element? … … 807 804 if(!criterion1(gPrev,u,temp,lTag)) { 808 805 //Print("HIER DEBUG\n"); 809 l->setGPrevRedCheck(temp);806 gPrevRedCheck = temp; 810 807 LNode* redNode = new LNode(ppMult_qq(u,temp->getTerm()),temp->getIndex(),red,NULL,NULL); 811 808 return redNode; … … 860 857 } 861 858 ideal idNew = kInterRed(id); 862 idDelete(&id);863 859 id = idNew; 860 idShow(id); 864 861 qsortDegree(&id->m[0],&id->m[IDELEMS(id)-1]); 865 862 LList* gPrev = new LList(ONE, i, id->m[0]); … … 927 924 // temp = temp->getNext(); 928 925 // } 929 delete(gPrev); 926 idShow(id); 927 //gPrev->print(); 928 //delete gPrev; 929 //delete lTag; 930 //delete rTag; 930 931 return(gbPrev); 931 932 -
kernel/f5gb.h
r5887d7 r338842d 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: f5gb.h,v 1.3 0 2009-02-28 21:14:06ederc Exp $ */4 /* $Id: f5gb.h,v 1.31 2009-03-01 20:31:54 ederc Exp $ */ 5 5 /* 6 6 * ABSTRACT: f5gb interface … … 107 107 ===================================================================== 108 108 */ 109 LNode* findReductor(LNode* l, L List* gPrev, RList* rules, LTagList* lTag,RTagList* rTag);109 LNode* findReductor(LNode* l, LNode* gPrevRedCheck, LList* gPrev, RList* rules, LTagList* lTag,RTagList* rTag); 110 110 111 111 /* -
kernel/f5lists.cc
r5887d7 r338842d 29 29 data = NULL; 30 30 next = NULL; 31 gPrevRedCheck = NULL;32 31 } 33 32 LNode::LNode(LPoly* lp) { 34 33 data = lp; 35 34 next = NULL; 36 gPrevRedCheck = NULL;37 35 } 38 36 … … 41 39 data = lp; 42 40 next = l; 43 gPrevRedCheck = NULL; 44 } 45 46 LNode::LNode(poly t, int i, poly p, Rule* r, LNode* gPCheck) { 41 } 42 43 LNode::LNode(poly t, int i, poly p, Rule* r) { 47 44 LPoly* lp = new LPoly(t,i,p,r); 48 45 data = lp; 49 46 next = NULL; 50 gPrevRedCheck = gPCheck;51 47 } 52 48 53 LNode::LNode(poly t, int i, poly p, Rule* r, LNode* gPCheck, LNode*l) {49 LNode::LNode(poly t, int i, poly p, Rule* r, LNode* l) { 54 50 LPoly* lp = new LPoly(t,i,p,r); 55 51 data = lp; 56 52 next = l; 57 gPrevRedCheck = gPCheck;58 53 } 59 54 … … 61 56 data = ln->getLPoly(); 62 57 next = ln->getNext(); 63 gPrevRedCheck = NULL;64 58 } 65 59 66 60 LNode::~LNode() { 67 61 //delete next; 68 delete gPrevRedCheck;69 62 delete data; 70 63 } 71 64 65 void LNode::deleteAll() { 66 while(NULL != next) { 67 Print("%p\n",next); 68 pWrite(next->data->getPoly()); 69 next->deleteAll(); 70 } 71 delete data; 72 } 73 72 74 // insert new elements to the list always at the end (labeled / classical polynomial view) 73 75 // needed for list gPrev … … 82 84 83 85 LNode* LNode::insert(poly t, int i, poly p, Rule* r) { 84 LNode* newElement = new LNode(t, i, p, r, NULL , NULL);86 LNode* newElement = new LNode(t, i, p, r, NULL); 85 87 this->next = newElement; 86 88 return newElement; … … 97 99 98 100 LNode* LNode::insertSP(poly t, int i, poly p, Rule* r) { 99 LNode* newElement = new LNode(t, i, p, r, NULL,this);101 LNode* newElement = new LNode(t, i, p, r, this); 100 102 //Print("INSERTED IN SPOLYLIST: "); 101 103 //pWrite(t); … … 109 111 //pWrite(t); 110 112 if(NULL == this || NULL == data) { 111 LNode* newElement = new LNode(t, i, p, r, NULL,this);113 LNode* newElement = new LNode(t, i, p, r, this); 112 114 return newElement; 113 115 } … … 117 119 if(-1 == pLmCmp(t,this->getTerm())) { 118 120 //Print("HIERDRIN\n"); 119 LNode* newElement = new LNode(t, i, p, r, NULL,this);121 LNode* newElement = new LNode(t, i, p, r, this); 120 122 //Print("%p\n",this); 121 123 //Print("%p\n",newElement->next); … … 128 130 //pWrite(temp->getTerm()); 129 131 if(-1 == pLmCmp(t,temp->next->getTerm())) { 130 LNode* newElement = new LNode(t, i, p, r, NULL,temp->next);132 LNode* newElement = new LNode(t, i, p, r, temp->next); 131 133 temp->next = newElement; 132 134 return this; … … 141 143 } 142 144 //Print("HIER\n"); 143 LNode* newElement = new LNode(t, i, p, r, NULL,temp->next);145 LNode* newElement = new LNode(t, i, p, r, temp->next); 144 146 temp->next = newElement; 145 147 return this; … … 181 183 } 182 184 183 LNode* LNode::getGPrevRedCheck() {184 return gPrevRedCheck;185 }186 187 185 // set the data from the LPoly saved in LNode 188 186 void LNode::setPoly(poly p) { … … 196 194 void LNode::setIndex(int i) { 197 195 data->setIndex(i); 198 }199 200 void LNode::setGPrevRedCheck(LNode* l) {201 gPrevRedCheck = l;202 196 } 203 197 … … 265 259 266 260 LList::~LList() { 267 delete first; 261 LNode* temp; 262 while(first) { 263 temp = first; 264 first = first->getNext(); 265 delete temp; 266 } 268 267 } 269 268 … … 787 786 } 788 787 788 RList::~RList() { 789 delete first; 790 } 791 789 792 void RList::insert(int i, poly t) { 790 793 first = first->insert(i,t); … … 824 827 } 825 828 826 829 RTagNode::~RTagNode() { 827 830 delete next; 828 831 delete data; … … 896 899 } 897 900 901 RTagList::~RTagList() { 902 delete first; 903 } 904 898 905 // declaration with first as parameter in LTagNode due to sorting of LTagList 899 906 void RTagList::insert(RNode* r) { -
kernel/f5lists.h
r5887d7 r338842d 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: f5lists.h,v 1.1 2 2009-02-26 09:01:52ederc Exp $ */4 /* $Id: f5lists.h,v 1.13 2009-03-01 20:31:55 ederc Exp $ */ 5 5 /* 6 6 * ABSTRACT: list interface … … 39 39 LPoly* data; 40 40 LNode* next; 41 LNode* gPrevRedCheck;42 41 public: 43 42 // generating new list elements from the labeled / classical polynomial view … … 45 44 LNode(LPoly* lp); 46 45 LNode(LPoly* lp, LNode* l); 47 LNode(poly t, int i, poly p, Rule* r=NULL , LNode* gPCheck=NULL);48 LNode(poly t, int i, poly p, Rule* r, LNode* gPCheck, 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); 49 48 LNode(LNode* ln); 50 49 ~LNode(); 50 void deleteAll(); 51 51 // insert new elements to the list at the end from the labeled / classical polynomial view 52 52 // needed for gPrev … … 73 73 int getIndex(); 74 74 Rule* getRule(); 75 LNode* getGPrevRedCheck();76 75 // set the data from the LPoly saved in LNode 77 76 void setPoly(poly p); 78 77 void setTerm(poly t); 79 78 void setIndex(int i); 80 void setGPrevRedCheck(LNode* l);81 79 void setNext(LNode* l); 82 80 // test if for any list element the polynomial part of the data is equal to *p
Note: See TracChangeset
for help on using the changeset viewer.