Changeset 7d2b89 in git


Ignore:
Timestamp:
Jun 9, 2016, 1:41:17 PM (8 years ago)
Author:
Adi Popescu <adi_popescum@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
72fd164d224c701f45aaf30d20586e1bb5edc133
Parents:
459ec942488fc3417e5bcc3965cb5119e5add894
Message:
SBA looks good
Location:
kernel/GBEngine
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/GBEngine/kspoly.cc

    r459ec94 r7d2b89  
    2323#endif
    2424
    25 #define ADIDEBUG 1
     25#define ADIDEBUG 0
    2626
    2727#ifdef KDEBUG
     
    289289          pDelete(&PR->sig);
    290290          PR->sig = origsig;
     291          strat->blockred++;
    291292          return 3;
    292293        }
  • kernel/GBEngine/kstd1.cc

    r459ec94 r7d2b89  
    25912591    #endif
    25922592    //This is how we set the SBA algorithm;
    2593     int totalsbaruns =-1,loops = 0;
    2594     while(sigdrop && (loops < totalsbaruns || totalsbaruns == -1))
     2593    int totalsbaruns = 1,blockedreductions = 10,blockred = 0,loops = 0;
     2594    while(sigdrop && (loops < totalsbaruns || totalsbaruns == -1)
     2595                  && (blockred <= blockedreductions))
    25952596    {
    25962597      loops++;
     
    26022603      strat->sbaEnterS = sbaEnterS;
    26032604      strat->sigdrop = sigdrop;
     2605      #if 0
     2606      strat->blockred = blockred;
     2607      #else
     2608      strat->blockred = 0;
     2609      #endif
     2610      strat->blockredmax = blockedreductions;
    26042611      //printf("\nsbaEnterS beginning = %i\n",strat->sbaEnterS);
    26052612      //printf("\nsigdrop beginning = %i\n",strat->sigdrop);
     
    27262733      sigdrop = strat->sigdrop;
    27272734      sbaEnterS = strat->sbaEnterS;
     2735      blockred = strat->blockred;
    27282736      #if ADIDEBUG
    27292737      printf("\nsbaEnterS = %i\n",sbaEnterS);
     
    27332741    }
    27342742    // Go to std
    2735     if(sigdrop)
     2743    if(sigdrop || blockred > blockedreductions)
    27362744    {
    27372745      #if ADIDEBUG
    27382746      printf("\nWent to std\n");
    27392747      //idPrint(r);
    2740       getchar();
     2748      //getchar();
    27412749      #endif
    27422750      r = kStd(r, Q, h, w, hilb, syzComp, newIdeal, vw);
  • kernel/GBEngine/kstd2.cc

    r459ec94 r7d2b89  
    925925      strat->sigdrop = FALSE;
    926926    }
     927    #if 0
    927928    //If the reducer has the same lt (+ or -) as the other one, reduce it via redRing
     929    //In some cases this proves to be very bad
    928930    if(rField_is_Ring(currRing) && h->p != NULL && pLmCmp(h->p,strat->T[ii].p)==0)
    929931    {
     
    949951      }
    950952    }
     953    #endif
     954    if(strat->sigdrop)
     955      return 1;
    951956#if SBA_PRINT_REDUCTION_STEPS
    952957    if (sigSafe != 3)
     
    22532258    printf("\n   list   L\n");
    22542259    int iii;
    2255     #if 0
     2260    #if 1
    22562261    for(iii = 0; iii<= strat->Ll; iii++)
    22572262    {
     
    24362441    printf("\nAfter reduce (redresult=%i): \n",red_result);pWrite(strat->P.p);pWrite(strat->P.sig);
    24372442    #endif
    2438     #ifdef HAVE_RINGS
    24392443    //sigdrop case
    24402444    if(rField_is_Ring(currRing) && strat->sigdrop)
     
    24652469      }
    24662470    }
    2467     #endif
     2471    if(strat->blockred > strat->blockredmax)
     2472    {
     2473      #if ADIDEBUG
     2474      printf("\nToo many blocked reductions\n");
     2475      #endif
     2476      strat->sigdrop = TRUE;
     2477      break;
     2478    }
    24682479   
    24692480    if (errorreported)  break;
     
    26522663      */
    26532664      if (rField_is_Ring(currRing))
    2654         superenterpairsSig(strat->P.p,strat->P.sig,strat->P.sig_sba_max,strat->sl+1,strat->sl,strat->P.ecart,pos,strat, strat->tl);
    26552665        superenterpairsSig(strat->P.p,strat->P.sig,strat->sl+1,strat->sl,strat->P.ecart,pos,strat, strat->tl);
    26562666      else
     
    26592669        printf("\nThis element is added to S\n");
    26602670        p_Write(strat->P.p, strat->tailRing);p_Write(strat->P.p1, strat->tailRing);p_Write(strat->P.p2, strat->tailRing);pWrite(strat->P.sig);
    2661         //getchar();
     2671        getchar();
    26622672        #endif
    26632673      // posInS only depends on the leading term
     
    33823392      if (TEST_OPT_PROT) PrintS("s");
    33833393      int pos;
    3384       #if 0
     3394      #if 1
    33853395      if(!rField_is_Ring(currRing))
    33863396        pos = posInS(strat,strat->sl,strat->P.p,strat->P.ecart);
  • kernel/GBEngine/kutil.cc

    r459ec94 r7d2b89  
    47164716{
    47174717  if (length<0) return 0;
    4718   if(pNext(p) == NULL) return 0;
    47194718  polyset set=strat->S;
    4720   int o = p_Deg(p,currRing);
    4721   int op = p_Deg(set[length],currRing);
    4722 
    4723   if ((op < o)
    4724   || ((op == o) && (pLtCmp(set[length],p) == -1)))
    4725     return length+1;
    4726   int i;
    4727   int an = 0;
    4728   for(i=0;i<=length;i++)
    4729     if(set[i] != NULL && pNext(set[i]) == NULL)
    4730       an++;
    4731   int en= length;
    4732   loop
    4733   {
    4734     if (an >= en-1)
    4735     {
    4736       op = p_Deg(set[an],currRing);
     4719  if(pNext(p) == NULL)
     4720  {
     4721    int mon = 0;
     4722    for(int i = 0;i<=length;i++)
     4723    {
     4724      if(set[i] != NULL && pNext(set[i]) == NULL)
     4725        mon++;
     4726    }
     4727    int o = p_Deg(p,currRing);
     4728    int op = p_Deg(set[mon],currRing);
     4729   
     4730    if ((op < o)
     4731    || ((op == o) && (pLtCmp(set[mon],p) == -1)))
     4732      return length+1;
     4733    int i;
     4734    int an = 0;
     4735    int en= mon;
     4736    loop
     4737    {
     4738      if (an >= en-1)
     4739      {
     4740        op = p_Deg(set[an],currRing);
     4741        if ((op < o)
     4742        || ((op == o) && (pLtCmp(set[an],p) == -1)))
     4743          return en;
     4744        return an;
     4745      }
     4746      i=(an+en) / 2;
     4747      op = p_Deg(set[i],currRing);
    47374748      if ((op < o)
    4738       || ((op == o) && (pLtCmp(set[an],p) == -1)))
    4739         return en;
    4740       return an;
    4741     }
    4742     i=(an+en) / 2;
    4743     op = p_Deg(set[i],currRing);
     4749      || ((op == o) && (pLtCmp(set[i],p) == -1)))
     4750        an=i;
     4751      else
     4752        en=i;
     4753    }
     4754  }
     4755  if(pNext(p) != NULL)
     4756  {
     4757    int o = p_Deg(p,currRing);
     4758    int op = p_Deg(set[length],currRing);
     4759   
    47444760    if ((op < o)
    4745     || ((op == o) && (pLtCmp(set[i],p) == -1)))
    4746       an=i;
    4747     else
    4748       en=i;
     4761    || ((op == o) && (pLtCmp(set[length],p) == -1)))
     4762      return length+1;
     4763    int i;
     4764    int an = 0;
     4765    for(i=0;i<=length;i++)
     4766      if(set[i] != NULL && pNext(set[i]) == NULL)
     4767        an++;
     4768    int en= length;
     4769    loop
     4770    {
     4771      if (an >= en-1)
     4772      {
     4773        op = p_Deg(set[an],currRing);
     4774        if ((op < o)
     4775        || ((op == o) && (pLtCmp(set[an],p) == -1)))
     4776          return en;
     4777        return an;
     4778      }
     4779      i=(an+en) / 2;
     4780      op = p_Deg(set[i],currRing);
     4781      if ((op < o)
     4782      || ((op == o) && (pLtCmp(set[i],p) == -1)))
     4783        an=i;
     4784      else
     4785        en=i;
     4786    }
    47494787  }
    47504788}
     
    66476685{
    66486686  //printf("Faugere Rewritten Criterion\n");
     6687  if(rField_is_Ring(currRing))
     6688    return FALSE;
    66496689//#if 1
    66506690#ifdef DEBUGF5
  • kernel/GBEngine/kutil.h

    r459ec94 r7d2b89  
    361361  int sbaEnterS; // sba over Z strategy: if sigdrop element has _*gen(sbaEnterS+1), then
    362362                 // add directly sbaEnterS elements into S
     363  int blockred;  // counter for blocked reductions in redSig
     364  int blockredmax;
    363365  #endif
    364366  #ifdef HAVE_SHIFTBBA
Note: See TracChangeset for help on using the changeset viewer.