Changeset 8a14df in git


Ignore:
Timestamp:
Oct 7, 2015, 2:44:00 PM (9 years ago)
Author:
Adi Popescu <adi_popescum@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
Children:
5d9204728b9fa909f073b21e83c172b0b49dc2e2
Parents:
b4fbb84ad318878fabdaa4dbc73d6d1fcea0a9e8
Message:
add: enterT_strong, used ine enteronestrongpair
Location:
kernel/GBEngine
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/GBEngine/kstd1.cc

    rb4fbb8 r8a14df  
    17021702      #endif
    17031703      int inittl = strat->tl;
    1704       printf("\nReduce!!\n");
    17051704      red_result = strat->red(&strat->P,strat);
    1706       printf("\nEnded :)\n");
    17071705      strat->tl = inittl;
    17081706      #if ADIDEBUG
  • kernel/GBEngine/kutil.cc

    rb4fbb8 r8a14df  
    17191719  else
    17201720  {
    1721     enterT(h, strat,strat->tl+1);
     1721    enterT_strong(h, strat,strat->tl+1);
    17221722  }
    17231723  //#if 1
     
    80238023  pWrite(p.p);
    80248024  #endif
    8025   printf("\nenterT: neue hingefÃŒgt: lÀnge = %i, ecart = %i\n",p.length,p.ecart);
     8025  //printf("\nenterT: neue hingefÃŒgt: lÀnge = %i, ecart = %i\n",p.length,p.ecart);
    80268026
    80278027  if (strat->tailRing != currRing && pNext(p.p) != NULL)
     
    80608060  //getchar();*/
    80618061#endif
     8062  kTest_T(&(strat->T[atT]));
     8063}
     8064
     8065/*2
     8066* puts p to the set T at position atT
     8067*/
     8068void enterT_strong(LObject &p, kStrategy strat, int atT)
     8069{
     8070  int i;
     8071
     8072  pp_Test(p.p, currRing, p.tailRing);
     8073  assume(strat->tailRing == p.tailRing);
     8074  // redMoraNF complains about this -- but, we don't really
     8075  // neeed this so far
     8076  assume(p.pLength == 0 || pLength(p.p) == p.pLength || rIsSyzIndexRing(currRing)); // modulo syzring
     8077  assume(p.FDeg == p.pFDeg());
     8078  assume(!p.is_normalized || nIsOne(pGetCoeff(p.p)));
     8079
     8080#ifdef KDEBUG
     8081  // do not put an LObject twice into T:
     8082  for(i=strat->tl;i>=0;i--)
     8083  {
     8084    if (p.p==strat->T[i].p)
     8085    {
     8086      printf("already in T at pos %d of %d, atT=%d\n",i,strat->tl,atT);
     8087      return;
     8088    }
     8089  }
     8090#endif
     8091
     8092#ifdef HAVE_TAIL_RING
     8093  if (currRing!=strat->tailRing)
     8094  {
     8095    p.t_p=p.GetLmTailRing();
     8096  }
     8097#endif
     8098  strat->newt = TRUE;
     8099  if (atT < 0)
     8100    atT = strat->posInT(strat->T, strat->tl, p);
     8101  if (strat->tl == strat->tmax-1)
     8102    enlargeT(strat->T,strat->R,strat->sevT,strat->tmax,setmaxTinc);
     8103  if (atT <= strat->tl)
     8104  {
     8105#ifdef ENTER_USE_MEMMOVE
     8106    memmove(&(strat->T[atT+1]), &(strat->T[atT]),
     8107            (strat->tl-atT+1)*sizeof(TObject));
     8108    memmove(&(strat->sevT[atT+1]), &(strat->sevT[atT]),
     8109            (strat->tl-atT+1)*sizeof(unsigned long));
     8110#endif
     8111    for (i=strat->tl+1; i>=atT+1; i--)
     8112    {
     8113#ifndef ENTER_USE_MEMMOVE
     8114      strat->T[i] = strat->T[i-1];
     8115      strat->sevT[i] = strat->sevT[i-1];
     8116#endif
     8117      strat->R[strat->T[i].i_r] = &(strat->T[i]);
     8118    }
     8119  }
     8120
     8121  if ((strat->tailBin != NULL) && (pNext(p.p) != NULL))
     8122  {
     8123    pNext(p.p)=p_ShallowCopyDelete(pNext(p.p),
     8124                                   (strat->tailRing != NULL ?
     8125                                    strat->tailRing : currRing),
     8126                                   strat->tailBin);
     8127    if (p.t_p != NULL) pNext(p.t_p) = pNext(p.p);
     8128  }
     8129  strat->T[atT] = (TObject) p;
     8130  #if ADIDEBUG
     8131  printf("\nenterT_strong: add in position %i\n",atT);
     8132  pWrite(p.p);
     8133  #endif
     8134  //printf("\nenterT_strong: neue hingefÃŒgt: lÀnge = %i, ecart = %i\n",p.length,p.ecart);
     8135
     8136  if (strat->tailRing != currRing && pNext(p.p) != NULL)
     8137    strat->T[atT].max = p_GetMaxExpP(pNext(p.p), strat->tailRing);
     8138  else
     8139    strat->T[atT].max = NULL;
     8140
     8141  strat->tl++;
     8142  strat->R[strat->tl] = &(strat->T[atT]);
     8143  strat->T[atT].i_r = strat->tl;
     8144  assume(p.sev == 0 || pGetShortExpVector(p.p) == p.sev);
     8145  strat->sevT[atT] = (p.sev == 0 ? pGetShortExpVector(p.p) : p.sev);
     8146  #if 0
     8147  #ifdef HAVE_RINGS
     8148  if(rField_is_Ring(currRing) && !n_IsUnit(p.p->coef, currRing->cf))
     8149  {
     8150    #if ADIDEBUG_NF
     8151    printf("\nDas ist p:\n");pWrite(p.p);
     8152    #endif
     8153    for(i=strat->tl;i>=0;i--)
     8154    {
     8155      if(strat->T[i].ecart <= p.ecart && pLmDivisibleBy(strat->T[i].p,p.p))
     8156      {
     8157        #if ADIDEBUG_NF
     8158        printf("\nFound one: %i\n",i);pWrite(strat->T[i].p);
     8159        #endif
     8160        enterOneStrongPoly(i,p.p,p.ecart,0,strat,0 , TRUE);
     8161      }
     8162    }
     8163  }
     8164  /*
     8165  printf("\nThis is T:\n");
     8166  for(i=strat->tl;i>=0;i--)
     8167  {
     8168    pWrite(strat->T[i].p);
     8169  }
     8170  //getchar();*/
     8171  #endif
     8172  #endif
    80628173  kTest_T(&(strat->T[atT]));
    80638174}
  • kernel/GBEngine/kutil.h

    rb4fbb8 r8a14df  
    530530void enterSyz (LObject &p,kStrategy strat, int atT);
    531531void enterT (LObject &p,kStrategy strat, int atT = -1);
     532void enterT_strong (LObject &p,kStrategy strat, int atT = -1);
    532533void cancelunit (LObject* p,BOOLEAN inNF=FALSE);
    533534void HEckeTest (poly pp,kStrategy strat);
Note: See TracChangeset for help on using the changeset viewer.