#define pLmCmp(p, q)
returns 0|1|-1 if p=q|p>q|p
static int doRed(LObject *h, TObject *with, BOOLEAN intoT, kStrategy strat)
int redFirst(LObject *h, kStrategy strat)
void enterT(LObject p, kStrategy strat, int atT)
BOOLEAN posInLDependsOnLength
long p_WDegree(poly p, const ring r)
#define omFreeSize(addr, size)
#define idSimpleAdd(A, B)
BOOLEAN(* rewCrit2)(poly sig, unsigned long not_sevSig, poly lm, kStrategy strat, int start)
void initSba(ideal F, kStrategy strat)
static short rVar(const ring r)
#define rVar(r) (r->N)
void id_Delete(ideal *h, ring r)
long pLDeg0c(poly p, int *l, const ring r)
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
int ksReducePoly(LObject *PR, TObject *PW, poly spNoether, number *coef, kStrategy strat)
BOOLEAN(* rewCrit3)(poly sig, unsigned long not_sevSig, poly lm, kStrategy strat, int start)
void(* initEcartPair)(LObject *h, poly f, poly g, int ecartF, int ecartG)
void cancelunit(LObject *L, BOOLEAN inNF)
void enterL(LSet *set, int *length, int *LSetmax, LObject p, int at)
BOOLEAN idHomModule(ideal m, ideal Q, intvec **w, const ring R=currRing)
int redSig(LObject *h, kStrategy strat)
ideal bba(ideal F, ideal Q, intvec *w, intvec *hilb, kStrategy strat)
ideal sba(ideal F0, ideal Q, intvec *w, intvec *hilb, kStrategy strat)
int(* red)(LObject *L, kStrategy strat)
static bool rIsPluralRing(const ring r)
we must always have this test!
int redHomog(LObject *h, kStrategy strat)
KINLINE poly redtailBba(poly p, int pos, kStrategy strat, BOOLEAN normalize)
poly p_KillSquares(const poly p, const short iFirstAltVar, const short iLastAltVar, const ring r)
int(* posInT)(const TSet T, const int tl, LObject &h)
void HEckeTest(poly pp, kStrategy strat)
long(* pLDegProc)(poly p, int *length, ring r)
static void p_LmFree(poly p, ring)
#define pGetComp(p)
Component.
static int pLength(poly a)
int int kStrategy strat if(h==NULL) return NULL
void updateL(kStrategy strat)
void enterOnePairNormal(int i, poly p, int ecart, int isFromQ, kStrategy strat, int atR=-1)
char completeReduce_retry
void kStratInitChangeTailRing(kStrategy strat)
#define TEST_OPT_NOT_BUCKETS
static BOOLEAN rField_has_simple_inverse(const ring r)
pShallowCopyDeleteProc pGetShallowCopyDeleteProc(ring, ring)
void missingAxis(int *last, kStrategy strat)
int redHoney(LObject *h, kStrategy strat)
void deleteInL(LSet set, int *length, int j, kStrategy strat)
ideal kStdShift(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, int uptodeg, int lV)
int redRiloc(LObject *h, kStrategy strat)
void(* initEcart)(TObject *L)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
int redLazy(LObject *h, kStrategy strat)
void(* enterOnePair)(int i, poly p, int ecart, int isFromQ, kStrategy strat, int atR)
void initS(ideal F, ideal Q, kStrategy strat)
poly kNF2(ideal F, ideal Q, poly q, kStrategy strat, int lazyReduce)
ideal kInterRedBba(ideal F, ideal Q, int &need_retry)
void initEcartPairMora(LObject *Lp, poly, poly, int ecartF, int ecartG)
#define TEST_OPT_INTSTRATEGY
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent : the integer VarOffset encodes:
#define TEST_OPT_STAIRCASEBOUND
END_NAMESPACE BEGIN_NAMESPACE_SINGULARXX ideal poly int syzComp
void pSetDegProcs(ring r, pFDegProc new_FDeg, pLDegProc new_lDeg)
void initHilbCrit(ideal, ideal, intvec **hilb, kStrategy strat)
int scMult0Int(ideal S, ideal Q, const ring tailRing)
poly kNF1(ideal F, ideal Q, poly q, kStrategy strat, int lazyReduce)
void initBba(ideal, kStrategy strat)
void initEcartBBA(TObject *h)
void updateLHC(kStrategy strat)
#define pGetShortExpVector(a)
returns the "Short Exponent Vector" – used to speed up divisibility tests (see polys-impl.cc )
long pLDeg0(poly p, int *l, const ring r)
#define pLmShortDivisibleBy(a, sev_a, b, not_sev_b)
Divisibility tests based on Short Exponent vectors sev_a == pGetShortExpVector(a) not_sev_b == ~ pGet...
#define pp_Test(p, lmRing, tailRing)
long kHomModDeg(poly p, ring r)
static BOOLEAN p_LmShortDivisibleBy(poly a, unsigned long sev_a, poly b, unsigned long not_sev_b, const ring r)
ideal kInterRed(ideal F, ideal Q)
void ksCreateSpoly(LObject *Pair, poly spNoether, int use_buckets, ring tailRing, poly m1, poly m2, TObject **R)
int kFindDivisibleByInS(const kStrategy strat, int *max_ind, LObject *L)
return -1 if no divisor is found number of first divisor in S, otherwise
BOOLEAN kStratChangeTailRing(kStrategy strat, LObject *L, TObject *T, unsigned long expbound)
void idDelete(ideal *h, ring r=currRing)
delete an ideal
int posInL0(const LSet set, const int length, LObject *p, const kStrategy)
#define pIsConstant(p)
like above, except that Comp might be != 0
void initBuchMoraCrit(kStrategy strat)
static int si_max(const int a, const int b)
void reorderL(kStrategy strat)
ideal kInterRedOld(ideal F, ideal Q)
void PrintS(const char *s)
void deleteHC(LObject *L, kStrategy strat, BOOLEAN fromNext)
static long p_MinComp(poly p, ring lmRing, ring tailRing)
static void kOptimizeLDeg(pLDegProc ldeg, kStrategy strat)
int posInT17(const TSet set, const int length, LObject &p)
int(* posInLOld)(const LSet Ls, const int Ll, LObject *Lo, const kStrategy strat)
void rWrite(ring r, BOOLEAN details)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL ...
void idSkipZeroes(ideal ide)
static short scaFirstAltVar(ring r)
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
void rChangeCurrRing(ring r)
BOOLEAN kCheckSpolyCreation(LObject *L, kStrategy strat, poly &m1, poly &m2)
BOOLEAN arriRewCriterion(poly, unsigned long, poly, kStrategy strat, int start=0)
#define TEST_OPT_RETURN_SB
static void p_Delete(poly *p, const ring r)
void khCheck(ideal Q, intvec *w, intvec *hilb, int &eledeg, int &count, kStrategy strat)
ideal idInit(int idsize, int rank)
BOOLEAN arriRewCriterionPre(poly sig, unsigned long not_sevSig, poly lm, kStrategy strat, int)
int p_IsPurePower(const poly p, const ring r)
return i, if head depends only on var(i)
void(* chainCrit)(poly p, int ecart, kStrategy strat)
static BOOLEAN rField_is_Ring(const ring r)
void cleanT(kStrategy strat)
ideal id_KillSquares(const ideal id, const short iFirstAltVar, const short iLastAltVar, const ring r, const bool bSkipZeroes)
void superenterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
void enterSMoraNF(LObject p, int atS, kStrategy strat, int atR=-1)
void firstUpdate(kStrategy strat)
BOOLEAN rHasGlobalOrdering(const ring r)
void khCheckLocInhom(ideal Q, intvec *w, intvec *hilb, int &count, kStrategy strat)
ideal kMin_std(ideal F, ideal Q, tHomog h, intvec **w, ideal &M, intvec *hilb, int syzComp, int reduced)
void pNorm(poly p, const ring R=currRing)
BOOLEAN hasPurePower(const poly p, int last, int *length, kStrategy strat)
int kFindDivisibleByInT(const TSet &T, const unsigned long *sevT, const int tl, const LObject *L, const int start)
return -1 if no divisor is found number of first divisor in T, otherwise
void reorderT(kStrategy strat)
int posInS(const kStrategy strat, const int length, const poly p, const int ecart_p)
static short scaLastAltVar(ring r)
void updateS(BOOLEAN toT, kStrategy strat)
ideal bbaShift(ideal F, ideal Q, intvec *w, intvec *hilb, kStrategy strat, int uptodeg, int lV)
static bool rIsSCA(const ring r)
void completeReduce(kStrategy strat, BOOLEAN withT)
static poly redMoraNF(poly h, kStrategy strat, int flag)
long kModDeg(poly p, ring r)
long maxdegreeWecart(poly p, int *l, ring r)
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 ...
ideal idCopy(ideal A, const ring R=currRing)
int idElem(const ideal F)
number of non-zero polys in F
static BOOLEAN kMoraUseBucket(kStrategy strat)
void p_wrp(poly p, ring lmRing, ring tailRing)
void p_Write(poly p, ring lmRing, ring tailRing)
BOOLEAN newHEdge(kStrategy strat)
void initEcartNormal(TObject *h)
void enterSBba(LObject p, int atS, kStrategy strat, int atR)
#define OPT_NOTREGULARITY
#define TEST_OPT_REDTHROUGH
static ideal nc_GB(const ideal F, const ideal Q, const intvec *w, const intvec *hilb, kStrategy strat, const ring r)
void(* enterS)(LObject h, int pos, kStrategy strat, int atR)
int(* red2)(LObject *L, kStrategy strat)
KINLINE poly kNoetherTail()
#define SI_RESTORE_OPT1(A)
KINLINE BOOLEAN arriRewDummy(poly, unsigned long, poly, kStrategy, int)
static BOOLEAN rField_is_numeric(const ring r)
void exitBuchMora(kStrategy strat)
pFDegProc pOrigFDeg_TailRing
int posInL10(const LSet set, const int length, LObject *p, const kStrategy strat)
void kDebugPrint(kStrategy strat)
END_NAMESPACE BEGIN_NAMESPACE_SINGULARXX ideal poly int int lazyReduce
ideal mora(ideal F, ideal Q, intvec *w, intvec *hilb, kStrategy strat)
#define pCopy(p)
return a copy of the poly