 |
My Project
debian-1:4.1.1-p2+ds-4build1
|
Go to the documentation of this file. 1 #define PLURAL_INTERNAL_DECLARATIONS
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);
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;
274 strat->initEcart(&
h);
298 pos = strat->posInL(strat->L,strat->Ll,&
h,strat);
301 enterL(&strat->L,&strat->Ll,&strat->Lmax,
h,pos);
344 ideal I = strat->
Shdl;
358 return (strat->
Shdl);
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);
675 enterpairs(strat->P.p,strat->sl,strat->P.ecart,pos,strat, strat->tl);
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;
717 strat->initEcart(&
h);
723 pos = strat->posInL(strat->L,strat->Ll,&
h,strat);
725 enterL(&strat->L,&strat->Ll,&strat->Lmax,
h,pos);
732 strat->initEcart(&
h);
734 h.PrepareRed(strat->use_buckets);
737 red_result = strat->red(&
h,strat);
740 if (red_result != 1)
continue;
743 int pos =
posInS(strat,strat->sl,
h.p,
h.ecart);
769 strat->initEcart(&
h);
774 pos = strat->posInL(strat->L,strat->Ll,&
h,strat);
776 enterL(&strat->L,&strat->Ll,&strat->Lmax,
h,pos);
835 ideal I = strat->
Shdl;
843 PrintS(
"\n\n</sca_bba>\n\n");
848 return (strat->
Shdl);
855 #ifdef MORA_USE_BUCKETS
861 #ifdef MORA_USE_BUCKETS
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),
1116 const poly pSave = strat->
P.p;
1117 const poly p_next =
pNext(pSave);
1120 for(
unsigned int i = m_iFirstAltVar;
i <= m_iLastAltVar;
i++ )
1132 if( p_new ==
NULL)
continue;
1146 if (strat->
Ll != -1)
1147 pos = strat->
posInL(strat->
L,strat->
Ll,&
h,strat);
1154 memset(&strat->
P,0,
sizeof(strat->
P));
1210 return (strat->
Shdl);
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)
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)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
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.
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)
static BOOLEAN kMoraUseBucket(kStrategy)
#define TEST_OPT_NOT_BUCKETS
void PrintS(const char *s)
#define omFreeSize(addr, size)
void message(int i, int *reduc, int *olddeg, kStrategy strat, int red_result)
int redEcart(LObject *h, kStrategy strat)
static short scaFirstAltVar(ring r)
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.
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)
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)
static short scaLastAltVar(ring r)
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.
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 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 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)