Changeset 70c15e in git for kernel/f5gb.cc


Ignore:
Timestamp:
Feb 22, 2009, 7:58:36 PM (15 years ago)
Author:
Christian Eder
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
6d5e7ee005c7a5c9c97446227e1b19c6ed68fc9a
Parents:
d8be851dd8f2cf657611debe1b34b05aedcdf65d
Message:
problem in cyclic_n(4) solved


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

Legend:

Unmodified
Added
Removed
  • kernel/f5gb.cc

    rd8be851 r70c15e  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: f5gb.cc,v 1.31 2009-02-19 14:52:34 ederc Exp $ */
     4/* $Id: f5gb.cc,v 1.32 2009-02-22 18:58:36 ederc Exp $ */
    55/*
    66* ABSTRACT: f5gb interface
     
    7575    gPrev->insert(ONE,i,f_i);
    7676    // tag the first element in gPrev of the current index for findReductor()
    77     lTag->setFirstCurrentIdx(gPrev->getFirst());
     77    lTag->setFirstCurrentIdx(gPrev->getLast());
    7878    //Print("1st gPrev: ");
    7979    //pWrite(gPrev->getFirst()->getPoly());
     
    111111        // reduction process of new S-polynomials and also adds new critical pairs to critPairs
    112112        reduction(sPolyList, critPairs, gPrev, rules, lTag, rTag, gbPrev);
     113       
     114        // DEBUG STUFF FOR GPREV
     115        temp    =   gPrev->getFirst();
     116        Print("\n\n");
     117        while(NULL != temp) {
     118            pWrite(temp->getPoly());
     119            temp    =   temp->getNext();
     120        }
     121        //sleep(10);
     122   
    113123    }
    114124    Print("REDUCTION DONE\n");
     
    255265        RNode* tempR    =   rules->getFirst();
    256266        while(NULL != tempR->getRule()) {
     267            Print("ADDRESS OF RULE: %p\n",tempR->getRule());
    257268            pWrite(tempR->getRuleTerm());
     269            Print("ADDRESS OF TERM: %p\n",tempR->getRuleTerm());
    258270            Print("%d\n\n",tempR->getRuleIndex());
    259271            tempR   =   tempR->getNext();
     
    273285        }
    274286        else {
     287        Print("DEBUG\n");
     288        Print("L INDEX: %d\n",l->getIndex());
    275289            testNode    =   rTag->get(l->getIndex());
     290            Print("TESTNODE ADDRESS: %p\n",testNode);
    276291        }
    277292    }
     
    281296    //Print("%p\n",testNode->getRule());
    282297    // NOTE: testNode is possibly NULL as rTag->get() returns NULL for elements of index <=1!
     298    if(NULL != testNode && NULL != testNode->getRule()) {   
     299        pWrite(testNode->getRuleTerm());
     300    }
     301    if(NULL != testNode) {
     302        if(testNode->getRule() == l->getRule()) {
     303            Print("%p\n%p\n",testNode->getRule(),l->getRule());
     304            Print("EQUAL\n");
     305        }
     306        else {
     307            Print("NOT EQUAL\n");
     308        }
     309    }
    283310    while(NULL != testNode && NULL != testNode->getRule() && testNode->getRule() != l->getRule()
    284311          && l->getIndex() == testNode->getRuleIndex()) {
    285312        pWrite(testNode->getRuleTerm());
    286                 if(pLmDivisibleBy(ppMult_qq(t,l->getTerm()),testNode->getRuleTerm())) {
     313                if(pLmDivisibleBy(testNode->getRuleTerm(),u1)) {
    287314            Print("Criterion 2 NOT passed!\n");
     315            pDelete(&u1);
    288316            return true;
    289317        }
    290318                testNode    =   testNode->getNext();
    291319    }
     320    pDelete(&u1);
    292321    return false;
    293322}
     
    321350        while(NULL != testNode->getRule() && testNode->getRule() != testedRule) {
    322351        pWrite(testNode->getRuleTerm());
    323         if(pLmDivisibleBy(testNode->getRuleTerm(),ppMult_qq(t,l->getTerm()))) {
     352        if(pLmDivisibleBy(testNode->getRuleTerm(),u1)) {
    324353            Print("Criterion 2 NOT passed!\n");
     354            pDelete(&u1);
    325355            return true;
    326356        }
    327357                testNode    =   testNode->getNext();
    328358    }
     359    pDelete(&u1);
    329360    return false;
    330361}
     
    406437                        Print("RULE ADDED: \n");
    407438                        pWrite(rules->getFirst()->getRuleTerm());
     439                        Print("%d\n",rules->getFirst()->getRuleIndex());
    408440                        Print("%p\n",sPolyList->getFirst());
    409441                        sPolyList->insertSP(ppMult_qq(temp->getT1(),temp->getLp1Term()),temp->getLp1Index(),sp,rules->getFirst()->getRule());
     
    434466    while(sPolyList->getLength() > 0) {
    435467        Print("SPOLYLIST LENGTH: %d\n",sPolyList->getLength());
     468        if(sPolyList->getLength() > 1) {
     469        Print("%p\n",sPolyList->getFirst());
     470        Print("%p\n",sPolyList->getFirst()->getLPoly());
     471        Print("%p\n",sPolyList->getFirst()->getNext());
     472        Print("%p\n",sPolyList->getFirst()->getNext()->getLPoly());
     473        Print("%p\n",sPolyList->getFirst());
     474        }
    436475        sPolyList->print();
    437476        // temp is the first element in the sPolyList which should be reduced
     
    446485        Print("%p\n",temp->getPoly());
    447486        pWrite(temp->getPoly());
     487        idShow(gbPrev);
    448488        poly tempNF = kNF(gbPrev,currQuotient,temp->getPoly());
     489        pNorm(tempNF);
    449490        Print("LENGTH: %d\n",sPolyList->getLength());
    450491        pWrite(tempNF);
     
    457498            // is no label corruption during the reduction process
    458499            topReduction(temp,sPolyList,gPrev,rules,lTag,rTag);
    459         LNode* tempLoop = gPrev->getFirst();
    460                 while(NULL != tempLoop) {
    461                     pWrite(tempLoop->getPoly());
    462                     tempLoop = tempLoop->getNext();
    463                     }
     500       
    464501        }
    465502        if(NULL != temp->getPoly()) {
    466503            //CList* newCritPairs = new CList;
     504            Print("##################IN CRITPAIRS IN REDUCTION#####################\n");
    467505            criticalPair(gPrev,critPairs,lTag,rTag,rules);
    468506        }
    469507        else {
    470             delete temp;
     508            //delete temp;
     509            LNode* tempLoop = gPrev->getFirst();
     510            Print("AUSGABE IN REDUCTION:\n");       
     511            while(NULL != tempLoop) {
     512                pWrite(tempLoop->getPoly());
     513                tempLoop = tempLoop->getNext();
     514            }
     515            //sleep(10);
    471516        }
    472517    }
     
    487532        LNode* tempRed  =   new LNode();
    488533        tempRed  =   findReductor(l,gPrev,rules,lTag,rTag);
     534        Print("--------------------------------HIER DEBUG 2----------------------------------\n");
    489535        // if a reductor for l is found and saved in tempRed
    490536        if(NULL != tempRed) {
     
    493539            if(pLmCmp(tempRed->getTerm(),l->getTerm()) == 1) {
    494540                poly temp   =   pSub(tempRed->getPoly(),l->getPoly());
     541                Print("OH JE\n");
    495542                pWrite(temp);
    496543                if(NULL != temp) {
     544                    pNorm(temp);
    497545                    tempRed->setPoly(temp);
    498546                    // for debugging
     
    500548                    Print("RULE ADDED\n");
    501549                    rules->insert(tempRed->getIndex(),tempRed->getTerm());
    502                    
     550                     
    503551                    tempRed->getLPoly()->setRule(rules->getFirst()->getRule());
     552                    Print("%p\n",sPolyList->getFirst());
     553                    Print("%p\n",sPolyList->getFirst()->getLPoly());
     554                    Print("SPOLYLIST LENGTH: %d\n",sPolyList->getLength());
    504555                    sPolyList->insertByLabel(tempRed);
    505556                }
     
    508559                    reductionsToZero++;
    509560                    Print("RULE ADDED\n");
     561        Print("wieder hier2\n");
    510562                    rules->insert(tempRed->getIndex(),tempRed->getTerm());
    511563                    delete tempRed;
     
    519571                pWrite(temp);
    520572                if(NULL != temp) {
     573                    pNorm(temp);
    521574                    l->setPoly(temp);
    522575                    l->setGPrevRedCheck(NULL);
    523576                }
    524577                else {
     578                    Print("ZERO REDUCTION!\n");
     579                    reductionsToZero++;
    525580                    pDelete(&temp);
    526581                    l->setPoly(NULL);
     582                    pWrite(gPrev->getLast()->getPoly());
     583                    break;
    527584                }
    528585            }   
     
    533590                pWrite(l->getPoly());
    534591                pWrite(l->getTerm());
     592                Print("INDEX: %d\n", l->getIndex());
     593                //sleep(10);
    535594                gPrev->insert(l->getLPoly());
    536595                Print("GPREV: \n");
    537596                LNode* tempLoop = gPrev->getFirst();
    538597                while(NULL != tempLoop) {
     598                    Print("HERE\n");
    539599                    pWrite(tempLoop->getPoly());
    540600                    tempLoop = tempLoop->getNext();
     
    554614LNode* findReductor(LNode* l, LList* gPrev, RList* rules, LTagList* lTag,RTagList* rTag) {
    555615    // allociation of memory for the possible reductor
     616    Print("IN FIND REDUCTOR\n");
    556617    poly u      =   pOne();
    557618    poly red    =   pOne();
     
    591652                    // passing criterion1 ?
    592653                    if(!criterion1(gPrev,u,temp,lTag)) {
     654                            Print("HIER DEBUG\n");
    593655                            l->setGPrevRedCheck(temp);
    594656                            LNode* redNode  =   new LNode(u,temp->getIndex(),red,NULL,NULL);
     
    663725        pWrite(gPrevTag->getPoly());
    664726        gPrev   =   F5inc(i, id->m[i-1], gPrev, gbPrev, ONE, lTag, rules, rTag);
    665         // comuting new groebner basis gbPrev
     727        // DEBUGGING STUFF
     728        LNode* temp    =   gPrev->getFirst();
     729    while(NULL != temp) {
     730        pWrite(temp->getPoly());
     731        temp    =   temp->getNext();
     732    }// comuting new groebner basis gbPrev
    666733        if(gPrev->getLength() > gbLength) {
    667734            ideal gbAdd =   idInit(gPrev->getLength()-gbLength,1);
     
    674741        for(j=0;j<=gPrev->getLength()-gbLength-1;j++) {
    675742            Print("YES\n");
     743            temp        =   temp->getNext();
    676744            gbAdd->m[j] =   temp->getPoly();
    677745            pWrite(temp->getPoly());
    678             temp        =   temp->getNext();
    679746        }
    680747        gbLength    =   gPrev->getLength();
     
    684751        idShow(gbPrev);
    685752        Print("===================================================\n");
    686 
    687753        Print("JA\n");
    688754    }
    689755    Print("\n\nNumber of zero-reductions:  %d\n",reductionsToZero);
     756    LNode* temp    =   gPrev->getFirst();
     757    while(NULL != temp) {
     758        pWrite(temp->getPoly());
     759        temp    =   temp->getNext();
     760    }
    690761    return(gbPrev);
    691762
Note: See TracChangeset for help on using the changeset viewer.