1523 int hilbeledeg=1,hilbcount=0;
1566 #ifdef HAVE_TAIL_RING 1580 while (strat->
Ll >= 0)
1587 while (strat->
Ll >= 0)
1592 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg))
1599 while ((strat->
Ll >= 0)
1600 && (strat->
L[strat->
Ll].p1!=
NULL) && (strat->
L[strat->
Ll].p2!=
NULL)
1601 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg)
1610 if (strat->
Ll<0)
break;
1613 strat->
P = strat->
L[strat->
Ll];
1640 else if (strat->
P.p1 ==
NULL)
1648 if (!strat->
P.IsNull())
1652 message(strat->
P.ecart+strat->
P.GetpFDeg(),&olddeg,&reduc,strat, red_result);
1654 red_result = strat->red(&strat->P,strat);
1658 if (! strat->P.IsNull())
1665 strat->P.pCleardenom();
1669 strat->P.p =
redtail(&(strat->P),strat->sl,strat);
1670 if (strat->P.p==
NULL)
1672 WerrorS(
"expoent overflow - wrong ordering");
1676 if ((!strat->noTailReduction) && (!strat->honey))
1677 strat->initEcart(&strat->P);
1681 if ((strat->P.p->next==
NULL)
1683 strat->P.pCleardenom();
1688 superenterpairs(strat->P.p,strat->sl,strat->P.ecart,0,strat, strat->tl);
1690 enterpairs(strat->P.p,strat->sl,strat->P.ecart,0,strat, strat->tl);
1692 strat->enterS(strat->P,
1693 posInS(strat,strat->sl,strat->P.p, strat->P.ecart),
1699 khCheck(
Q,w,hilb,hilbeledeg,hilbcount,strat);
1705 if (strat->P.lcm!=
NULL)
1716 memset(&strat->P,0,
sizeof(strat->P));
1719 if (strat->kHEdgeFound)
1733 while (strat->Ll >= 0)
deleteInL(strat->L,&strat->Ll,strat->Ll,strat);
1746 if (strat->kHEdge!=
NULL)
1752 strat->update =
TRUE;
1753 strat->lastAxis = 0;
1771 return (strat->Shdl);
int(* posInL)(const LSet set, const int length, LObject *L, const 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)
int redFirst(LObject *h, kStrategy strat)
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_Z(const coeffs r)
#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 WerrorS(const char *s)
int(* red)(LObject *L, kStrategy strat)
void initBuchMoraPosRing(kStrategy strat)
void updateL(kStrategy strat)
void kStratInitChangeTailRing(kStrategy strat)
void enterT(LObject &p, kStrategy strat, int atT)
void missingAxis(int *last, kStrategy strat)
void deleteInL(LSet set, int *length, int j, kStrategy strat)
#define TEST_OPT_INTSTRATEGY
poly redtail(LObject *L, int end_pos, kStrategy strat)
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 rHasMixedOrdering(const ring r)
BOOLEAN kCheckSpolyCreation(LObject *L, kStrategy strat, poly &m1, poly &m2)
void khCheck(ideal Q, intvec *w, intvec *hilb, int &eledeg, int &count, kStrategy strat)
ideal idInit(int idsize, int rank)
initialise an ideal / module
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)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
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 finalReduceByMon(kStrategy strat)
used for GB over ZZ: final reduction by constant elements background: any known constant element of i...
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
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)