1521 int hilbeledeg=1,hilbcount=0;
1564 #ifdef HAVE_TAIL_RING 1578 while (strat->
Ll >= 0)
1585 while (strat->
Ll >= 0)
1590 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg))
1597 while ((strat->
Ll >= 0)
1598 && (strat->
L[strat->
Ll].p1!=
NULL) && (strat->
L[strat->
Ll].p2!=
NULL)
1599 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg)
1608 if (strat->
Ll<0)
break;
1611 strat->
P = strat->
L[strat->
Ll];
1638 else if (strat->
P.p1 ==
NULL)
1646 if (!strat->
P.IsNull())
1650 message(strat->
P.ecart+strat->
P.GetpFDeg(),&olddeg,&reduc,strat, red_result);
1652 red_result = strat->red(&strat->P,strat);
1656 if (! strat->P.IsNull())
1663 strat->P.pCleardenom();
1667 strat->P.p =
redtail(&(strat->P),strat->sl,strat);
1668 if (strat->P.p==
NULL)
1670 WerrorS(
"expoent overflow - wrong ordering");
1674 if ((!strat->noTailReduction) && (!strat->honey))
1675 strat->initEcart(&strat->P);
1679 if ((strat->P.p->next==
NULL)
1681 strat->P.pCleardenom();
1686 superenterpairs(strat->P.p,strat->sl,strat->P.ecart,0,strat, strat->tl);
1688 enterpairs(strat->P.p,strat->sl,strat->P.ecart,0,strat, strat->tl);
1690 strat->enterS(strat->P,
1691 posInS(strat,strat->sl,strat->P.p, strat->P.ecart),
1697 khCheck(
Q,
w,hilb,hilbeledeg,hilbcount,strat);
1707 memset(&strat->P,0,
sizeof(strat->P));
1710 if (strat->kHEdgeFound)
1724 while (strat->Ll >= 0)
deleteInL(strat->L,&strat->Ll,strat->Ll,strat);
1737 if (strat->kHEdge!=
NULL)
1743 strat->update =
TRUE;
1744 strat->lastAxis = 0;
1762 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)
#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
static void kDeleteLcm(LObject *P)
void cancelunit(LObject *L, BOOLEAN inNF)
void WerrorS(const char *s)
int(* red)(LObject *L, kStrategy strat)
void initBuchMoraPosRing(kStrategy strat)
static FORCE_INLINE BOOLEAN nCoeff_is_Z(const coeffs r)
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)