Changeset 55a828 in git


Ignore:
Timestamp:
Mar 6, 2009, 10:30:21 PM (15 years ago)
Author:
Christian Eder
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b52fc4b2495505785981d640dcf7eb3e456778ef')
Children:
c3da59184ecd80962fcdd0a75a23554e86c72501
Parents:
cad5075007d013d435407e43d47c2810e6f19bec
Message:
first attempt of a working F5C (F5 with interreduction) implementation


git-svn-id: file:///usr/local/Singular/svn/trunk@11524 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/f5gb.cc

    rcad507 r55a828  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: f5gb.cc,v 1.39 2009-03-05 14:30:23 ederc Exp $ */
     4/* $Id: f5gb.cc,v 1.40 2009-03-06 21:30:21 ederc Exp $ */
    55/*
    66* ABSTRACT: f5gb interface
     
    7070*/
    7171LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag) {
    72     Print("in f5inc\n");           
     72    //Print("in f5inc\n");           
    7373    //pWrite(rules->getFirst()->getRuleTerm());
    7474    int j;
     
    7777    poly tempNF =   kNF(gbPrev,currQuotient,f_i);
    7878    f_i         =   tempNF;
    79     gPrev->insert(ONE,i,f_i);
    80     //gPrev->insert(ONE,gPrev->getLength()+1,f_i);
     79    //gPrev->insert(ONE,i,f_i);
     80    gPrev->insert(ONE,gPrev->getLength()+1,f_i);
    8181    // tag the first element in gPrev of the current index for findReductor()
    8282    lTag->setFirstCurrentIdx(gPrev->getLast());
     
    152152    //pWrite(gPrev->getFirst()->getNext()->getNext()->getPoly());
    153153    //delete sPolyList;
    154     critPairs->print();
     154    //critPairs->print();
    155155    delete critPairs;
    156     Print("IN F5INC\n");
     156    //Print("IN F5INC\n");
    157157   
    158158    //gPrev->print();
     
    170170*/
    171171inline void criticalPair(LList* gPrev, CList* critPairs, LTagList* lTag, RTagList* rTag, RList* rules) {
     172    //Print("IN CRITPAIRS\n");
    172173    // initialization for usage in pLcm()
    173174    number nOne         =   nInit(1);
     
    279280*/
    280281inline bool criterion2(poly t, LNode* l, RList* rules, RTagList* rTag) {
    281     Print("------------------------------IN CRITERION 2-----------------------------------------\n");
    282         Print("RULES: \n");
    283         RNode* tempR    =   rules->getFirst();
    284         while(NULL != tempR->getRule()) {
    285             Print("ADDRESS OF RNODE: %p\n",tempR);
    286             Print("ADDRESS OF RULE: %p\n",tempR->getRule());
    287             pWrite(tempR->getRuleTerm());
    288             Print("ADDRESS OF TERM: %p\n",tempR->getRuleTerm());
    289             Print("%d\n\n",tempR->getRuleIndex());
    290             tempR   =   tempR->getNext();
    291         }
    292         Print("TESTED ELEMENT: ");
    293         pWrite(l->getPoly());
    294         pWrite(l->getTerm());
    295         pWrite(ppMult_qq(t,l->getTerm()));
    296         Print("%d\n\n",l->getIndex());
     282    //Print("------------------------------IN CRITERION 2/1-----------------------------------------\n");
     283        //Print("RULES: \n");
     284        //RNode* tempR    =   rules->getFirst();
     285        //while(NULL != tempR->getRule()) {
     286            //Print("ADDRESS OF RNODE: %p\n",tempR);
     287            //Print("ADDRESS OF RULE: %p\n",tempR->getRule());
     288            //pWrite(tempR->getRuleTerm());
     289            //Print("ADDRESS OF TERM: %p\n",tempR->getRuleTerm());
     290            //Print("%d\n\n",tempR->getRuleIndex());
     291            //tempR   =   tempR->getNext();
     292        //}
     293        //Print("TESTED ELEMENT: ");
     294        //pWrite(l->getPoly());
     295        //pWrite(l->getTerm());
     296        //pWrite(ppMult_qq(t,l->getTerm()));
     297        //Print("%d\n\n",l->getIndex());
    297298// start at the previously added element to gPrev, as all other elements will have the same index for sure
    298299    RNode* testNode =   new RNode();
     300    /*
    299301    if(NULL == rTag->getFirst()->getRule()) {
    300302        testNode    =   rules->getFirst();
     
    311313             *       INDEX OF THE PREVIOUS ELEMENTS
    312314             *       GETS HIGHER!
    313              *-----------------------------------*/
     315             *-----------------------------------
    314316            testNode    =   rules->getFirst();
    315317            //testNode    =   rTag->get(l->getIndex());
     
    317319        }
    318320    }
     321    */
     322    testNode    =   rules->getFirst();
    319323        // save the monom t1*label_term(l) as it is tested various times in the following
    320324    poly u1 = ppMult_qq(t,l->getTerm());
     
    338342    while(NULL != testNode && NULL != testNode->getRule() && testNode->getRule() != l->getRule()
    339343          && l->getIndex() == testNode->getRuleIndex()) {
     344        //Print("%p\n",testNode);
    340345        //pWrite(testNode->getRuleTerm());
    341                 pWrite(testNode->getRuleTerm());
    342         pWrite(t);
    343         pWrite(l->getTerm());
    344         pWrite(u1);
     346        //pWrite(t);
     347        //pWrite(l->getTerm());
     348        //pWrite(u1);
    345349        //Print("%d\n",testNode->getRuleIndex());
    346350        if(pLmDivisibleBy(testNode->getRuleTerm(),u1)) {
    347             Print("Criterion 2 NOT passed!\n");
     351            //Print("Criterion 2 NOT passed!\n");
    348352            pDelete(&u1);
    349353            return true;
     
    364368*/
    365369inline bool criterion2(poly t, LPoly* l, RList* rules, Rule* testedRule) {
    366     //Print("------------------------------IN CRITERION 2-----------------------------------------\n");
     370    //Print("------------------------------IN CRITERION 2/2-----------------------------------------\n");
    367371    //Print("LAST RULE TESTED: %p",testedRule);
    368372    //Print("RULES: \n");
     
    431435                            //Print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ZERO REDUCTION~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    432436                                                        reductionsToZero++;
    433                         Print("IN SPOLS 1\n");
     437                        //Print("IN SPOLS 1\n");
    434438                            rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term()));
    435439                            //Print("RULE ADDED: \n");
     
    440444                        }
    441445                        else {
    442                         Print("IN SPOLS 2\n");
     446                        //Print("IN SPOLS 2\n");
    443447                            rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term()));
    444448                            //Print("RULE ADDED: \n");
     
    464468                            //Print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ZERO REDUCTION~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    465469                        reductionsToZero++;
    466                         Print("IN SPOLS 3\n");
     470                        //Print("IN SPOLS 3\n");
    467471                        rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term()));
    468472                        //Print("RULE ADDED: \n");
     
    472476                    }
    473477                    else {
    474                         Print("IN SPOLS 4\n");
     478                        //Print("IN SPOLS 4\n");
    475479                        rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term()));
    476480                        //Print("RULE ADDED: \n");
     
    585589        //pWrite(gPrevRedCheck->getPoly());
    586590        LNode* tempRed          =   new LNode();
    587         Print("TESTED POLYNOMIAL IN THE FOLLOWING: ");
    588         pWrite(l->getPoly());
     591        //Print("TESTED POLYNOMIAL IN THE FOLLOWING: ");
     592        //pWrite(l->getPoly());
    589593        //Print("HIER\n");
    590594        tempRed  =   findReductor(l,gPrevRedCheck,gPrev,rules,lTag,rTag);
     
    595599            // if label of reductor is greater than the label of l we have to built a new element
    596600            // and add it to sPolyList
    597             Print("REDUCTOR POLYNOMIAL: ");
    598             pWrite(tempRed->getPoly());
    599             Print("TEMPRED: %p\n",tempRed);
    600             Print("TERM: ");
    601             pWrite(tempRed->getTerm());
     601            //Print("REDUCTOR POLYNOMIAL: ");
     602            //pWrite(tempRed->getPoly());
     603            //Print("TEMPRED: %p\n",tempRed);
     604            //Print("TERM: ");
     605            //pWrite(tempRed->getTerm());
    602606            if(pLmCmp(tempRed->getTerm(),l->getTerm()) == 1) {
    603607                // needed sinc pSub destroys the arguments!
     
    622626                    // for debugging
    623627                    //pWrite(tempRed->getPoly());
    624                     Print("RULE ADDED\n");
     628                    //Print("RULE ADDED\n");
    625629                    rules->insert(tempRed->getIndex(),tempRed->getTerm());
    626630                    tempRed->getLPoly()->setRule(rules->getFirst()->getRule());
    627                     Print("%p\n",sPolyList->getFirst());
    628                     Print("%p\n",sPolyList->getFirst()->getLPoly());
    629                     Print("SPOLYLIST LENGTH: %d\n",sPolyList->getLength());
     631                    //Print("%p\n",sPolyList->getFirst());
     632                    //Print("%p\n",sPolyList->getFirst()->getLPoly());
     633                    //Print("SPOLYLIST LENGTH: %d\n",sPolyList->getLength());
    630634                    //sPolyList->print();
    631635                   
    632636                    sPolyList->insertByLabel(tempRed);
    633                     sPolyList->print();
     637                    //sPolyList->print();
    634638                    //Print("SPOLYLIST LENGTH: %d\n",sPolyList->getLength());
    635639                    //Print("OH JE\n");
     
    639643                    reductionsToZero++;
    640644                    //Print("RULE ADDED\n");
    641         Print("wieder hier2\n");
    642                     rules->insert(tempRed->getIndex(),tempRed->getTerm());
    643                     pWrite(rules->getFirst()->getRuleTerm());
    644                     Print("DELETE TEMPRED\n");
     645                    //rules->insert(tempRed->getIndex(),tempRed->getTerm());
     646                    //pWrite(rules->getFirst()->getRuleTerm());
     647                    //Print("DELETE TEMPRED\n");
    645648                    delete tempRed;
    646649                }
     
    684687            if(NULL != l->getPoly()) {
    685688                pNorm(l->getPoly());
    686                 Print("----------------------------------ADDED TO GPREV IN TOPREDUCTION:-------------------------------------- ");
    687                 pWrite(l->getPoly());
    688                 pWrite(l->getTerm());
    689                 Print("INDEX: %d\n\n\n", l->getIndex());
     689                //Print("----------------------------------ADDED TO GPREV IN TOPREDUCTION:-------------------------------------- ");
     690                //pWrite(l->getPoly());
     691                //pWrite(l->getTerm());
     692                //Print("INDEX: %d\n\n\n", l->getIndex());
    690693                //sleep(20);
    691694                gPrev->insert(l->getLPoly());
     
    797800    // tag the first element of index i-1 for criterion 1
    798801    LTagList* lTag  =   new LTagList();
    799     Print("LTAG BEGINNING: %p\n",lTag);
     802    //Print("LTAG BEGINNING: %p\n",lTag);
    800803   
    801804    // first element in rTag is first element of rules which is NULL RNode,
    802805    // this must be done due to possible later improvements
    803806    RList* rules    =   new RList();
    804     Print("RULES FIRST: %p\n",rules->getFirst());
    805     Print("RULES FIRST DATA: %p\n",rules->getFirst()->getRule());
     807    //Print("RULES FIRST: %p\n",rules->getFirst());
     808    //Print("RULES FIRST DATA: %p\n",rules->getFirst()->getRule());
    806809    RTagList* rTag  =   new RTagList(rules->getFirst());
    807810    i = 1;
     
    856859        //Print("LENGTH OF GPREV LIST: %d\n",gPrev->getLength());
    857860        //Print("%d\n",gbLength);
    858         Print("%d\n",gPrev->getLength()-gbLength-1);
     861        //Print("%d\n",gPrev->getLength()-gbLength-1);
    859862            for(j=0;j<=gPrev->getLength()-gbLength-1;j++) {
    860863                //Print("YES\n");
     
    871874            gbPrev          =   idAdd(gbPrev,gbAdd);
    872875            // interreduction stuff
    873             /*
     876           
    874877            if(i<IDELEMS(id)) {
    875878                ideal tempId    =   kInterRed(gbPrev);
     
    878881                delete gPrev;
    879882                //Print("RULES FIRST NOW1: %p\n",rules->getFirst());
     883                //Print("HIER\n");
    880884                delete rules;
     885                //Print("HIER AUCH\n");
    881886                //Print("%p\n",rules->getFirst());
    882887                gPrev    =   new LList(pOne,1,gbPrev->m[0]);
     
    893898                //Print("HIERLALA\n");
    894899            //pWrite(rules->getFirst()->getRuleTerm());
    895             Print("RULES FIRST NOW2: %p\n",rules->getFirst());
     900           // Print("RULES FIRST NOW2: %p\n",rules->getFirst());
    896901                for(k=2; k<IDELEMS(gbPrev); k++) {
    897902                    gPrev->insert(pOne,k+1,gbPrev->m[k]);
    898903                    for(l=0; l<k; l++) {
    899                         pWrite(gbPrev->m[k]);
    900                         pWrite(gbPrev->m[l]);
     904                        //pWrite(gbPrev->m[k]);
     905                        //pWrite(gbPrev->m[l]);
    901906                        pLcm(pHead(gbPrev->m[k]),pHead(gbPrev->m[l]),tempPoly);
    902907                        pSetCoeff(tempPoly,nOne);
     
    905910                }
    906911            }
    907            */
     912           
    908913            gbLength    =   gPrev->getLength();
    909914
    910915        }
    911         gPrev->print();
     916        //gPrev->print();
    912917        //int anzahl  =   1;
    913918        //while(NULL != temp) {
  • kernel/f5lists.cc

    rcad507 r55a828  
    6060LNode::~LNode() {
    6161    //delete next;
    62     Print("DELETE LNODE\n");
     62    //Print("DELETE LNODE\n");
    6363    delete data;   
    6464}
     
    6666void LNode::deleteAll() {
    6767    while(NULL != next) {
    68         Print("%p\n",next);
    69         pWrite(next->data->getPoly());
     68        //Print("%p\n",next);
     69        //pWrite(next->data->getPoly());
    7070        next->deleteAll();
    7171    }
     
    265265        first   =   first->getNext();
    266266        delete  temp;
    267         Print("%p\n",first);
     267        //Print("%p\n",first);
    268268    }
    269269}
     
    736736*/
    737737RNode::RNode() {
    738     Print("HIER RNODE CONSTRUCTOR\n");
     738    //Print("HIER RNODE CONSTRUCTOR\n");
    739739    data    =   NULL;
    740740    next    =   NULL;
     
    747747
    748748RNode::~RNode() {
    749     Print("DELETE RULE\n");
     749    //Print("DELETE RULE\n");
    750750    delete  data;
    751751}
     
    758758
    759759RNode* RNode::insert(int i, poly t) {
    760     Print("IN INSERT: ");
    761     pWrite(t);
     760    //Print("IN INSERT: ");
     761    //pWrite(t);
    762762    Rule*   r           =   new Rule(i,t);
    763     Print("ADDRESS OF RULE: %p\n",r);
     763    //Print("ADDRESS OF RULE: %p\n",r);
    764764    RNode* newElement   =   new RNode(r);
    765     Print("ADDRESS OF RNODE: %p\n",newElement);
    766     Print("ADDRESS OF RNODE DATA: %p\n",newElement->getRule());
     765    //Print("ADDRESS OF RNODE: %p\n",newElement);
     766    //Print("ADDRESS OF RNODE DATA: %p\n",newElement->getRule());
    767767    newElement->next    =   this;
    768768    return newElement;
     
    800800RList::~RList() {
    801801    RNode* temp;
    802     Print("%p\n",first);
     802    //Print("%p\n",first);
    803803    while(first->getRule()) {
    804804        temp    =   first;
    805805        first   =   first->getNext();
    806         Print("1 %p\n",first);
    807         if(first) {
    808             Print("1' %p\n",first->getRule());
    809             Print("2 %p\n",first->getNext());
     806        //Print("1 %p\n",first);
     807        //if(first) {
     808            //Print("1' %p\n",first->getRule());
     809            //Print("2 %p\n",first->getNext());
    810810            //Print("3 %p\n",first->getNext()->getRule());
    811811            //Print("3 %p\n",first->getNext()->getRuleTerm());
    812         }
     812        //}
    813813        delete  temp;
    814814    }
    815     Print("FERTIG\n");
     815    //Print("FERTIG\n");
    816816}
    817817
Note: See TracChangeset for help on using the changeset viewer.