36 for (j=0; j<=o->
tl; j++)
73 for (j=0; j<=o->
Ll; j++)
86 if (o->
L[j].lcm!=
NULL)
111 l[
j].i_r1=n->
T[
i].i_r;
133 l[
j].i_r2=n->
T[
i].i_r;
139 l[
j].ecart=o->
L[
j].ecart;
141 l[
j].length=o->
L[
j].length;
143 l[
j].pLength=o->
L[
j].pLength;
145 l[
j].sev=o->
L[
j].sev;
146 l[
j].i_r = o->
L[
j].i_r;
251 fac_copy=
idInit(fac_elems,1);
257 Print(
"%d factors:\n",fac_elems);
260 while(ii>0) { ii--;
pWrite(fac->m[ii]); }
267 while(ii>0) {
PrintS(
"F"); ii--; }
294 for (si=strat->
sl; si>0; si--)
308 for(i=strat->
tl;i>=0;i--)
344 if (n->
sl==-1) pos=0;
377 ideal r=
idAdd(n->
D,fac_copy);
383 Print(
"new s(%d)->D:\n",n->
nr);
389 fac_copy->m[
i]=
pCopy(fac->m[i]);
398 if (n->
D->m[j]!=
NULL)
405 Print(
"empty set s(%d) because D[%d]:",n->
nr,j);
415 if (n->
S[i]==n->
T[n->
tl].p)
443 if ((n->
sl>=0)&&(n->
S[0]!=
NULL))
450 Print(
"empty set because:L[%p]\n",(
void *)Lj);
459 if (n->
S[i]==n->
T[n->
tl].p)
484 if ((strat->
Ll>=0) && (strat->
sl>=0))
break;
495 if ((strat->
Ll==-1) && (strat->
sl>=0))
500 while (strat->
Ll >= 0)
518 strat->
P = strat->
L[strat->
Ll];
541 red_result = strat->
red(&strat->
P,strat);
542 if (strat->
P.p !=
NULL)
568 fac->m[0]=strat->
P.p;
603 if (n->
sl==-1) pos=0;
641 for(ii=0; ii<=n->
tl; ii++)
643 if (n->
R[ii]->p==n->
L[i].p1) { n->
L[
i].i_r1=ii;
break; }
646 for(ii=0; ii<=n->
tl; ii++)
648 if (n->
R[ii]->p==n->
L[i].p2) { n->
L[
i].i_r2=ii;
break; }
664 ideal r=
idAdd(n->
D,fac_copy);
676 fac_copy->m[
i]=
pCopy(fac->m[i]);
685 if (n->
D->m[j]!=
NULL)
692 Print(
"empty set s(%d) because: D[%d]:", n->
nr,j);
704 if (n->
S[i]==n->
T[n->
tl].p)
732 if ((n->
sl>=0)&&(n->
S[0]!=
NULL))
740 Print(
"empty set s(%d) because:L[%d]\n",n->
nr,Lj->nr);
742 Print(
"empty set s(%d) because:\n",n->
nr);
752 if (n->
S[i]==n->
T[n->
tl].p)
781 if ((strat->
Ll==-1) && (strat->
sl>=0))
804 return (strat->
Shdl);
859 PrintS(
"====================================\n");
882 ideal_list LL=(ideal_list)
omAlloc(
sizeof(*LL));
895 ideal_list Lj=L->
next;
896 ideal_list Lj_prev=L;
908 Print(
"empty set L[%p] because:L[%p]\n",(
void*)Lj,(
void*)Li);
916 if (Lj==L) Lj_prev=
NULL;
920 while(Lj_prev->next!=Lj) Lj_prev=Lj_prev->next;
931 if (Lj!=
NULL) Lj=Lj->next;
945 orgstrat=strat->
next;
949 if ((delete_w)&&(w!=
NULL)&&(*w!=
NULL))
delete *w;
int(* posInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
const CanonicalForm int s
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
#define TEST_OPT_DEGBOUND
void initBuchMoraPos(kStrategy strat)
static BOOLEAN idHomIdeal(ideal id, ideal Q=NULL)
void message(int i, int *reduc, int *olddeg, kStrategy strat, int red_result)
#define idDelete(H)
delete an ideal
ideal_list kStdfac(ideal F, ideal Q, tHomog h, intvec **w, ideal D)
void messageStat(int hilbcount, kStrategy strat)
Compatiblity layer for legacy polynomial operations (over currRing)
void initBuchMora(ideal F, ideal Q, kStrategy strat)
#define omFreeSize(addr, size)
void enterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
KINLINE poly ksOldCreateSpoly(poly p1, poly p2, poly spNoether, ring r)
void deleteInS(int i, kStrategy strat)
void(* initEcartPair)(LObject *h, poly f, poly g, int ecartF, int ecartG)
void initBba(kStrategy strat)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
int(* red)(LObject *L, kStrategy strat)
KINLINE poly redtailBba(poly p, int pos, kStrategy strat, BOOLEAN normalize)
int(* posInT)(const TSet T, const int tl, LObject &h)
void iiWriteMatrix(matrix im, const char *n, int dim, const ring r, int spaces)
set spaces to zero by default
static BOOLEAN rField_has_simple_inverse(const ring r)
void enterT(LObject &p, kStrategy strat, int atT)
void deleteInL(LSet set, int *length, int j, kStrategy strat)
static BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
void(* initEcart)(TObject *L)
void(* enterOnePair)(int i, poly p, int ecart, int isFromQ, kStrategy strat, int atR)
#define TEST_OPT_INTSTRATEGY
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
void pSetDegProcs(ring r, pFDegProc new_FDeg, pLDegProc new_lDeg)
kStrategy kStratCopy(kStrategy o)
static void copyL(kStrategy o, kStrategy n)
#define pLmInit(p)
like pInit, except that expvector is initialized to that of p, p must be != NULL
void(* enterS)(LObject &h, int pos, kStrategy strat, int atR)
void initBuchMoraCrit(kStrategy strat)
void PrintS(const char *s)
int(* posInLOld)(const LSet Ls, const int Ll, LObject *Lo, const kStrategy strat)
static unsigned pLength(poly a)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
ideal idInit(int idsize, int rank)
initialise an ideal / module
void(* chainCrit)(poly p, int ecart, kStrategy strat)
static void completeReduceFac(kStrategy strat, ideal_list FL)
void pNorm(poly p, const ring R=currRing)
#define pInit()
allocates a new monomial and initializes everything to 0
int posInS(const kStrategy strat, const int length, const poly p, const int ecart_p)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
long kModDeg(poly p, ring r)
static poly p_LmInit(poly p, const 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 ...
BOOLEAN k_factorize(poly p, ideal &rfac, ideal &fac_copy)
ideal singclap_factorize(poly f, intvec **v, int with_exps, const ring r)
ideal idAdd(ideal h1, ideal h2)
h1 + h2
static LSet initL(int nr=setmaxL)
ideal bbafac(ideal, ideal Q, intvec *, kStrategy strat, ideal_list FL)
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
poly p_Cleardenom(poly p, const ring r)
void exitBuchMora(kStrategy strat)
static void copyT(kStrategy o, kStrategy n)
#define pCopy(p)
return a copy of the poly