Changeset 9bb97e in git for kernel/f5lists.cc


Ignore:
Timestamp:
Feb 6, 2009, 9:12:35 PM (14 years ago)
Author:
Christian Eder
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
Children:
fcb80223d452f79f3b3e1a62b71d291a5fc64943
Parents:
b3e45f80f34104e744829011d4460dcee8e1e365
Message:
implementation of computeSPols, start of reduction and topReduction


git-svn-id: file:///usr/local/Singular/svn/trunk@11353 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/f5lists.cc

    rb3e45f r9bb97e  
    2626
    2727// generating new list elements (labeled / classical polynomial / LNode view)
    28 LNode::LNode(LPoly* lp) {
     28LNode::LNode() {
     29    data = NULL;
     30    next = NULL;
     31}
     32 LNode::LNode(LPoly* lp) {
    2933    data = lp;
    3034    next = NULL;
     
    3539    next = l;
    3640}
    37 LNode::LNode(poly* t, int* i, poly* p) {
     41LNode::LNode(poly t, int i, poly p) {
    3842    LPoly* lp = new LPoly(t,i,p);
    3943    data = lp;
     
    4145}
    4246       
    43 LNode::LNode(poly* t, int* i, poly* p, LNode* l) {
     47LNode::LNode(poly t, int i, poly p, LNode* l) {
    4448    LPoly* lp = new LPoly(t,i,p);
    4549    data = lp;
     
    6367}
    6468       
    65 LNode* LNode::insert(poly* t, int* i, poly* p) {
     69LNode* LNode::insert(poly t, int i, poly p) {
    6670    LNode* newElement = new LNode(t, i, p, this);
    6771    return newElement;
     
    7074// insert new elemets to the list w.r.t. increasing labels
    7175// only used for the S-polys to be reduced (TopReduction building new S-polys with higher label)
    72 LNode* LNode::insertByLabel(LPoly* lp) {
    73     if( lp->getTerm() <= this->data->getTerm() ) {
    74         LNode* newElement   =   new LNode(lp, this);
     76LNode* LNode::insertByLabel(poly t, int i, poly p) {
     77    if(0 == pLmCmp(t,this->getTerm()) || -1 == pLmCmp(t,this->getTerm())) {
     78        LNode* newElement   =   new LNode(t, i, p, this);
    7579        return newElement;
    7680    }
    7781    else {
    7882        LNode* temp = this;
    79         while( NULL != temp->next ) {
    80             if( lp->getTerm() <= temp->next->data->getTerm() ) {
    81                 LNode* newElement   =   new LNode(lp, temp->next);
     83        while( NULL != temp->next->data ) {
     84            if( 0 == pLmCmp(t,temp->next->getTerm()) || -1 == pLmCmp(t,temp->next->getTerm())) {
     85                LNode* newElement   =   new LNode(t, i, p, temp->next);
    8286                temp->next          =   newElement;
    8387                return this;
     
    8791            }
    8892        }
    89         LNode* newElement   =   new LNode(lp, NULL);
     93        LNode* newElement   =   new LNode(t, i, p, NULL);
    9094        temp->next          =   newElement;
    9195        return this;
     
    120124int LNode::getIndex() {
    121125    return data->getIndex();
     126}
     127
     128bool LNode::getDel() {
     129    return data->getDel();
     130}
     131
     132// set the data from the LPoly saved in LNode
     133void LNode::setPoly(poly p) {
     134    data->setPoly(p);
     135}
     136
     137void LNode::setTerm(poly t) {
     138    data->setTerm(t);
     139}
     140
     141void LNode::setIndex(int i) {
     142    data->setIndex(i);
     143}
     144
     145void LNode::setDel(bool d) {
     146    data->setDel(d);
    122147}
    123148
     
    144169*/
    145170
     171LList::LList() {
     172    first   =   new LNode();
     173    length  =   0;
     174}
     175
    146176LList::LList(LPoly* lp) {
    147     first   = new LNode(lp);
    148 }
    149 
    150 LList::LList(poly* t,int* i,poly* p) {
    151     first   = new LNode(t,i,p);
     177    first   =   new LNode(lp);
     178    length  =   1;
     179}
     180
     181LList::LList(poly t,int i,poly p) {
     182    first   =   new LNode(t,i,p);
     183    length  =   1;
    152184}
    153185
     
    159191void LList::insert(LPoly* lp) {
    160192    first = first->insert(lp);
    161 }
    162 
    163 void LList::insert(poly* t,int* i, poly* p) {
     193    length++;
     194}
     195
     196void LList::insert(poly t,int i, poly p) {
    164197    first = first->insert(t,i,p);
    165 }
    166 
    167 void LList::insertByLabel(LPoly* lp) {
    168     first = first->insertByLabel(lp);
     198    length++;
     199}
     200
     201void LList::insertByLabel(poly t, int i, poly p) {
     202    first = first->insertByLabel(t,i,p);
     203    length++;
    169204}
    170205
     
    183218LNode* LList::getNext(LNode* l) {
    184219    return l->getNext();
     220}
     221
     222int LList::getLength() {
     223    return length;
    185224}
    186225
     
    299338            if(0 == pLmCmp(u1,ppMult_qq(this->data->getT1(), this->data->getLp1Term())) ||
    300339               -1 == pLmCmp(u1,ppMult_qq(this->data->getT1(), this->data->getLp1Term()))) {
    301                 Print("Leck mich am Arsch: ");
    302340                pWrite(u1);
    303341                Print("Multi-Term in CritPairs Sortierung altes Element: ");
     
    386424    CNode* temp = this;
    387425    while( NULL != temp->data ) {
    388         while( temp->next->data->getDeg() == this->data->getDeg() ) {
     426        while(NULL != temp->next->data && temp->next->data->getDeg() == this->data->getDeg()) {
    389427            temp = temp->next;
    390428        }
    391429        CNode* returnCNode  =   temp->next;   
    392         temp->next          =   NULL;
     430        // every CList should end with a (NULL,NULL) element for a similar behaviour
     431        // using termination conditions throughout the algorithm
     432        temp->next          =   new CNode();
    393433        return returnCNode;
    394434    }
    395435    return NULL;
     436}
     437
     438CPair* CNode::getData() {
     439    return data;
     440}
     441
     442CNode* CNode::getNext() {
     443    return next;
     444}
     445
     446LPoly* CNode::getAdLp1() {
     447    return this->data->getAdLp1();
     448}
     449
     450LPoly* CNode::getAdLp2() {
     451    return this->data->getAdLp2();
    396452}
    397453
     
    424480}
    425481
     482poly* CNode::getAdT1() {
     483    return this->data->getAdT1();
     484}
     485
    426486poly CNode::getT2() {
    427487    return this->data->getT2();
     488}
     489
     490poly* CNode::getAdT2() {
     491    return this->data->getAdT2();
     492}
     493
     494Rule* CNode::getLastRuleTested() {
     495    return this->data->getLastRuleTested();
    428496}
    429497
     
    472540}
    473541
     542CNode* CList::getFirst() {
     543    return first;
     544}
     545
    474546// get the first elements from CList which by the above sorting have minimal degree
    475547// returns the pointer on the first element of those
     
    510582}
    511583
     584RNode* RNode::insert(int i, poly t, LPoly* l) {
     585    Rule*   r           =   new Rule(i,t,l);
     586    RNode* newElement   =   new RNode(r);
     587    newElement->next    =   this;
     588    return newElement;
     589}
     590
    512591RNode* RNode::getNext() {
    513592    return next;
     
    537616RList::RList(Rule* r) {
    538617    first = new RNode(r);
     618}
     619
     620void RList::insert(int i, poly t, LPoly* l) {
     621    first = first->insert(i,t,l);
    539622}
    540623
Note: See TracChangeset for help on using the changeset viewer.