 |
My Project
UNKNOWN_GIT_VERSION
|
Go to the source code of this file.
|
ideal | mora (ideal F, ideal Q, intvec *w, intvec *hilb, kStrategy strat) |
|
poly | kNF1 (ideal F, ideal Q, poly q, kStrategy strat, int lazyReduce) |
|
ideal | kNF1 (ideal F, ideal Q, ideal q, kStrategy strat, int lazyReduce) |
|
poly | kNF (ideal F, ideal Q, poly p, int syzComp=0, int lazyReduce=0) |
|
ideal | kNF (ideal F, ideal Q, ideal p, int syzComp=0, int lazyReduce=0) |
|
poly | kNFBound (ideal F, ideal Q, poly p, int bound, int syzComp=0, int lazyReduce=0) |
|
ideal | kNFBound (ideal F, ideal Q, ideal p, int bound, int syzComp=0, int lazyReduce=0) |
|
poly | k_NF (ideal F, ideal Q, poly p, int syzComp, int lazyReduce, const ring _currRing) |
| NOTE: this is just a wrapper which sets currRing for the actual kNF call. More...
|
|
ideal | kSba (ideal F, ideal Q, tHomog h, intvec **mw, int incremental=0, int arri=0, intvec *hilb=NULL, int syzComp=0, int newIdeal=0, intvec *vw=NULL) |
|
ideal | kStd (ideal F, ideal Q, tHomog h, intvec **mw, intvec *hilb=NULL, int syzComp=0, int newIdeal=0, intvec *vw=NULL, s_poly_proc_t sp=NULL) |
|
ideal | kStdShift (ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, int uptodeg, int lVblock) |
|
void | initMora (ideal F, kStrategy strat) |
|
ideal | kInterRed (ideal F, ideal Q=NULL) |
|
ideal | kInterRedOld (ideal F, ideal Q=NULL) |
|
long | kModDeg (poly p, ring r=currRing) |
|
long | kHomModDeg (poly p, ring r=currRing) |
|
ideal | stdred (ideal F, ideal Q, tHomog h, intvec **w) |
|
ideal | kMin_std (ideal F, ideal Q, tHomog h, intvec **w, ideal &M, intvec *hilb=NULL, int syzComp=0, int reduced=0) |
|
◆ KSTD_NF_ECART
◆ KSTD_NF_LAZY
◆ KSTD_NF_NONORM
◆ s_poly_proc_t
◆ initMora()
◆ k_NF()
poly k_NF |
( |
ideal |
F, |
|
|
ideal |
Q, |
|
|
poly |
p, |
|
|
int |
syzComp, |
|
|
int |
lazyReduce, |
|
|
const ring |
_currRing |
|
) |
| |
NOTE: this is just a wrapper which sets currRing for the actual kNF call.
Definition at line 3015 of file kstd1.cc.
3019 poly ret =
kNF(F,
Q,
p, syzComp, lazyReduce);
◆ kHomModDeg()
long kHomModDeg |
( |
poly |
p, |
|
|
ring |
r = currRing |
|
) |
| |
Definition at line 2074 of file kstd1.cc.
2079 for (
i=r->N;
i>0;
i--)
2084 return j+(*kModW)[
i-1];
◆ kInterRed()
ideal kInterRed |
( |
ideal |
F, |
|
|
ideal |
Q = NULL |
|
) |
| |
Definition at line 3380 of file kstd1.cc.
3426 while (need_retry && (counter>0))
3432 int new_elems=
idElem(res1);
3433 counter -= (new_elems >= elems);
3436 if (
idElem(res1)<=1) need_retry=0;
◆ kInterRedOld()
ideal kInterRedOld |
( |
ideal |
F, |
|
|
ideal |
Q = NULL |
|
) |
| |
◆ kMin_std()
ideal kMin_std |
( |
ideal |
F, |
|
|
ideal |
Q, |
|
|
tHomog |
h, |
|
|
intvec ** |
w, |
|
|
ideal & |
M, |
|
|
intvec * |
hilb = NULL , |
|
|
int |
syzComp = 0 , |
|
|
int |
reduced = 0 |
|
) |
| |
Definition at line 2673 of file kstd1.cc.
2679 return idInit(1,F->rank);
2714 strat->
minim=(reduced % 2)+1;
2763 r=
mora(F,
Q,*
w,hilb,strat);
2770 r=
bba(F,
Q,*
w,hilb,strat);
2788 if ((delete_w)&&(temp_w!=
NULL))
delete temp_w;
2796 else if (strat->
M==
NULL)
2799 WarnS(
"no minimal generating set computed");
◆ kModDeg()
long kModDeg |
( |
poly |
p, |
|
|
ring |
r = currRing |
|
) |
| |
Definition at line 2064 of file kstd1.cc.
2071 return o+(*kModW)[
i-1];
◆ kNF() [1/2]
ideal kNF |
( |
ideal |
F, |
|
|
ideal |
Q, |
|
|
ideal |
p, |
|
|
int |
syzComp = 0 , |
|
|
int |
lazyReduce = 0 |
|
) |
| |
◆ kNF() [2/2]
poly kNF |
( |
ideal |
F, |
|
|
ideal |
Q, |
|
|
poly |
p, |
|
|
int |
syzComp = 0 , |
|
|
int |
lazyReduce = 0 |
|
) |
| |
◆ kNF1() [1/2]
ideal kNF1 |
( |
ideal |
F, |
|
|
ideal |
Q, |
|
|
ideal |
q, |
|
|
kStrategy |
strat, |
|
|
int |
lazyReduce |
|
) |
| |
◆ kNF1() [2/2]
poly kNF1 |
( |
ideal |
F, |
|
|
ideal |
Q, |
|
|
poly |
q, |
|
|
kStrategy |
strat, |
|
|
int |
lazyReduce |
|
) |
| |
◆ kNFBound() [1/2]
ideal kNFBound |
( |
ideal |
F, |
|
|
ideal |
Q, |
|
|
ideal |
p, |
|
|
int |
bound, |
|
|
int |
syzComp = 0 , |
|
|
int |
lazyReduce = 0 |
|
) |
| |
◆ kNFBound() [2/2]
poly kNFBound |
( |
ideal |
F, |
|
|
ideal |
Q, |
|
|
poly |
p, |
|
|
int |
bound, |
|
|
int |
syzComp = 0 , |
|
|
int |
lazyReduce = 0 |
|
) |
| |
◆ kSba()
ideal kSba |
( |
ideal |
F, |
|
|
ideal |
Q, |
|
|
tHomog |
h, |
|
|
intvec ** |
mw, |
|
|
int |
incremental = 0 , |
|
|
int |
arri = 0 , |
|
|
intvec * |
hilb = NULL , |
|
|
int |
syzComp = 0 , |
|
|
int |
newIdeal = 0 , |
|
|
intvec * |
vw = NULL |
|
) |
| |
Definition at line 2268 of file kstd1.cc.
2272 return idInit(1,F->rank);
2372 r=
mora(F,
Q,*
w,hilb,strat);
2380 r=
sba(F,
Q,*
w,hilb,strat);
2408 bool sigdrop =
TRUE;
2410 int totalsbaruns = 1,blockedreductions = 20,blockred = 0,loops = 0;
2411 while(sigdrop && (loops < totalsbaruns || totalsbaruns == -1)
2412 && (blockred <= blockedreductions))
2523 r=
mora(F,
Q,*
w,hilb,strat);
2530 r=
sba(r,
Q,*
w,hilb,strat);
2555 if(sigdrop || blockred > blockedreductions)
2557 r =
kStd(r,
Q,
h,
w, hilb, syzComp, newIdeal, vw);
◆ kStd()
Definition at line 2087 of file kstd1.cc.
2091 return idInit(1,F->rank);
2172 #if PRE_INTEGER_CHECK
2227 r=
mora(FCopy,
Q,*
w,hilb,strat);
2229 r=
bba(FCopy,
Q,*
w,hilb,strat);
2246 r=
mora(F,
Q,*
w,hilb,strat);
2248 r=
bba(F,
Q,*
w,hilb,strat);
◆ kStdShift()
ideal kStdShift |
( |
ideal |
F, |
|
|
ideal |
Q, |
|
|
tHomog |
h, |
|
|
intvec ** |
w, |
|
|
intvec * |
hilb, |
|
|
int |
syzComp, |
|
|
int |
newIdeal, |
|
|
intvec * |
vw, |
|
|
int |
uptodeg, |
|
|
int |
lVblock |
|
) |
| |
Definition at line 2564 of file kstd1.cc.
2639 WerrorS(
"No local ordering possible for shift algebra");
◆ mora()
Definition at line 1516 of file kstd1.cc.
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");
1679 if ((strat->
P.p->next==
NULL)
1681 strat->
P.pCleardenom();
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));
1762 return (strat->
Shdl);
◆ stdred()
◆ kHomW
◆ kModW
◆ kOptions
◆ Kstd1_deg
◆ Kstd1_mu
◆ LazyDegree
◆ LazyPass
◆ validOpts
void kEcartWeights(poly *s, int sl, short *eweight, const ring R)
void updateL(kStrategy strat)
void kStratInitChangeTailRing(kStrategy strat)
static ideal nc_GB(const ideal F, const ideal Q, const intvec *w, const intvec *hilb, kStrategy strat, const ring r)
int idElem(const ideal F)
count non-zero elements
void deleteHC(LObject *L, kStrategy strat, BOOLEAN fromNext)
#define pIsConstant(p)
like above, except that Comp might be != 0
void initBuchMoraCrit(kStrategy strat)
int redRiloc(LObject *h, kStrategy strat)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
poly kNF2(ideal F, ideal Q, poly q, kStrategy strat, int lazyReduce)
void pNorm(poly p, const ring R=currRing)
void cleanT(kStrategy strat)
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
void(* enterS)(LObject &h, int pos, kStrategy strat, int atR)
#define idDelete(H)
delete an ideal
static FORCE_INLINE BOOLEAN nCoeff_is_Z(const coeffs r)
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced
void enterT_strong(LObject &p, kStrategy strat, int atT)
void khCheck(ideal Q, intvec *w, intvec *hilb, int &eledeg, int &count, kStrategy strat)
void rChangeCurrRing(ring r)
#define TEST_OPT_DEGBOUND
BOOLEAN arriRewCriterion(poly, unsigned long, poly, kStrategy strat, int start=0)
void enterSMora(LObject &p, int atS, kStrategy strat, int atR=-1)
static BOOLEAN idHomIdeal(ideal id, ideal Q=NULL)
void reorderL(kStrategy strat)
BOOLEAN kTest_TS(kStrategy strat)
poly kNF1(ideal F, ideal Q, poly q, kStrategy strat, int lazyReduce)
poly redtail(LObject *L, int end_pos, kStrategy strat)
int posInT17(const TSet set, const int length, LObject &p)
static void kOptimizeLDeg(pLDegProc ldeg, kStrategy strat)
int(* posInLOld)(const LSet Ls, const int Ll, LObject *Lo, const kStrategy strat)
void(* chainCrit)(poly p, int ecart, kStrategy strat)
KINLINE unsigned long * initsevT()
#define TEST_OPT_MULTBOUND
void updateResult(ideal r, ideal Q, kStrategy strat)
BOOLEAN kCheckSpolyCreation(LObject *L, kStrategy strat, poly &m1, poly &m2)
void khCheckLocInhom(ideal Q, intvec *w, intvec *hilb, int &count, kStrategy strat)
void superenterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
long totaldegreeWecart(poly p, ring r)
BOOLEAN idInsertPoly(ideal h1, poly h2)
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted
static BOOLEAN length(leftv result, leftv arg)
#define __p_GetComp(p, r)
void updateS(BOOLEAN toT, kStrategy strat)
ideal kInterRedOld(ideal F, ideal Q)
#define pGetShortExpVector(a)
returns the "Short Exponent Vector" – used to speed up divisibility tests (see polys-impl....
int posInS(const kStrategy strat, const int length, const poly p, const int ecart_p)
ideal bbaShift(ideal F, ideal Q, intvec *w, intvec *hilb, kStrategy strat, int uptodeg, int lV)
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
poly p_KillSquares(const poly p, const short iFirstAltVar, const short iLastAltVar, const ring r)
static BOOLEAN kMoraUseBucket(kStrategy strat)
BOOLEAN arriRewCriterionPre(poly sig, unsigned long not_sevSig, poly lm, kStrategy strat, int)
ideal mora(ideal F, ideal Q, intvec *w, intvec *hilb, kStrategy strat)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
static unsigned pLength(poly a)
void chainCritOpt_1(poly, int, kStrategy strat)
static poly redMoraNF(poly h, kStrategy strat, int flag)
BOOLEAN kTest(kStrategy strat)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
void ksCreateSpoly(LObject *Pair, poly spNoether, int use_buckets, ring tailRing, poly m1, poly m2, TObject **R)
#define TEST_OPT_INTSTRATEGY
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
void firstUpdate(kStrategy strat)
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
poly kNF2Bound(ideal F, ideal Q, poly q, int bound, kStrategy strat, int lazyReduce)
void enterSBba(LObject &p, int atS, kStrategy strat, int atR)
int posInT2(const TSet set, const int length, LObject &p)
void initEcartNormal(TObject *h)
void PrintS(const char *s)
#define omFreeSize(addr, size)
void message(int i, int *reduc, int *olddeg, kStrategy strat, int red_result)
void finalReduceByMon(kStrategy strat)
used for GB over ZZ: final reduction by constant elements background: any known constant element of i...
int redEcart(LObject *h, kStrategy strat)
static short scaFirstAltVar(ring r)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
static BOOLEAN rField_is_Ring(const ring r)
long kModDeg(poly p, ring r)
void completeReduce(kStrategy strat, BOOLEAN withT)
int(* posInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
KINLINE poly kNoetherTail()
void exitBuchMora(kStrategy strat)
static void p_LmDelete(poly p, const ring r)
void initBuchMora(ideal F, ideal Q, kStrategy strat)
int posInL10(const LSet set, const int length, LObject *p, const kStrategy strat)
void enterSMoraNF(LObject &p, int atS, kStrategy strat, int atR=-1)
#define TEST_OPT_STAIRCASEBOUND
BOOLEAN(* rewCrit1)(poly sig, unsigned long not_sevSig, poly lm, kStrategy strat, int start)
void initBuchMoraPos(kStrategy strat)
KINLINE BOOLEAN arriRewDummy(poly, unsigned long, poly, kStrategy, int)
void messageStat(int hilbcount, kStrategy strat)
long p_WDegree(poly p, const ring r)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
#define TEST_OPT_RETURN_SB
void kDebugPrint(kStrategy strat)
static poly redMoraNFRing(poly h, kStrategy strat, int flag)
poly preIntegerCheck(const ideal Forig, const ideal Q)
used for GB over ZZ: look for constant and monomial elements in the ideal background: any known const...
BOOLEAN(* rewCrit2)(poly sig, unsigned long not_sevSig, poly lm, kStrategy strat, int start)
static void p_Delete(poly *p, const ring r)
static BOOLEAN rField_is_numeric(const ring r)
void messageSets(kStrategy strat)
long maxdegreeWecart(poly p, int *l, ring r)
BOOLEAN faugereRewCriterion(poly sig, unsigned long not_sevSig, poly, kStrategy strat, int start=0)
void initBuchMoraPosRing(kStrategy strat)
void chainCritNormal(poly p, int ecart, kStrategy strat)
static int si_max(const int a, const int b)
static CanonicalForm bound(const CFMatrix &M)
#define pSetmComp(p)
TODO:
void pSetDegProcs(ring r, pFDegProc new_FDeg, pLDegProc new_lDeg)
void(* initEcartPair)(LObject *h, poly f, poly g, int ecartF, int ecartG)
static short scaLastAltVar(ring r)
ideal idInit(int idsize, int rank)
initialise an ideal / module
static BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
void initMora(ideal F, kStrategy strat)
ideal id_KillSquares(const ideal id, const short iFirstAltVar, const short iLastAltVar, const ring r, const bool bSkipZeroes)
void WerrorS(const char *s)
static BOOLEAN rField_has_simple_inverse(const ring r)
#define pLmDelete(p)
assume p != NULL, deletes Lm(p)->coef and Lm(p)
ideal SCAQuotient(const ring r)
BOOLEAN(* rewCrit3)(poly sig, unsigned long not_sevSig, poly lm, kStrategy strat, int start)
int redFirst(LObject *h, kStrategy strat)
void cancelunit(LObject *L, BOOLEAN inNF)
#define idSimpleAdd(A, B)
void deleteInL(LSet set, int *length, int j, kStrategy strat)
void(* initEcart)(TObject *L)
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)
long kHomModDeg(poly p, ring r)
void enterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
#define pCopy(p)
return a copy of the poly
#define SI_RESTORE_OPT1(A)
int(* posInT)(const TSet T, const int tl, LObject &h)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
static void kDeleteLcm(LObject *P)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL
void initEcartPairMora(LObject *Lp, poly, poly, int ecartF, int ecartG)
BOOLEAN rHasMixedOrdering(const ring r)
void enterOnePairNormal(int i, poly p, int ecart, int isFromQ, kStrategy strat, int atR=-1)
ideal kInterRed(ideal F, ideal Q)
static bool rIsSCA(const ring r)
BOOLEAN kStratChangeTailRing(kStrategy strat, LObject *L, TObject *T, unsigned long expbound)
KINLINE TObject ** initR()
void initHilbCrit(ideal, ideal, intvec **hilb, kStrategy strat)
void missingAxis(int *last, kStrategy strat)
void enterT(LObject &p, kStrategy strat, int atT)
void(* enterOnePair)(int i, poly p, int ecart, int isFromQ, kStrategy strat, int atR)
int scMult0Int(ideal S, ideal Q, const ring tailRing)
ideal kInterRedBba(ideal F, ideal Q, int &need_retry)
omError_t omTestMemory(int check_level)
void updateLHC(kStrategy strat)
void initS(ideal F, ideal Q, kStrategy strat)