Changeset d4cec61 in git


Ignore:
Timestamp:
Aug 30, 2009, 5:26:00 PM (14 years ago)
Author:
Christian Eder
Branches:
(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
Children:
f414c0965b52eb8faa2ff8c9afef799657e50a29
Parents:
0cd54028aee03d965d1c6ff02be782f1b55ad9e1
Message:
implemented test for termination ideas


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

Legend:

Unmodified
Added
Removed
  • kernel/f5gb.cc

    r0cd5402 rd4cec61  
    2727#include "f5lists.h"
    2828#include "timer.h"
     29int notInG              =   0;
     30int numberOfRules       =   0;
    2931int reductionsToZero    =   0;
    3032int reductionTime       =   0;
     
    110112==================================================
    111113*/
    112 LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag) {
     114LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag, int termination) {
    113115    //Print("in f5inc\n");           
    114116    //pWrite(rules->getFirst()->getRuleTerm());
     
    166168        //sPolyList->print();
    167169        //reduction(sPolyList, critPairs, gPrev, rules, lTag, rTag, gbPrev);
    168         newReduction(sPolyList, critPairs, gPrev, rules, lTag, rTag, gbPrev);
     170        newReduction(sPolyList, critPairs, gPrev, rules, lTag, rTag, gbPrev, termination);
    169171        //timer3      =  getTimer();
    170172        //reductionTime = reductionTime + timer3;
     
    563565                            //rules->insertOrdered(rNew);
    564566                            rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term()));
     567                            numberOfRules++;
    565568                            //Print("RULE ADDED: \n");
    566569                            //pWrite(rules->getFirst()->getRuleTerm());
     
    575578                            //rules->insertOrdered(rNew);
    576579                            rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term()));
     580                            numberOfRules++;
    577581                            //Print("RULE ADDED: \n");
    578582                            //pWrite(rules->getFirst()->getRuleTerm()); 
     
    606610                        //Print("IN SPOLS 3\n");
    607611                        rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term()));
     612                        numberOfRules++;
    608613                        //Print("RULE ADDED: \n");
    609614                        //pWrite(rules->getFirst()->getRuleTerm());
     
    625630                        //rules->insertOrdered(rNew);
    626631                        rules->insert(temp->getLp1Index(),ppMult_qq(temp->getT1(),temp->getLp1Term()));
     632                        numberOfRules++;
    627633                        //Print("RULE ADDED: \n");
    628634                        //pWrite(rules->getFirst()->getRuleTerm());
     
    701707*/
    702708void newReduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, RList* rules, LTagList* lTag, RTagList* rTag,
    703                  ideal gbPrev) {
     709                 ideal gbPrev, int termination) {
    704710    //Print("##########################################In REDUCTION!########################################\n");
    705711    // check if sPolyList has any elements
     
    728734            // with label index = current label index: this is done such that there
    729735            // is no label corruption during the reduction process
    730             findReducers(temp,sPolyList,gbPrev,gPrev,critPairs,rules,lTag,rTag);
     736            findReducers(temp,sPolyList,gbPrev,gPrev,critPairs,rules,lTag,rTag, termination);
    731737        //}
    732738        //else {
     
    762768 * ================================================================================
    763769*/
    764 void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag) {
     770void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag, int termination) {
    765771    int canonicalize    =   0;
    766772    //int timerRed        =   0;
     773    bool addToG         =   1;
    767774    number sign         =   nInit(-1);
    768775    LList* good         =   new LList();
     
    809816                                    kBucket_Minus_m_Mult_p(bucket,u,tempRedPoly,&lTempRedPoly);
    810817                                    canonicalize++;
     818                                    //Print("Reduction\n");
    811819                                    if(!(canonicalize % 50)) {
    812820                                        kBucketCanonicalize(bucket);
     
    826834                    }
    827835                    else {
     836                        if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 0) {
     837                         Print("NOT ALLOWED REDUCER:\n");
     838                                      pWrite(u);
     839                                      pWrite(tempRed->getTerm());
     840                                      pWrite(tempRed->getPoly());
     841                                      addToG  = 0;
     842                        }
    828843                        if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) != 0) {
    829844                            // passing criterion2 ?
     
    834849                                        if(NULL == redPoly) {
    835850                                            bad->insert(tempRed->getLPoly());
     851                                            addToG  = 1;
    836852                                            //poly tempRedPoly    =   tempRed->getPoly();
    837853                                            //break;
     
    849865                                        kBucket_Minus_m_Mult_p(bucket,u,tempRedPoly,&lTempRedPoly);
    850866                                        canonicalize++;
     867                                        //Print("REDUCTION\n");
     868                                        addToG  = 1;
    851869                                        if(!(canonicalize % 50)) {
    852870                                            kBucketCanonicalize(bucket);
     
    867885                                }   
    868886                            }
     887                            else {
     888                              Print("CRIT 1  ");
     889                                   
     890                                      if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 1 ) {
     891                                      Print("NOT ALLOWED REDUCER:\n");
     892                                      pWrite(u);
     893                                      pWrite(tempRed->getTerm());
     894                                      pWrite(tempRed->getPoly());
     895                                      addToG  = 0;
     896                                    }
     897                            }
     898                        }
     899                        else {
     900                          Print("CRIT 2  ");
     901                                    if(pLmCmp(ppMult_qq(u,tempRed->getTerm()),l->getTerm()) == 1) {
     902                                      Print("NOT ALLOWED REDUCER:\n");
     903                                      pWrite(u);
     904                                      pWrite(tempRed->getTerm());
     905                                      pWrite(tempRed->getPoly());
     906                                      addToG  = 0;
     907                                    }
    869908                        }
    870909                    }
     
    893932        }
    894933        else {
    895             //Print("\nELEMENT ADDED TO GPREV: ");
    896             //pWrite(redPoly);
     934            Print("\nELEMENT ADDED TO GPREV: ");
    897935            pNorm(redPoly);
     936            pWrite(pHead(redPoly));
     937            pWrite(l->getTerm());
    898938            //Print("%d\n",canonicalize);
    899939            l->setPoly(redPoly);
    900940            gPrev->insert(l->getLPoly());
    901             criticalPair(gPrev,critPairs,lTag,rTag,rules);
     941            //Print("%d\n\n",termination);
     942            if(termination == 1) {
     943            if(addToG) {
     944              //Print("----------------HERE?-----------------\n");
     945              criticalPair(gPrev,critPairs,lTag,rTag,rules);
     946            }
     947            else {
     948              notInG++;
     949              Print("\nNONONO");
     950              pWrite(pHead(l->getPoly()));
     951              pWrite(l->getTerm());
     952            }
     953            }
     954            else {
     955              criticalPair(gPrev,critPairs,lTag,rTag,rules);
     956            }
    902957        }
    903958   
     
    925980                            //Print("HIERHIERHIERHIERHIERHIER\n");
    926981                            rules->insert(tempBad->getIndex(),ppMult_qq(u,tempBad->getTerm()));
     982                            numberOfRules++;
    927983                            //gPrev->print();
    928984                            //pWrite(l->getPoly());
     
    12131269==========================================================================
    12141270*/
    1215 ideal F5main(ideal id, ring r, int opt) {
     1271ideal F5main(ideal id, ring r, int opt, int termination) {
    12161272  switch(opt) { 
    12171273    case 0:
     
    13011357        //Print("%p\n",gPrevTag);   
    13021358        //pWrite(gPrevTag->getPoly());
    1303         gPrev   =   F5inc(i, id->m[i-1], gPrev, gbPrev, ONE, lTag, rules, rTag);
     1359        gPrev   =   F5inc(i, id->m[i-1], gPrev, gbPrev, ONE, lTag, rules, rTag, termination);
    13041360        //Print("%d\n",gPrev->count(gPrevTag->getNext()));
    13051361        //Print("%d\n",gPrev->getLength());
     
    14151471                gbPrev          =   idAdd(gbPrev,gbAdd);
    14161472            }
    1417             //if(i<IDELEMS(id)) {
     1473            if(i<IDELEMS(id)) {
    14181474                ideal tempId    =   kInterRed(gbPrev);
    14191475                gbPrev          =   tempId;
     
    14321488                    */
    14331489                }
    1434             //}
     1490            }
    14351491            gbLength    =   gPrev->getLength();
    14361492        } 
     
    14391495
    14401496    }
     1497    timer   =   getTimer();
    14411498    //Print("\n\nADDING TIME IN REDUCTION: %d\n\n",reductionTime);
    1442     Print("\n\nNumber of zero-reductions:  %d\n",reductionsToZero);
    1443     timer   =   getTimer();
    1444     Print("Highest Degree during computations: %d\n",highestDegree);
    1445     Print("Time for computations: %d/1000 seconds\n",timer);
    1446     Print("Number of elements in gb: %d\n",IDELEMS(gbPrev));
     1499    Print("\n\nNumber of zero-reductions:           %d\n",reductionsToZero);
     1500    Print("Number of rules:                     %d\n",numberOfRules);
     1501    Print("Elements not added to G:             %d\n",notInG);
     1502    Print("Highest Degree during computations:  %d\n",highestDegree);
     1503    Print("Time for computations:               %d/1000 seconds\n",timer);
     1504    Print("Number of elements in gb:            %d\n",IDELEMS(gbPrev));
    14471505    //LNode* temp    =   gPrev->getFirst();
    14481506    //while(NULL != temp) {
     
    14541512    delete rTag;
    14551513    delete gPrev;
     1514    notInG              =   0;
     1515    numberOfRules       =   0;
    14561516    reductionsToZero    =   0;
    14571517    highestDegree       =   0;
  • kernel/f5gb.h

    r0cd5402 rd4cec61  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: f5gb.h,v 1.42 2009-07-16 07:47:51 ederc Exp $ */
     4/* $Id: f5gb.h,v 1.43 2009-08-30 15:26:00 ederc Exp $ */
    55/*
    66* ABSTRACT: f5gb interface
     
    4343==================================================
    4444*/
    45 LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag);
     45LList* F5inc(int i, poly f_i, LList* gPrev, ideal gbPrev, poly ONE, LTagList* lTag, RList* rules, RTagList* rTag,int termination);
    4646
    4747/*
     
    9595========================================================================
    9696*/
    97 inline void newReduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, RList* rules, LTagList* lTag, RTagList* rTag, ideal gbPrev);
     97inline void newReduction(LList* sPolyList, CListOld* critPairs, LList* gPrev, RList* rules, LTagList* lTag, RTagList* rTag, ideal gbPrev, int termination);
    9898
    9999/*!
     
    109109 * ================================================================================
    110110 */
    111 void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag);
     111void findReducers(LNode* l, LList* sPolyList, ideal gbPrev, LList* gPrev, CListOld* critPairs, RList* rules, LTagList* lTag, RTagList* rTag, int termination);
    112112
    113113/*
     
    140140======================================
    141141*/
    142 ideal F5main(ideal i, ring r, int opt);
     142ideal F5main(ideal i, ring r, int opt, int termination);
    143143
    144144#endif
Note: See TracChangeset for help on using the changeset viewer.