Changeset 55a828 in git for kernel/f5gb.cc


Ignore:
Timestamp:
Mar 6, 2009, 10:30:21 PM (15 years ago)
Author:
Christian Eder
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
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
File:
1 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) {
Note: See TracChangeset for help on using the changeset viewer.