1473 int hilbeledeg=1,hilbcount=0;
1514 #ifdef HAVE_TAIL_RING
1524 while (strat->
Ll >= 0)
1530 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg))
1537 while ((strat->
Ll >= 0)
1538 && (strat->
L[strat->
Ll].p1!=
NULL) && (strat->
L[strat->
Ll].p2!=
NULL)
1539 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg)
1548 if (strat->
Ll<0)
break;
1554 Print(
"\n-------------------------------- LOOP %d ---------------------------------------\n",loop_count);
1556 Print(
"\n The pair list L -- in loop %d -- is:\n",loop_count);
1557 for(
int iii=0;iii<=strat->
Ll;iii++)
1559 Print(
"\n L[%d]:\n",iii);
1568 strat->
P = strat->
L[strat->
Ll];
1574 PrintS(
" My new pair P = (p1,p2,p) is:\n");
1578 Print(
"\n The old reducer list T -- at the beg of loop %d -- is :",loop_count);
1582 for(
int iii=0;iii<=strat->
tl;iii++)
1584 Print(
"\n T[%d]:",iii);
1585 p_Write(strat->
T[iii].p,strat->
T->tailRing);
1617 else if (strat->
P.p1 ==
NULL)
1624 if (!strat->
P.IsNull())
1628 message(strat->
P.ecart+strat->
P.GetpFDeg(),&olddeg,&reduc,
strat, red_result);
1630 red_result = strat->red(&strat->P,strat);
1633 if (! strat->P.IsNull())
1642 strat->P.p =
redtail(&(strat->P),strat->sl,strat);
1644 if ((!strat->noTailReduction) && (!strat->honey))
1645 strat->initEcart(&strat->P);
1650 strat->P.pCleardenom();
1658 superenterpairs(strat->P.p,strat->sl,strat->P.ecart,0,strat, strat->tl);
1661 Print(
"\n The new pair list L -- after superenterpairs in loop %d -- is:\n",loop_count);
1662 for(
int iii=0;iii<=strat->Ll;iii++)
1664 PrintS(
"\n L[%d]:\n",iii);
1673 enterpairs(strat->P.p,strat->sl,strat->P.ecart,0,strat, strat->tl);
1675 strat->enterS(strat->P,
1676 posInS(strat,strat->sl,strat->P.p, strat->P.ecart),
1683 khCheck(
Q,w,hilb,hilbeledeg,hilbcount,strat);
1689 if (strat->P.lcm!=
NULL)
1690 #if defined(HAVE_RINGS)
1698 memset(&strat->P,0,
sizeof(strat->P));
1701 if (strat->kHEdgeFound)
1715 while (strat->Ll >= 0)
deleteInL(strat->L,&strat->Ll,strat->Ll,strat);
1721 Print(
"\n The new reducer list T -- at the end of loop %d -- is\n",loop_count);
1722 for(
int iii=0;iii<=strat->tl;iii++)
1725 p_Write(strat->T[iii].p,strat->tailRing);
1740 if (strat->kHEdge!=
NULL)
1746 strat->update =
TRUE;
1747 strat->lastAxis = 0;
1763 return (strat->Shdl);
int(* posInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
poly redtail(LObject *L, int pos, kStrategy strat)
#define TEST_OPT_DEGBOUND
void initBuchMoraPos(kStrategy strat)
void message(int i, int *reduc, int *olddeg, kStrategy strat, int red_result)
void initMora(ideal F, kStrategy strat)
void messageStat(int hilbcount, kStrategy strat)
void initBuchMora(ideal F, ideal Q, kStrategy strat)
void enterT(LObject p, kStrategy strat, int atT)
#define omFreeSize(addr, size)
void enterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
#define pLmDelete(p)
assume p != NULL, deletes Lm(p)->coef and Lm(p)
#define TEST_OPT_MULTBOUND
void cancelunit(LObject *L, BOOLEAN inNF)
void updateL(kStrategy strat)
void kStratInitChangeTailRing(kStrategy strat)
void missingAxis(int *last, kStrategy strat)
void deleteInL(LSet set, int *length, int j, kStrategy strat)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#define TEST_OPT_INTSTRATEGY
void initHilbCrit(ideal, ideal, intvec **hilb, kStrategy strat)
int scMult0Int(ideal S, ideal Q, const ring tailRing)
void updateLHC(kStrategy strat)
void ksCreateSpoly(LObject *Pair, poly spNoether, int use_buckets, ring tailRing, poly m1, poly m2, TObject **R)
BOOLEAN kStratChangeTailRing(kStrategy strat, LObject *L, TObject *T, unsigned long expbound)
void initBuchMoraCrit(kStrategy strat)
void reorderL(kStrategy strat)
void PrintS(const char *s)
int(* posInLOld)(const LSet Ls, const int Ll, LObject *Lo, const kStrategy strat)
BOOLEAN kCheckSpolyCreation(LObject *L, kStrategy strat, poly &m1, poly &m2)
void khCheck(ideal Q, intvec *w, intvec *hilb, int &eledeg, int &count, kStrategy strat)
static BOOLEAN rField_is_Ring(const ring r)
void superenterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
void firstUpdate(kStrategy strat)
void khCheckLocInhom(ideal Q, intvec *w, intvec *hilb, int &count, kStrategy strat)
int posInS(const kStrategy strat, const int length, const poly p, const int ecart_p)
void completeReduce(kStrategy strat, BOOLEAN withT)
void updateResult(ideal r, ideal Q, kStrategy strat)
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced ...
static BOOLEAN kMoraUseBucket(kStrategy strat)
void p_Write(poly p, ring lmRing, ring tailRing)
KINLINE poly kNoetherTail()
#define SI_RESTORE_OPT1(A)
void exitBuchMora(kStrategy strat)
int posInL10(const LSet set, const int length, LObject *p, const kStrategy strat)
void kDebugPrint(kStrategy strat)