508 #ifdef USE_HEURISTIC1 510 int there_are_superfluous=0;
516 if ((nextPairs==
NULL) || (howmuch==0))
return;
518 while ((ks>0) && (syzstr->
res[
index+1]->m[ks-1]==
NULL)) ks--;
521 ((redset[kres-1].
p==
NULL) || (redset[kres-1].order>actord))) kres--;
522 while ((kres<(*syzstr->
Tl)[
index]) &&
523 (redset[kres-1].order!=0) && (redset[kres-1].order<=actord)) kres++;
533 if (actord<temp1_hilb->
length())
535 toGo = (*temp1_hilb)[actord];
537 Print(
"\nStze toGo im Modul %d und Grad %d auf: %d\n",1,actord-1,toGo);
548 Print(
"\nStze toGo im Modul %d und Grad %d auf: %d\n",
index,actord-1,toGo);
572 nextPairs[kk].p = nextPairs[kk].syz = nextPairs[kk].lcm =
NULL;
575 #ifdef USE_HEURISTIC2 587 if (spl1!=
NULL)
delete spl1;
591 if ((tso.p1!=
NULL) && (tso.p2!=
NULL))
599 PrintS(
"reduziere Paar mit: \n");
614 && ((redset[
j].ind1!=tso.ind1) || (redset[
j].ind2!=tso.ind2)))
628 redset[
j].length,
NULL);
652 PrintS(
"erhalte Paar mit: \n");
660 Print(
" mit index %d, %d ",tso.ind1,tso.ind2);
693 if (actord-
index>*maxdeg) *maxdeg = actord-
index;
701 #ifdef USE_HEURISTIC1 702 if (there_are_superfluous>=0)
709 if (tso.ind2==nextPairs[jj].ind2)
713 for (j2=
j;j2<spl1->
length()-1;j2++)
715 (*spl1)[j2] = (*spl1)[j2+1];
725 if (there_are_superfluous==0) there_are_superfluous = 1;
737 tso.p = tso.syz = tso.lcm =
NULL;
747 Print(
"naechstes i ist: %d",
i);
750 #ifdef USE_HEURISTIC1 751 if ((kk<0) && (there_are_superfluous>0))
755 spl1 = ivStrip(spl2);
759 there_are_superfluous = -1;
764 #ifdef USE_HEURISTIC2 765 if ((kk<0) && (toGo>0))
780 if (spl3!=
NULL)
delete spl3;
void kBucketClear(kBucket_pt bucket, poly *p, int *length)
void kBucketInit(kBucket_pt bucket, poly lm, int length)
number kBucketPolyRed(kBucket_pt bucket, poly p1, int l1, poly spNoether)
const poly kBucketGetLm(kBucket_pt bucket)
KINLINE poly ksOldCreateSpoly(poly p1, poly p2, poly spNoether, ring r)
void sySPRedSyz(syStrategy syzstr, sSObject redWith, poly q=NULL)
#define pLmDivisibleBy(a, b)
like pDivisibleBy, except that it is assumed that a!=NULL, b!=NULL
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
intvec * hHstdSeries(ideal S, intvec *modulweight, intvec *wdegree, ideal Q, ring tailRing)
void PrintS(const char *s)
static intvec * syLinStrat2(SSet nextPairs, syStrategy syzstr, int howmuch, int index, intvec **secondpairs)
static poly syRed_Hilb(poly toRed, syStrategy syzstr, int index)
static int index(p_Length length, p_Ord ord)
#define __p_Mult_nn(p, n, r)
long ** ShiftedComponents
void syEnlargeFields(syStrategy syzstr, int index)
void pNorm(poly p, const ring R=currRing)
void show(int mat=0, int spaces=0) const
static BOOLEAN length(leftv result, leftv arg)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#define IMATELEM(M, I, J)
void syDeletePair(SObject *so)
static void syHalfPair(poly syz, int newEl, syStrategy syzstr, int index)