 |
My Project
UNKNOWN_GIT_VERSION
|
Go to the documentation of this file.
7 #define PLURAL_INTERNAL_DECLARATIONS
45 return(nc_ReduceSPoly(p1,
p_Copy(p2,r),r));
114 (*h).ecart = d-(*h).FDeg;
133 && ((d >= reddeg) || (pass > strat->
LazyPass))
136 at = strat->
posInL(strat->
L,strat->
Ll,
h,strat);
182 for (
i=
currRing->real_var_start;i<=currRing->real_var_end;
i++)
258 Print(
" with S[%d]= ",c_j);
294 (*h).ecart = d-(*h).FDeg;
298 c_j=-1; c_e=-2; c_p=
NULL;
315 if ((c_j<0)||(c_e>=0))
332 if ((c_j<0)||(c_e>a_e))
577 if ((strat->
Ll >= 0) && ((d > reddeg) || (pass > strat->
LazyPass)))
638 int i,
j,at,reddeg,d,pass,ei;
654 ei = strat->
T[
j].ecart;
666 if ((!
BTEST1(20)) && (ei <= (*h).ecart))
676 ei = strat->
T[
i].ecart;
693 at = strat->
posInL(strat->
L,strat->
Ll,
h,strat);
732 if (ei <= (*h).ecart)
756 if ((strat->
Ll >= 0) && ((d > reddeg) || (pass > strat->
LazyPass)))
758 at = strat->
posInL(strat->
L,strat->
Ll,
h,strat);
774 Print(
" degree jumped: -> L%d\n",at);
816 int j,jbest,at,reddeg,d,pass;
834 p=spSpolyCreate(strat->
T[
j].p,(*h).p,strat->
kNoether);
858 ph=spSpolyCreate(strat->
T[
j].p,(*h).p,strat->
kNoether);
914 if ((strat->
Ll >= 0) && ((pass > strat->
LazyPass) || (d > reddeg)))
916 at = strat->
posInL(strat->
L,strat->
Ll,
h,strat);
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;
1037 PrintS(
"<gnc_gr_bba>\n");
1078 while (strat->
Ll >= 0)
1097 strat->
P = strat->
L[strat->
Ll];
1101 if (strat->
P.p !=
NULL)
1119 #ifdef HAVE_RATGRING
1143 if (strat->
P.p !=
NULL)
1147 &olddeg,&reduc,strat, red_result);
1159 strat->red(&strat->P,strat);
1168 if (strat->
P.p !=
NULL)
1177 #ifdef HAVE_RATGRING
1183 PrintS(
"unit element detected:");
1187 strat->
P.p =
pOne();
1192 int pos=
posInS(strat,strat->
sl,strat->
P.p, strat->
P.ecart);
1198 #ifdef HAVE_RATGRING
1227 if (strat->
sl==-1) pos=0;
1228 else pos=
posInS(strat,strat->
sl,strat->
P.p,strat->
P.ecart);
1230 strat->
enterS(strat->
P,pos,strat,-1);
1283 PrintS(
"</gnc_gr_bba>\n");
1288 return (strat->
Shdl);
1295 WarnS(
"Sorry, non-commutative mora is not yet implemented!");
KINLINE void clearS(poly p, unsigned long p_sev, int *at, int *k, kStrategy strat)
static int si_min(const int a, const int b)
#define pDivisibleBy(a, b)
returns TRUE, if leading monom of a divides leading monom of b i.e., if there exists a expvector c > ...
poly gnc_ReduceSpolyNew(const poly p1, poly p2, const ring r)
#define pIsConstant(p)
like above, except that Comp might be != 0
void initBuchMoraCrit(kStrategy strat)
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)
int posInL0(const LSet set, const int length, LObject *p, const kStrategy)
void rChangeCurrRing(ring r)
#define TEST_OPT_DEGBOUND
poly nc_rat_ReduceSpolyNew(const poly p1, poly p2, int ishift, const ring r)
#define pGetExp(p, i)
Exponent.
void updateResult(ideal r, ideal Q, kStrategy strat)
int posInT110(const TSet set, const int length, LObject &p)
void p_wrp(poly p, ring lmRing, ring tailRing)
int posInS(const kStrategy strat, const int length, const poly p, const int ecart_p)
static BOOLEAN p_LmDivisibleBy(poly a, poly b, const ring r)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
static poly p_Copy(poly p, const ring r)
returns a copy of p
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)
void nc_gr_initBba(ideal F, kStrategy strat)
nc_gr_initBba is needed for sca_gr_bba and gr_bba.
#define TEST_OPT_INTSTRATEGY
BOOLEAN p_LmIsConstantRat(const poly p, const ring r)
int redGrFirst(LObject *h, kStrategy strat)
void enterSBba(LObject &p, int atS, kStrategy strat, int atR)
void initEcartNormal(TObject *h)
void PrintS(const char *s)
int redGrRatGB(LObject *h, kStrategy strat)
void message(int i, int *reduc, int *olddeg, kStrategy strat, int red_result)
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)
poly p_Cleardenom(poly p, const ring r)
void initBuchMoraPos(kStrategy strat)
void messageStat(int hilbcount, kStrategy strat)
static poly nc_ReduceSpoly(const poly p1, poly p2, const ring r)
poly nc_rat_CreateSpoly(poly pp1, poly pp2, int ishift, const ring r)
poly nc_CreateShortSpoly(poly p1, poly p2, const ring r)
int posInL11(const LSet set, const int length, LObject *p, const kStrategy)
static void p_Delete(poly *p, const ring r)
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)
ideal k_gnc_gr_mora(const ideal F, const ideal Q, const intvec *, const intvec *, kStrategy strat, const ring _currRing)
ideal k_gnc_gr_bba(const ideal F, const ideal Q, const intvec *, const intvec *, kStrategy strat, const ring _currRing)
static long p_Totaldegree(poly p, const ring r)
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)
#define pLmCmp(p, q)
returns 0|1|-1 if p=q|p>q|p<q w.r.t monomial ordering
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)
#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)
void ratGB_divide_out(poly p)
void enterT(LObject &p, kStrategy strat, int atT)
static BOOLEAN p_LmDivisibleByPart(poly a, poly b, const ring r, const int start, const int end)