512 #ifdef USE_HEURISTIC1 514 int there_are_superfluous=0;
520 if ((nextPairs==
NULL) || (howmuch==0))
return;
521 while ((k>0) && (syzstr->
res[
index]->m[k-1]==
NULL)) k--;
522 while ((ks>0) && (syzstr->
res[
index+1]->m[ks-1]==
NULL)) ks--;
525 ((redset[kres-1].
p==
NULL) || (redset[kres-1].order>actord))) kres--;
526 while ((kres<(*syzstr->
Tl)[
index]) &&
527 (redset[kres-1].order!=0) && (redset[kres-1].order<=actord)) kres++;
537 if (actord<temp1_hilb->length())
539 toGo = (*temp1_hilb)[actord];
541 Print(
"\nStze toGo im Modul %d und Grad %d auf: %d\n",1,actord-1,toGo);
552 Print(
"\nStze toGo im Modul %d und Grad %d auf: %d\n",
index,actord-1,toGo);
576 nextPairs[kk].p = nextPairs[kk].syz = nextPairs[kk].lcm =
NULL;
579 #ifdef USE_HEURISTIC2 591 if (spl1!=
NULL)
delete spl1;
595 if ((tso.p1!=
NULL) && (tso.p2!=
NULL))
603 PrintS(
"reduziere Paar mit: \n");
618 && ((redset[j].ind1!=tso.ind1) || (redset[j].ind2!=tso.ind2)))
632 redset[j].length,
NULL);
656 PrintS(
"erhalte Paar mit: \n");
664 Print(
" mit index %d, %d ",tso.ind1,tso.ind2);
697 if (actord-
index>*maxdeg) *maxdeg = actord-
index;
705 #ifdef USE_HEURISTIC1 706 if (there_are_superfluous>=0)
713 if (tso.ind2==nextPairs[jj].ind2)
717 for (j2=j;j2<spl1->
length()-1;j2++)
719 (*spl1)[j2] = (*spl1)[j2+1];
729 if (there_are_superfluous==0) there_are_superfluous = 1;
741 tso.p = tso.syz = tso.lcm =
NULL;
751 Print(
"naechstes i ist: %d",i);
754 #ifdef USE_HEURISTIC1 755 if ((kk<0) && (there_are_superfluous>0))
759 spl1 = ivStrip(spl2);
763 there_are_superfluous = -1;
768 #ifdef USE_HEURISTIC2 769 if ((kk<0) && (toGo>0))
784 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)
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
#define IMATELEM(M, I, J)
void syDeletePair(SObject *so)
static void syHalfPair(poly syz, int newEl, syStrategy syzstr, int index)