 |
My Project
UNKNOWN_GIT_VERSION
|
Go to the source code of this file.
|
void | nc_gr_initBba (ideal F, kStrategy strat) |
| nc_gr_initBba is needed for sca_gr_bba and gr_bba. More...
|
|
void | addLObject (LObject &h, kStrategy &strat) |
|
ideal | k_sca_gr_bba (const ideal F, const ideal Q, const intvec *, const intvec *, kStrategy strat, const ring _currRing) |
| Modified Plural's Buchberger's algorithmus. More...
|
|
ideal | k_sca_bba (const ideal F, const ideal Q, const intvec *, const intvec *, kStrategy strat, const ring _currRing) |
| Modified modern Sinuglar Buchberger's algorithm. More...
|
|
static BOOLEAN | kMoraUseBucket (kStrategy) |
|
ideal | k_sca_mora (const ideal F, const ideal Q, const intvec *, const intvec *, kStrategy strat, const ring _currRing) |
| Modified modern Sinuglar Mora's algorithm. More...
|
|
◆ NO_BUCKETS
◆ PLURAL_INTERNAL_DECLARATIONS
#define PLURAL_INTERNAL_DECLARATIONS |
Definition at line 2 of file sca.cc.
◆ addLObject()
Definition at line 23 of file sca.cc.
25 if(
h.IsNull())
return;
31 int pos=
posInS(strat, strat->
sl,
h.p,
h.ecart);
63 if(
h.IsNull())
return;
84 if (strat->
sl!=-1) pos =
posInS(strat, strat->
sl,
h.p,
h.ecart);
85 strat->
enterS(
h, pos, strat, -1);
◆ k_sca_bba()
Modified modern Sinuglar Buchberger's algorithm.
Definition at line 368 of file sca.cc.
375 PrintS(
"\n\n<sca_bba>\n\n");
462 withT = ! strat->
homog;
467 #undef HAVE_TAIL_RING
469 #ifdef HAVE_TAIL_RING
491 for (
int iNewElement = strat->
newIdeal; iNewElement <
IDELEMS(tempF); iNewElement++)
493 const poly pSave = tempF->m[iNewElement];
499 const poly p_next =
pNext(pSave);
502 for(
unsigned int i = m_iFirstAltVar;
i <= m_iLastAltVar;
i++ )
513 if( p_new ==
NULL)
continue;
529 pos = strat->
posInL(strat->
L,strat->
Ll,&
h,strat);
538 while (strat->
Ll >= 0)
558 while ((strat->
Ll >= 0)
570 if (strat->
Ll<0)
break;
575 strat->
P = strat->
L[strat->
Ll];
581 if(strat->
P.IsNull())
continue;
593 if(strat->
P.IsNull())
continue;
595 if (strat->
P.p1 ==
NULL)
607 &olddeg,&reduc,strat, red_result);
610 red_result = strat->
red(&strat->
P,strat);
620 strat->
P.GetP(strat->
lmBin);
622 int pos =
posInS(strat,strat->
sl,strat->
P.p,strat->
P.ecart);
627 strat->
P.pCleardenom();
630 strat->
P.p =
redtailBba(&(strat->
P),pos-1,strat, withT);
631 strat->
P.pCleardenom();
638 strat->
P.p =
redtailBba(&(strat->
P),pos-1,strat, withT);
678 strat->
enterS(strat->
P, pos, strat, strat->
tl);
687 const poly pSave = strat->
P.p;
688 const poly p_next =
pNext(pSave);
692 for(
unsigned int i = m_iFirstAltVar;
i <= m_iLastAltVar;
i++ )
702 if( p_new ==
NULL)
continue;
723 pos = strat->
posInL(strat->
L,strat->
Ll,&
h,strat);
737 red_result = strat->
red(&
h,strat);
740 if (red_result != 1)
continue;
743 int pos =
posInS(strat,strat->
sl,
h.p,
h.ecart);
774 pos = strat->
posInL(strat->
L,strat->
Ll,&
h,strat);
835 ideal I = strat->
Shdl;
843 PrintS(
"\n\n</sca_bba>\n\n");
848 return (strat->
Shdl);
◆ k_sca_gr_bba()
Modified Plural's Buchberger's algorithmus.
Definition at line 95 of file sca.cc.
147 PrintS(
"ideal tempF: \n");
149 PrintS(
"ideal tempQ: \n");
176 for(; strat->
Ll >= 0;
202 strat->
P = strat->
L[strat->
Ll];
208 if(strat->
P.IsNull())
continue;
218 if(strat->
P.IsNull())
continue;
228 message((strat->
honey ? strat->
P.ecart : 0) + strat->
P.pFDeg(), &olddeg,&reduc,strat, red_result);
231 strat->
red(&strat->
P,strat);
233 if(strat->
P.IsNull())
continue;
237 const poly save = strat->
P.p;
247 const poly p_next =
pNext(save);
250 for(
unsigned int i = m_iFirstAltVar;
i <= m_iLastAltVar;
i++ )
261 if( tt ==
NULL)
continue;
298 pos = strat->
posInL(strat->
L,strat->
Ll,&
h,strat);
344 ideal I = strat->
Shdl;
358 return (strat->
Shdl);
◆ k_sca_mora()
Modified modern Sinuglar Mora's algorithm.
Definition at line 885 of file sca.cc.
958 #undef HAVE_TAIL_RING
960 #ifdef HAVE_TAIL_RING
972 for (
int iNewElement = strat->
newIdeal; iNewElement <
IDELEMS(tempF); iNewElement++)
975 const poly pSave = tempF->m[iNewElement];
981 const poly p_next =
pNext(pSave);
984 for(
unsigned int i = m_iFirstAltVar;
i <= m_iLastAltVar;
i++ )
996 if( p_new ==
NULL)
continue;
1010 if (strat->
Ll != -1)
1011 pos = strat->
posInL(strat->
L,strat->
Ll,&
h,strat);
1020 while (strat->
Ll >= 0)
1027 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg))
1032 while ((strat->
Ll >= 0)
1033 && (strat->
L[strat->
Ll].p1!=
NULL) && (strat->
L[strat->
Ll].p2!=
NULL)
1034 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg)
1043 if (strat->
Ll<0)
break;
1046 strat->
P = strat->
L[strat->
Ll];
1053 if(strat->
P.IsNull())
continue;
1065 if (strat->
P.p1 ==
NULL)
1072 if (!strat->
P.IsNull())
1076 message(strat->
P.ecart+strat->
P.GetpFDeg(),&olddeg,&reduc,strat, red_result);
1078 red_result = strat->
red(&strat->
P,strat);
1081 if (! strat->
P.IsNull())
1090 strat->
P.p =
redtail(&(strat->
P),strat->
sl,strat);
1098 strat->
P.pCleardenom();
1106 posInS(strat,strat->
sl,strat->
P.p, strat->
P.ecart),
1115 const poly pSave = strat->
P.p;
1116 const poly p_next =
pNext(pSave);
1119 for(
unsigned int i = m_iFirstAltVar;
i <= m_iLastAltVar;
i++ )
1131 if( p_new ==
NULL)
continue;
1145 if (strat->
Ll != -1)
1146 pos = strat->
posInL(strat->
L,strat->
Ll,&
h,strat);
1153 memset(&strat->
P,0,
sizeof(strat->
P));
1209 return (strat->
Shdl);
◆ kMoraUseBucket()
Definition at line 858 of file sca.cc.
861 #ifdef MORA_USE_BUCKETS
870 if ((strat->homog || strat->honey) && !strat->syzComp)
877 if (strat->honey && !strat->syzComp)
◆ nc_gr_initBba()
void nc_gr_initBba |
( |
ideal |
F, |
|
|
kStrategy |
strat |
|
) |
| |
nc_gr_initBba is needed for sca_gr_bba and gr_bba.
Definition at line 952 of file gr_kstd2.cc.
987 for(jj=
currRing->real_var_start;jj<=currRing->real_var_end;jj++)
989 if(
pGetExp(F->m[ii],jj)>0) { is_rat_id=
TRUE;
break; }
991 if (is_rat_id)
break;
void updateL(kStrategy strat)
void kStratInitChangeTailRing(kStrategy strat)
void initBuchMoraCrit(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:
void pNorm(poly p, const ring R=currRing)
void(* enterS)(LObject &h, int pos, kStrategy strat, int atR)
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced
void rDebugPrint(const ring r)
void rChangeCurrRing(ring r)
#define TEST_OPT_DEGBOUND
void reorderL(kStrategy strat)
#define pGetExp(p, i)
Exponent.
poly redtail(LObject *L, int end_pos, kStrategy strat)
int(* posInLOld)(const LSet Ls, const int Ll, LObject *Lo, const kStrategy strat)
BOOLEAN p_ComparePolys(poly p1, poly p2, const ring r)
returns TRUE if p1 is a skalar multiple of p2 assume p1 != NULL and p2 != NULL
#define TEST_OPT_MULTBOUND
void updateResult(ideal r, ideal Q, kStrategy strat)
int posInT110(const TSet set, const int length, LObject &p)
ideal kInterRedOld(ideal F, ideal Q)
void p_wrp(poly p, ring lmRing, ring tailRing)
#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)
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
void nc_gr_initBba(ideal F, kStrategy strat)
nc_gr_initBba is needed for sca_gr_bba and gr_bba.
int(* test_PosInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
void mu(int **points, int sizePoints)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
void initEcartPairBba(LObject *Lp, poly, poly, int, int)
static short rVar(const ring r)
#define rVar(r) (r->N)
int(* test_PosInT)(const TSet T, const int tl, LObject &h)
#define TEST_OPT_INTSTRATEGY
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
void firstUpdate(kStrategy strat)
int redGrFirst(LObject *h, kStrategy strat)
void enterSBba(LObject &p, int atS, kStrategy strat, int atR)
static BOOLEAN kMoraUseBucket(kStrategy)
#define TEST_OPT_NOT_BUCKETS
void initEcartNormal(TObject *h)
void PrintS(const char *s)
#define omFreeSize(addr, size)
int redGrRatGB(LObject *h, kStrategy strat)
void message(int i, int *reduc, int *olddeg, kStrategy strat, int red_result)
int redEcart(LObject *h, kStrategy strat)
static short scaFirstAltVar(ring r)
static BOOLEAN rField_is_Ring(const ring r)
void completeReduce(kStrategy strat, BOOLEAN withT)
int(* posInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
void exitBuchMora(kStrategy strat)
static BOOLEAN rIsRatGRing(const ring r)
void initBuchMora(ideal F, ideal Q, kStrategy strat)
int posInL10(const LSet set, const int length, LObject *p, const kStrategy strat)
static bool id_IsSCAHomogeneous(const ideal id, const intvec *wCx, const intvec *wCy, const ring r)
poly p_Cleardenom(poly p, const ring r)
void initBuchMoraPos(kStrategy strat)
void addLObject(LObject &h, kStrategy &strat)
poly sca_pp_Mult_xi_pp(short i, const poly pPoly, const ring rRing)
void messageStat(int hilbcount, kStrategy strat)
void kDebugPrint(kStrategy strat)
void initBba(kStrategy strat)
KINLINE poly redtailBba(poly p, int pos, kStrategy strat, BOOLEAN normalize)
void rWrite(ring r, BOOLEAN details)
void(* initEcartPair)(LObject *h, poly f, poly g, int ecartF, int ecartG)
static short scaLastAltVar(ring r)
void initMora(ideal F, kStrategy strat)
ideal id_KillSquares(const ideal id, const short iFirstAltVar, const short iLastAltVar, const ring r, const bool bSkipZeroes)
ideal SCAQuotient(const ring r)
int redFirst(LObject *h, kStrategy strat)
void cancelunit(LObject *L, BOOLEAN inNF)
void enterL(LSet *set, int *length, int *LSetmax, LObject p, int at)
void deleteInL(LSet set, int *length, int j, kStrategy strat)
void(* initEcart)(TObject *L)
int(* red)(LObject *L, kStrategy strat)
void initEcartBBA(TObject *h)
void enterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
static poly nc_CreateSpoly(const poly p1, const poly p2, const ring r)
int(* posInT)(const TSet T, const int tl, LObject &h)
static void kDeleteLcm(LObject *P)
void initEcartPairMora(LObject *Lp, poly, poly, int ecartF, int ecartG)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
static bool rIsSCA(const ring r)
void enterT(LObject &p, kStrategy strat, int atT)
int scMult0Int(ideal S, ideal Q, const ring tailRing)
void updateLHC(kStrategy strat)