1522 int hilbeledeg=1,hilbcount=0;
1565 #ifdef HAVE_TAIL_RING 1579 while (strat->
Ll >= 0)
1586 while (strat->
Ll >= 0)
1591 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg))
1598 while ((strat->
Ll >= 0)
1599 && (strat->
L[strat->
Ll].p1!=
NULL) && (strat->
L[strat->
Ll].p2!=
NULL)
1600 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg)
1609 if (strat->
Ll<0)
break;
1612 strat->
P = strat->
L[strat->
Ll];
1639 else if (strat->
P.p1 ==
NULL)
1647 if (!strat->
P.IsNull())
1651 message(strat->
P.ecart+strat->
P.GetpFDeg(),&olddeg,&reduc,strat, red_result);
1653 red_result = strat->red(&strat->P,strat);
1657 if (! strat->P.IsNull())
1664 strat->P.pCleardenom();
1668 strat->P.p =
redtail(&(strat->P),strat->sl,strat);
1669 if (strat->P.p==
NULL)
1671 WerrorS(
"expoent overflow - wrong ordering");
1675 if ((!strat->noTailReduction) && (!strat->honey))
1676 strat->initEcart(&strat->P);
1680 if ((strat->P.p->next==
NULL)
1682 strat->P.pCleardenom();
1687 superenterpairs(strat->P.p,strat->sl,strat->P.ecart,0,strat, strat->tl);
1689 enterpairs(strat->P.p,strat->sl,strat->P.ecart,0,strat, strat->tl);
1691 strat->enterS(strat->P,
1692 posInS(strat,strat->sl,strat->P.p, strat->P.ecart),
1698 khCheck(
Q,w,hilb,hilbeledeg,hilbcount,strat);
1708 memset(&strat->P,0,
sizeof(strat->P));
1711 if (strat->kHEdgeFound)
1725 while (strat->Ll >= 0)
deleteInL(strat->L,&strat->Ll,strat->Ll,strat);
1738 if (strat->kHEdge!=
NULL)
1744 strat->update =
TRUE;
1745 strat->lastAxis = 0;
1763 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)