Data Structures | Macros | Typedefs | Functions | Variables
hutil.h File Reference

Go to the source code of this file.

Data Structures

struct  monh
 
struct  indlist
 

Macros

#define LEN_MON   (sizeof(scfmon) + sizeof(int))
 

Typedefs

typedef omBin_t * omBin
 
typedef polyrec * poly
 
typedef polypolyset
 
typedef intscmon
 
typedef scmonscfmon
 
typedef intvarset
 
typedef monh * monp
 
typedef monpmonf
 
typedef indlist * indset
 

Functions

void hDelete (scfmon ev, int ev_length)
 
void hComp (scfmon exist, int Nexist, int ak, scfmon stc, int *Nstc)
 
void hSupp (scfmon stc, int Nstc, varset var, int *Nvar)
 
void hOrdSupp (scfmon stc, int Nstc, varset var, int Nvar)
 
void hStaircase (scfmon stc, int *Nstc, varset var, int Nvar)
 
void hRadical (scfmon rad, int *Nrad, int Nvar)
 
void hLexS (scfmon stc, int Nstc, varset var, int Nvar)
 
void hLexR (scfmon rad, int Nrad, varset var, int Nvar)
 
void hPure (scfmon stc, int a, int *Nstc, varset var, int Nvar, scmon pure, int *Npure)
 
void hElimS (scfmon stc, int *e1, int a2, int e2, varset var, int Nvar)
 
void hElimR (scfmon rad, int *e1, int a2, int e2, varset var, int Nvar)
 
void hLex2S (scfmon stc, int e1, int a2, int e2, varset var, int Nvar, scfmon w)
 
void hLex2R (scfmon rad, int e1, int a2, int e2, varset var, int Nvar, scfmon w)
 
void hStepS (scfmon stc, int Nstc, varset var, int Nvar, int *a, int *x)
 
void hStepR (scfmon rad, int Nrad, varset var, int Nvar, int *a)
 
monf hCreate (int Nvar)
 
void hKill (monf xmem, int Nvar)
 
scfmon hGetmem (int lm, scfmon old, monp monmem)
 
scmon hGetpure (scmon p)
 
void hDimSolve (scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
 
void hIndMult (scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
 
void hIndAllMult (scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
 
void hDegreeSeries (intvec *s1, intvec *s2, int *co, int *mu)
 
scfmon hInit (ideal S, ideal Q, int *Nexist, ring tailRing)
 
void slicehilb (ideal I)
 

Variables

ring currRing
 Widely used global variable which specifies the current polynomial ring for Singular interpreter and legacy implementatins. : one should avoid using it in newer designs, for example due to possible problems in parallelization with threads. More...
 
omBin indlist_bin
 
scfmon hexist
 
scfmon hstc
 
scfmon hrad
 
scfmon hwork
 
scmon hpure
 
scmon hpur0
 
varset hvar
 
varset hsel
 
int hNexist
 
int hNstc
 
int hNrad
 
int hNvar
 
int hNpure
 
monf stcmem
 
monf radmem
 
int hisModule
 
indset ISet
 
indset JSet
 
int hCo
 
int hMu
 
int hMu2
 

Data Structure Documentation

struct monrec

Definition at line 28 of file hutil.h.

Data Fields
int a
scfmon mo
struct sindlist

Definition at line 36 of file hutil.h.

Data Fields
indset nx
intvec * set

Macro Definition Documentation

#define LEN_MON   (sizeof(scfmon) + sizeof(int))

Definition at line 42 of file hutil.h.

Typedef Documentation

typedef indlist* indset

Definition at line 35 of file hutil.h.

typedef monp* monf

Definition at line 27 of file hutil.h.

typedef monh* monp

Definition at line 26 of file hutil.h.

typedef omBin_t* omBin

Definition at line 12 of file hutil.h.

typedef polyrec* poly

Definition at line 16 of file hutil.h.

typedef poly* polyset

Definition at line 17 of file hutil.h.

typedef scmon* scfmon

Definition at line 22 of file hutil.h.

typedef int* scmon

Definition at line 21 of file hutil.h.

typedef int* varset

Definition at line 23 of file hutil.h.

Function Documentation

void hComp ( scfmon  exist,
int  Nexist,
int  ak,
scfmon  stc,
int Nstc 
)

Definition at line 160 of file hutil.cc.

161 {
162  int k = 0;
163  scfmon ex = exist, co = stc;
164  int i;
165 
166  for (i = Nexist; i>0; i--)
167  {
168  if (((**ex) == 0) || ((**ex) == ak))
169  {
170  *co = *ex;
171  co++;
172  k++;
173  }
174  ex++;
175  }
176  *Nstc = k;
177 }
scmon * scfmon
Definition: hutil.h:22
int k
Definition: cfEzgcd.cc:93
int i
Definition: cfEzgcd.cc:123
strat ak
Definition: myNF.cc:321
monf hCreate ( int  Nvar)

Definition at line 1002 of file hutil.cc.

1003 {
1004  monf xmem;
1005  int i;
1006  xmem = (monf)omAlloc((Nvar + 1) * sizeof(monp));
1007  for (i = Nvar; i>0; i--)
1008  {
1009  xmem[i] = (monp)omAlloc(LEN_MON);
1010  xmem[i]->mo = NULL;
1011  }
1012  return xmem;
1013 }
monp * monf
Definition: hutil.h:27
#define omAlloc(size)
Definition: omAllocDecl.h:210
#define LEN_MON
Definition: hutil.h:42
monh * monp
Definition: hutil.h:26
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
void hDegreeSeries ( intvec s1,
intvec s2,
int co,
int mu 
)

Definition at line 1341 of file hilb.cc.

1342 {
1343  int m, i, j, k;
1344  *co = *mu = 0;
1345  if ((s1 == NULL) || (s2 == NULL))
1346  return;
1347  i = s1->length();
1348  j = s2->length();
1349  if (j > i)
1350  return;
1351  m = 0;
1352  for(k=j-2; k>=0; k--)
1353  m += (*s2)[k];
1354  *mu = m;
1355  *co = i - j;
1356 }
void mu(int **points, int sizePoints)
int length() const
Definition: intvec.h:85
int k
Definition: cfEzgcd.cc:93
int j
Definition: myNF.cc:70
int m
Definition: cfEzgcd.cc:119
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
void hDelete ( scfmon  ev,
int  ev_length 
)

Definition at line 146 of file hutil.cc.

147 {
148  int i;
149 
150  if (ev_length>0)
151  {
152  for (i=ev_length-1;i>=0;i--)
153  omFreeSize(hsecure[i],((currRing->N)+1)*sizeof(int));
154  omFreeSize(hsecure, ev_length*sizeof(scmon));
155  omFreeSize(ev, ev_length*sizeof(scmon));
156  }
157 }
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
static scfmon hsecure
Definition: hutil.cc:32
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
void hDimSolve ( scmon  pure,
int  Npure,
scfmon  rad,
int  Nrad,
varset  var,
int  Nvar 
)

Definition at line 29 of file hdegree.cc.

31 {
32  int dn, iv, rad0, b, c, x;
33  scmon pn;
34  scfmon rn;
35  if (Nrad < 2)
36  {
37  dn = Npure + Nrad;
38  if (dn < hCo)
39  hCo = dn;
40  return;
41  }
42  if (Npure+1 >= hCo)
43  return;
44  iv = Nvar;
45  while(pure[var[iv]]) iv--;
46  hStepR(rad, Nrad, var, iv, &rad0);
47  if (rad0!=0)
48  {
49  iv--;
50  if (rad0 < Nrad)
51  {
52  pn = hGetpure(pure);
53  rn = hGetmem(Nrad, rad, radmem[iv]);
54  hDimSolve(pn, Npure + 1, rn, rad0, var, iv);
55  b = rad0;
56  c = Nrad;
57  hElimR(rn, &rad0, b, c, var, iv);
58  hPure(rn, b, &c, var, iv, pn, &x);
59  hLex2R(rn, rad0, b, c, var, iv, hwork);
60  rad0 += (c - b);
61  hDimSolve(pn, Npure + x, rn, rad0, var, iv);
62  }
63  else
64  {
65  hDimSolve(pure, Npure, rad, Nrad, var, iv);
66  }
67  }
68  else
69  hCo = Npure + 1;
70 }
void hDimSolve(scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
Definition: hdegree.cc:29
void hElimR(scfmon rad, int *e1, int a2, int e2, varset var, int Nvar)
Definition: hutil.cc:748
scfmon hwork
Definition: hutil.cc:19
scfmon hGetmem(int lm, scfmon old, monp monmem)
Definition: hutil.cc:1029
int hCo
Definition: hdegree.cc:22
scmon hGetpure(scmon p)
Definition: hutil.cc:1058
scmon * scfmon
Definition: hutil.h:22
void hStepR(scfmon rad, int Nrad, varset var, int Nvar, int *a)
Definition: hutil.cc:980
void hPure(scfmon stc, int a, int *Nstc, varset var, int Nvar, scmon pure, int *Npure)
Definition: hutil.cc:627
int * scmon
Definition: hutil.h:21
void hLex2R(scfmon rad, int e1, int a2, int e2, varset var, int Nvar, scfmon w)
Definition: hutil.cc:886
monf radmem
Definition: hutil.cc:24
Variable x
Definition: cfModGcd.cc:4023
const poly b
Definition: syzextra.cc:213
void hElimR ( scfmon  rad,
int e1,
int  a2,
int  e2,
varset  var,
int  Nvar 
)

Definition at line 748 of file hutil.cc.

749 {
750  int nc = *e1, z = 0, i, j, k, k1;
751  scmon n, o;
752  if (!nc || (a2 == e2))
753  return;
754  j = 0;
755  i = a2;
756  o = rad[i];
757  n = rad[0];
758  k = Nvar;
759  loop
760  {
761  k1 = var[k];
762  if (o[k1] && !n[k1])
763  {
764  k = Nvar;
765  i++;
766  if (i < e2)
767  o = rad[i];
768  else
769  {
770  j++;
771  if (j < nc)
772  {
773  i = a2;
774  o = rad[i];
775  n = rad[j];
776  }
777  else
778  {
779  if (z!=0)
780  {
781  *e1 -= z;
782  hShrink(rad, 0, nc);
783  }
784  return;
785  }
786  }
787  }
788  else
789  {
790  k--;
791  if (!k)
792  {
793  rad[j] = NULL;
794  z++;
795  j++;
796  if (j < nc)
797  {
798  i = a2;
799  o = rad[i];
800  n = rad[j];
801  k = Nvar;
802  }
803  else
804  {
805  if (z!=0)
806  {
807  *e1 -= z;
808  hShrink(rad, 0, nc);
809  }
810  return;
811  }
812  }
813  }
814  }
815 }
loop
Definition: myNF.cc:98
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
static void hShrink(scfmon co, int a, int Nco)
Definition: hutil.cc:303
int k
Definition: cfEzgcd.cc:93
int j
Definition: myNF.cc:70
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
void hElimS ( scfmon  stc,
int e1,
int  a2,
int  e2,
varset  var,
int  Nvar 
)

Definition at line 678 of file hutil.cc.

679 {
680  int nc = *e1, z = 0, i, j, k, k1;
681  scmon n, o;
682  if (!nc || (a2 == e2))
683  return;
684  j = 0;
685  i = a2;
686  o = stc[i];
687  n = stc[0];
688  k = Nvar;
689  loop
690  {
691  k1 = var[k];
692  if (o[k1] > n[k1])
693  {
694  k = Nvar;
695  i++;
696  if (i < e2)
697  o = stc[i];
698  else
699  {
700  j++;
701  if (j < nc)
702  {
703  i = a2;
704  o = stc[i];
705  n = stc[j];
706  }
707  else
708  {
709  if (z!=0)
710  {
711  *e1 -= z;
712  hShrink(stc, 0, nc);
713  }
714  return;
715  }
716  }
717  }
718  else
719  {
720  k--;
721  if (k==0)
722  {
723  stc[j] = NULL;
724  z++;
725  j++;
726  if (j < nc)
727  {
728  i = a2;
729  o = stc[i];
730  n = stc[j];
731  k = Nvar;
732  }
733  else
734  {
735  if (z!=0)
736  {
737  *e1 -= z;
738  hShrink(stc, 0, nc);
739  }
740  return;
741  }
742  }
743  }
744  }
745 }
loop
Definition: myNF.cc:98
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
static void hShrink(scfmon co, int a, int Nco)
Definition: hutil.cc:303
int k
Definition: cfEzgcd.cc:93
int j
Definition: myNF.cc:70
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
scfmon hGetmem ( int  lm,
scfmon  old,
monp  monmem 
)

Definition at line 1029 of file hutil.cc.

1030 {
1031  scfmon x = monmem->mo;
1032  int lx = monmem->a;
1033  if ((x==NULL) || (lm > lx))
1034  {
1035  /* according to http://www.singular.uni-kl.de:8002/trac/ticket/463#comment:4
1036  * we need to work around a compiler bug:
1037  * if ((x!=NULL)&&(lx>0)) omFreeSize((ADDRESS)x, lx * sizeof(scmon));
1038  */
1039  if (x!=NULL) if (lx>0) omFreeSize((ADDRESS)x, lx * sizeof(scmon));
1040  monmem->mo = x = (scfmon)omAlloc(lm * sizeof(scmon));
1041  monmem->a = lm;
1042  }
1043  memcpy(x, old, lm * sizeof(scmon));
1044  return x;
1045 }
scmon * scfmon
Definition: hutil.h:22
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
void * ADDRESS
Definition: auxiliary.h:161
#define omAlloc(size)
Definition: omAllocDecl.h:210
int * scmon
Definition: hutil.h:21
#define NULL
Definition: omList.c:10
Variable x
Definition: cfModGcd.cc:4023
scmon hGetpure ( scmon  p)

Definition at line 1058 of file hutil.cc.

1059 {
1060  scmon p1 = p;
1061  scmon pn;
1062  p1++;
1063  pn = p1;
1064  pn += (currRing->N);
1065  memcpy(pn, p1, (currRing->N) * sizeof(int));
1066  return pn - 1;
1067 }
return P p
Definition: myNF.cc:203
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
int * scmon
Definition: hutil.h:21
void hIndAllMult ( scmon  pure,
int  Npure,
scfmon  rad,
int  Nrad,
varset  var,
int  Nvar 
)

Definition at line 494 of file hdegree.cc.

496 {
497  int dn, iv, rad0, b, c, x;
498  scmon pn;
499  scfmon rn;
500  if (Nrad < 2)
501  {
502  dn = Npure + Nrad;
503  if (dn > hCo)
504  {
505  if (!Nrad)
506  hCheckIndep(pure);
507  else
508  {
509  pn = *rad;
510  for (iv = Nvar; iv; iv--)
511  {
512  x = var[iv];
513  if (pn[x])
514  {
515  pure[x] = 1;
516  hCheckIndep(pure);
517  pure[x] = 0;
518  }
519  }
520  }
521  }
522  return;
523  }
524  iv = Nvar;
525  while(pure[var[iv]]) iv--;
526  hStepR(rad, Nrad, var, iv, &rad0);
527  iv--;
528  if (rad0 < Nrad)
529  {
530  pn = hGetpure(pure);
531  rn = hGetmem(Nrad, rad, radmem[iv]);
532  pn[var[iv + 1]] = 1;
533  hIndAllMult(pn, Npure + 1, rn, rad0, var, iv);
534  pn[var[iv + 1]] = 0;
535  b = rad0;
536  c = Nrad;
537  hElimR(rn, &rad0, b, c, var, iv);
538  hPure(rn, b, &c, var, iv, pn, &x);
539  hLex2R(rn, rad0, b, c, var, iv, hwork);
540  rad0 += (c - b);
541  hIndAllMult(pn, Npure + x, rn, rad0, var, iv);
542  }
543  else
544  {
545  hIndAllMult(pure, Npure, rad, Nrad, var, iv);
546  }
547 }
void hElimR(scfmon rad, int *e1, int a2, int e2, varset var, int Nvar)
Definition: hutil.cc:748
scfmon hwork
Definition: hutil.cc:19
scfmon hGetmem(int lm, scfmon old, monp monmem)
Definition: hutil.cc:1029
void hIndAllMult(scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
Definition: hdegree.cc:494
int hCo
Definition: hdegree.cc:22
scmon hGetpure(scmon p)
Definition: hutil.cc:1058
scmon * scfmon
Definition: hutil.h:22
static void hCheckIndep(scmon pure)
Definition: hdegree.cc:470
void hStepR(scfmon rad, int Nrad, varset var, int Nvar, int *a)
Definition: hutil.cc:980
void hPure(scfmon stc, int a, int *Nstc, varset var, int Nvar, scmon pure, int *Npure)
Definition: hutil.cc:627
int * scmon
Definition: hutil.h:21
void hLex2R(scfmon rad, int e1, int a2, int e2, varset var, int Nvar, scfmon w)
Definition: hutil.cc:886
monf radmem
Definition: hutil.cc:24
Variable x
Definition: cfModGcd.cc:4023
const poly b
Definition: syzextra.cc:213
void hIndMult ( scmon  pure,
int  Npure,
scfmon  rad,
int  Nrad,
varset  var,
int  Nvar 
)

Definition at line 311 of file hdegree.cc.

313 {
314  int dn, iv, rad0, b, c, x;
315  scmon pn;
316  scfmon rn;
317  if (Nrad < 2)
318  {
319  dn = Npure + Nrad;
320  if (dn == hCo)
321  {
322  if (Nrad==0)
323  hIndep(pure);
324  else
325  {
326  pn = *rad;
327  for (iv = Nvar; iv!=0; iv--)
328  {
329  x = var[iv];
330  if (pn[x])
331  {
332  pure[x] = 1;
333  hIndep(pure);
334  pure[x] = 0;
335  }
336  }
337  }
338  }
339  return;
340  }
341  iv = Nvar;
342  dn = Npure+1;
343  if (dn >= hCo)
344  {
345  if (dn > hCo)
346  return;
347  loop
348  {
349  if(!pure[var[iv]])
350  {
351  if(hNotZero(rad, Nrad, var, iv))
352  {
353  pure[var[iv]] = 1;
354  hIndep(pure);
355  pure[var[iv]] = 0;
356  }
357  }
358  iv--;
359  if (!iv)
360  return;
361  }
362  }
363  while(pure[var[iv]]) iv--;
364  hStepR(rad, Nrad, var, iv, &rad0);
365  iv--;
366  if (rad0 < Nrad)
367  {
368  pn = hGetpure(pure);
369  rn = hGetmem(Nrad, rad, radmem[iv]);
370  pn[var[iv + 1]] = 1;
371  hIndMult(pn, Npure + 1, rn, rad0, var, iv);
372  pn[var[iv + 1]] = 0;
373  b = rad0;
374  c = Nrad;
375  hElimR(rn, &rad0, b, c, var, iv);
376  hPure(rn, b, &c, var, iv, pn, &x);
377  hLex2R(rn, rad0, b, c, var, iv, hwork);
378  rad0 += (c - b);
379  hIndMult(pn, Npure + x, rn, rad0, var, iv);
380  }
381  else
382  {
383  hIndMult(pure, Npure, rad, Nrad, var, iv);
384  }
385 }
void hElimR(scfmon rad, int *e1, int a2, int e2, varset var, int Nvar)
Definition: hutil.cc:748
scfmon hwork
Definition: hutil.cc:19
scfmon hGetmem(int lm, scfmon old, monp monmem)
Definition: hutil.cc:1029
int hCo
Definition: hdegree.cc:22
loop
Definition: myNF.cc:98
scmon hGetpure(scmon p)
Definition: hutil.cc:1058
scmon * scfmon
Definition: hutil.h:22
static BOOLEAN hNotZero(scfmon rad, int Nrad, varset var, int Nvar)
Definition: hdegree.cc:279
void hStepR(scfmon rad, int Nrad, varset var, int Nvar, int *a)
Definition: hutil.cc:980
static void hIndep(scmon pure)
Definition: hdegree.cc:294
void hIndMult(scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
Definition: hdegree.cc:311
void hPure(scfmon stc, int a, int *Nstc, varset var, int Nvar, scmon pure, int *Npure)
Definition: hutil.cc:627
int * scmon
Definition: hutil.h:21
void hLex2R(scfmon rad, int e1, int a2, int e2, varset var, int Nvar, scfmon w)
Definition: hutil.cc:886
monf radmem
Definition: hutil.cc:24
Variable x
Definition: cfModGcd.cc:4023
const poly b
Definition: syzextra.cc:213
scfmon hInit ( ideal  S,
ideal  Q,
int Nexist,
ring  tailRing 
)

Definition at line 34 of file hutil.cc.

35 {
38 
39 // if (tailRing != currRing)
41 // else
42 // hisModule = id_RankFreeModule(S, currRing);
43 
44  if (hisModule < 0)
45  hisModule = 0;
46 
47  int sl, ql, i, k = 0;
48  polyset si, qi, ss;
49  scfmon ex, ek;
50 
51  if (S!=NULL)
52  {
53  si = S->m;
54  sl = IDELEMS(S);
55  }
56  else
57  {
58  si = NULL;
59  sl = 0;
60  }
61  if (Q!=NULL)
62  {
63  qi = Q->m;
64  ql = IDELEMS(Q);
65  }
66  else
67  {
68  qi = NULL;
69  ql = 0;
70  }
71  if ((sl + ql) == 0)
72  {
73  *Nexist = 0;
74  return NULL;
75  }
76  ss = si;
77  for (i = sl; i>0; i--)
78  {
79  if (*ss!=0)
80  k++;
81  ss++;
82  }
83  ss = qi;
84  for (i = ql; i>0; i--)
85  {
86  if (*ss!=0)
87  k++;
88  ss++;
89  }
90  *Nexist = k;
91  if (k==0)
92  return NULL;
93  ek = ex = (scfmon)omAlloc0(k * sizeof(scmon));
94  hsecure = (scfmon) omAlloc0(k * sizeof(scmon));
95  for (i = sl; i>0; i--)
96  {
97  if (*si!=NULL)
98  {
99  *ek = (scmon) omAlloc(((currRing->N)+1)*sizeof(int));
100  p_GetExpV(*si, *ek, currRing);
101  ek++;
102  }
103  si++;
104  }
105  for (i = ql; i>0; i--)
106  {
107  if (*qi!=NULL)
108  {
109  *ek = (scmon) omAlloc(((currRing->N)+1)*sizeof(int));
110  p_GetExpV(*qi, *ek, currRing);
111  ek++;
112  }
113  qi++;
114  }
115  memcpy(hsecure, ex, k * sizeof(scmon));
116  return ex;
117 }
const const intvec const intvec const ring _currRing const const intvec const intvec const ring _currRing int
Definition: gb_hack.h:53
#define id_TestTail(A, lR, tR)
Definition: simpleideals.h:66
scmon * scfmon
Definition: hutil.h:22
BEGIN_NAMESPACE_SINGULARXX const ring const ring tailRing
Definition: DebugPrint.h:30
static void p_GetExpV(poly p, int *ev, const ring r)
Definition: p_polys.h:1448
int k
Definition: cfEzgcd.cc:93
#define Q
Definition: sirandom.c:25
#define omAlloc(size)
Definition: omAllocDecl.h:210
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
static scfmon hsecure
Definition: hutil.cc:32
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
#define IDELEMS(i)
Definition: simpleideals.h:19
#define NULL
Definition: omList.c:10
poly * polyset
Definition: hutil.h:17
int hisModule
Definition: hutil.cc:23
#define omAlloc0(size)
Definition: omAllocDecl.h:211
void hKill ( monf  xmem,
int  Nvar 
)

Definition at line 1016 of file hutil.cc.

1017 {
1018  int i;
1019  for (i = Nvar; i!=0; i--)
1020  {
1021  if (xmem[i]->mo!=NULL)
1022  omFreeSize((ADDRESS)xmem[i]->mo, xmem[i]->a * sizeof(scmon));
1023  omFreeSize((ADDRESS)xmem[i], LEN_MON);
1024  }
1025  omFreeSize((ADDRESS)xmem, (Nvar + 1) * sizeof(monp));
1026 }
const poly a
Definition: syzextra.cc:212
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
void * ADDRESS
Definition: auxiliary.h:161
#define LEN_MON
Definition: hutil.h:42
monh * monp
Definition: hutil.h:26
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
void hLex2R ( scfmon  rad,
int  e1,
int  a2,
int  e2,
varset  var,
int  Nvar,
scfmon  w 
)

Definition at line 886 of file hutil.cc.

888 {
889  int j0 = 0, j = 0, i = a2, k, k1;
890  scmon n, o;
891  if (!e1)
892  {
893  for (; i < e2; i++)
894  rad[i - a2] = rad[i];
895  return;
896  }
897  else if (i == e2)
898  return;
899  n = rad[j];
900  o = rad[i];
901  loop
902  {
903  k = Nvar;
904  loop
905  {
906  k1 = var[k];
907  if (!o[k1] && n[k1])
908  {
909  w[j0] = o;
910  j0++;
911  i++;
912  if (i < e2)
913  {
914  o = rad[i];
915  break;
916  }
917  else
918  {
919  for (; j < e1; j++)
920  {
921  w[j0] = rad[j];
922  j0++;
923  }
924  memcpy(rad, w, (e1 + e2 - a2) * sizeof(scmon));
925  return;
926  }
927  }
928  else if (o[k1] && !n[k1])
929  {
930  w[j0] = n;
931  j0++;
932  j++;
933  if (j < e1)
934  {
935  n = rad[j];
936  break;
937  }
938  else
939  {
940  for (; i < e2; i++)
941  {
942  w[j0] = rad[i];
943  j0++;
944  }
945  memcpy(rad, w, (e1 + e2 - a2) * sizeof(scmon));
946  return;
947  }
948  }
949  k--;
950  }
951  }
952 }
loop
Definition: myNF.cc:98
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
int k
Definition: cfEzgcd.cc:93
int j
Definition: myNF.cc:70
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
const CanonicalForm & w
Definition: facAbsFact.cc:55
void hLex2S ( scfmon  stc,
int  e1,
int  a2,
int  e2,
varset  var,
int  Nvar,
scfmon  w 
)

Definition at line 818 of file hutil.cc.

820 {
821  int j0 = 0, j = 0, i = a2, k, k1;
822  scmon n, o;
823  if (!e1)
824  {
825  for (; i < e2; i++)
826  rad[i - a2] = rad[i];
827  return;
828  } else if (i == e2)
829  return;
830  n = rad[j];
831  o = rad[i];
832  loop
833  {
834  k = Nvar;
835  loop
836  {
837  k1 = var[k];
838  if (o[k1] < n[k1])
839  {
840  w[j0] = o;
841  j0++;
842  i++;
843  if (i < e2)
844  {
845  o = rad[i];
846  break;
847  }
848  else
849  {
850  for (; j < e1; j++)
851  {
852  w[j0] = rad[j];
853  j0++;
854  }
855  memcpy(rad, w, (e1 + e2 - a2) * sizeof(scmon));
856  return;
857  }
858  }
859  else if (o[k1] > n[k1])
860  {
861  w[j0] = n;
862  j0++;
863  j++;
864  if (j < e1)
865  {
866  n = rad[j];
867  break;
868  }
869  else
870  {
871  for (; i < e2; i++)
872  {
873  w[j0] = rad[i];
874  j0++;
875  }
876  memcpy(rad, w, (e1 + e2 - a2) * sizeof(scmon));
877  return;
878  }
879  }
880  k--;
881  }
882  }
883 }
loop
Definition: myNF.cc:98
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
int k
Definition: cfEzgcd.cc:93
int j
Definition: myNF.cc:70
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
const CanonicalForm & w
Definition: facAbsFact.cc:55
void hLexR ( scfmon  rad,
int  Nrad,
varset  var,
int  Nvar 
)

Definition at line 571 of file hutil.cc.

572 {
573  int j = 1, i = 0, k, k1;
574  scmon n, o;
575  if (Nrad < 2)
576  return;
577  n = rad[j];
578  o = rad[0];
579  k = Nvar;
580  loop
581  {
582  k1 = var[k];
583  if (!o[k1] && n[k1])
584  {
585  i++;
586  if (i < j)
587  {
588  o = rad[i];
589  k = Nvar;
590  }
591  else
592  {
593  j++;
594  if (j < Nrad)
595  {
596  i = 0;
597  o = rad[0];
598  n = rad[j];
599  k = Nvar;
600  }
601  else
602  return;
603  }
604  }
605  else if (o[k1] && !n[k1])
606  {
607  for (k = j; k > i; k--)
608  rad[k] = rad[k - 1];
609  rad[i] = n;
610  j++;
611  if (j < Nrad)
612  {
613  i = 0;
614  o = rad[0];
615  n = rad[j];
616  k = Nvar;
617  }
618  else
619  return;
620  }
621  else
622  k--;
623  }
624 }
loop
Definition: myNF.cc:98
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
int k
Definition: cfEzgcd.cc:93
int j
Definition: myNF.cc:70
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
void hLexS ( scfmon  stc,
int  Nstc,
varset  var,
int  Nvar 
)

Definition at line 512 of file hutil.cc.

513 {
514  if (Nstc < 2)
515  return;
516  int j = 1, i = 0;
517  scmon n = stc[j];
518  scmon o = stc[0];
519  int k = Nvar;
520  loop
521  {
522  int k1 = var[k];
523  if (o[k1] < n[k1])
524  {
525  i++;
526  if (i < j)
527  {
528  o = stc[i];
529  k = Nvar;
530  }
531  else
532  {
533  j++;
534  if (j < Nstc)
535  {
536  i = 0;
537  o = stc[0];
538  n = stc[j];
539  k = Nvar;
540  }
541  else
542  return;
543  }
544  }
545  else if (o[k1] > n[k1])
546  {
547  int tmp_k;
548  for (tmp_k = j; tmp_k > i; tmp_k--)
549  stc[tmp_k] = stc[tmp_k - 1];
550  stc[i] = n;
551  j++;
552  if (j < Nstc)
553  {
554  i = 0;
555  o = stc[0];
556  n = stc[j];
557  k = Nvar;
558  }
559  else
560  return;
561  }
562  else
563  {
564  k--;
565  if (k<=0) return;
566  }
567  }
568 }
loop
Definition: myNF.cc:98
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
int k
Definition: cfEzgcd.cc:93
int j
Definition: myNF.cc:70
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
void hOrdSupp ( scfmon  stc,
int  Nstc,
varset  var,
int  Nvar 
)

Definition at line 208 of file hutil.cc.

209 {
210  int i, i1, j, jj, k, l;
211  int x;
212  scmon temp, count;
213  float o, h, g, *v1;
214 
215  v1 = (float *)omAlloc(Nvar * sizeof(float));
216  temp = (int *)omAlloc(Nstc * sizeof(int));
217  count = (int *)omAlloc(Nstc * sizeof(int));
218  for (i = 1; i <= Nvar; i++)
219  {
220  i1 = var[i];
221  *temp = stc[0][i1];
222  *count = 1;
223  jj = 1;
224  for (j = 1; j < Nstc; j++)
225  {
226  x = stc[j][i1];
227  k = 0;
228  loop
229  {
230  if (x > temp[k])
231  {
232  k++;
233  if (k == jj)
234  {
235  temp[k] = x;
236  count[k] = 1;
237  jj++;
238  break;
239  }
240  }
241  else if (x < temp[k])
242  {
243  for (l = jj; l > k; l--)
244  {
245  temp[l] = temp[l-1];
246  count[l] = count[l-1];
247  }
248  temp[k] = x;
249  count[k] = 1;
250  jj++;
251  break;
252  }
253  else
254  {
255  count[k]++;
256  break;
257  }
258  }
259  }
260  h = 0.0;
261  o = (float)Nstc/(float)jj;
262  for(j = 0; j < jj; j++)
263  {
264  g = (float)count[j];
265  if (g > o)
266  g -= o;
267  else
268  g = o - g;
269  if (g > h)
270  h = g;
271  }
272  v1[i-1] = h * (float)jj;
273  }
274  omFreeSize((ADDRESS)count, Nstc * sizeof(int));
275  omFreeSize((ADDRESS)temp, Nstc * sizeof(int));
276  for (i = 1; i < Nvar; i++)
277  {
278  i1 = var[i+1];
279  h = v1[i];
280  j = 0;
281  loop
282  {
283  if (h > v1[j])
284  {
285  for (l = i; l > j; l--)
286  {
287  v1[l] = v1[l-1];
288  var[l+1] = var[l];
289  }
290  v1[j] = h;
291  var[j+1] = i1;
292  break;
293  }
294  j++;
295  if (j == i)
296  break;
297  }
298  }
299  omFreeSize((ADDRESS)v1, Nvar * sizeof(float));
300 }
int status int void size_t count
Definition: si_signals.h:58
loop
Definition: myNF.cc:98
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
void * ADDRESS
Definition: auxiliary.h:161
g
Definition: cfModGcd.cc:4031
int k
Definition: cfEzgcd.cc:93
#define omAlloc(size)
Definition: omAllocDecl.h:210
int j
Definition: myNF.cc:70
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
Variable x
Definition: cfModGcd.cc:4023
static Poly * h
Definition: janet.cc:978
int l
Definition: cfEzgcd.cc:94
void hPure ( scfmon  stc,
int  a,
int Nstc,
varset  var,
int  Nvar,
scmon  pure,
int Npure 
)

Definition at line 627 of file hutil.cc.

629 {
630  int nc = *Nstc, np = 0, nq = 0, j, i, i1, c, l;
631  scmon x;
632  for (j = a; j < nc; j++)
633  {
634  x = stc[j];
635  i = Nvar;
636  c = 2;
637  l = 0;
638  loop
639  {
640  i1 = var[i];
641  if (x[i1])
642  {
643  c--;
644  if (!c)
645  {
646  l = 0;
647  break;
648  }
649  else if (c == 1)
650  l = i1;
651  }
652  i--;
653  if (!i)
654  break;
655  }
656  if (l)
657  {
658  if (!pure[l])
659  {
660  np++;
661  pure[l] = x[l];
662  }
663  else if (x[l] < pure[l])
664  pure[l] = x[l];
665  stc[j] = NULL;
666  nq++;
667  }
668  }
669  *Npure = np;
670  if (nq!=0)
671  {
672  *Nstc -= nq;
673  hShrink(stc, a, nc);
674  }
675 }
const poly a
Definition: syzextra.cc:212
loop
Definition: myNF.cc:98
static void hShrink(scfmon co, int a, int Nco)
Definition: hutil.cc:303
int j
Definition: myNF.cc:70
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
Variable x
Definition: cfModGcd.cc:4023
int l
Definition: cfEzgcd.cc:94
void hRadical ( scfmon  rad,
int Nrad,
int  Nvar 
)

Definition at line 417 of file hutil.cc.

418 {
419  int nc = *Nrad, z = 0, i, j, k;
420  scmon n, o;
421  if (nc < 2)
422  return;
423  i = 0;
424  j = 1;
425  n = rad[j];
426  o = rad[0];
427  k = Nvar;
428  loop
429  {
430  if ((o[k]!=0) && (n[k]==0))
431  {
432  loop
433  {
434  k--;
435  if (k==0)
436  {
437  rad[i] = NULL;
438  z++;
439  break;
440  }
441  else
442  {
443  if ((o[k]==0) && (n[k]!=0))
444  break;
445  }
446  }
447  k = Nvar;
448  }
449  else if (!o[k] && n[k])
450  {
451  loop
452  {
453  k--;
454  if (!k)
455  {
456  rad[j] = NULL;
457  z++;
458  break;
459  }
460  else
461  {
462  if (o[k] && !n[k])
463  break;
464  }
465  }
466  k = Nvar;
467  }
468  else
469  {
470  k--;
471  if (!k)
472  {
473  rad[j] = NULL;
474  z++;
475  k = Nvar;
476  }
477  }
478  if (k == Nvar)
479  {
480  if (!rad[j])
481  i = j - 1;
482  loop
483  {
484  i++;
485  if (i == j)
486  {
487  i = -1;
488  j++;
489  if (j < nc)
490  n = rad[j];
491  else
492  {
493  if (z)
494  {
495  *Nrad -= z;
496  hShrink(rad, 0, nc);
497  }
498  return;
499  }
500  }
501  else if (rad[i])
502  {
503  o = rad[i];
504  break;
505  }
506  }
507  }
508  }
509 }
loop
Definition: myNF.cc:98
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
static void hShrink(scfmon co, int a, int Nco)
Definition: hutil.cc:303
int k
Definition: cfEzgcd.cc:93
int j
Definition: myNF.cc:70
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
void hStaircase ( scfmon  stc,
int Nstc,
varset  var,
int  Nvar 
)

Definition at line 319 of file hutil.cc.

320 {
321  int nc = *Nstc;
322  if (nc < 2)
323  return;
324  int z = 0;
325  int i = 0;
326  int j = 1;
327  scmon n = stc[1 /*j*/];
328  scmon o = stc[0];
329  int k = Nvar;
330  loop
331  {
332  int k1 = var[k];
333  if (o[k1] > n[k1])
334  {
335  loop
336  {
337  k--;
338  if (k==0)
339  {
340  stc[i] = NULL;
341  z++;
342  break;
343  }
344  else
345  {
346  k1 = var[k];
347  if (o[k1] < n[k1])
348  break;
349  }
350  }
351  k = Nvar;
352  }
353  else if (o[k1] < n[k1])
354  {
355  loop
356  {
357  k--;
358  if (k==0)
359  {
360  stc[j] = NULL;
361  z++;
362  break;
363  }
364  else
365  {
366  k1 = var[k];
367  if (o[k1] > n[k1])
368  break;
369  }
370  }
371  k = Nvar;
372  }
373  else
374  {
375  k--;
376  if (k==0)
377  {
378  stc[j] = NULL;
379  z++;
380  k = Nvar;
381  }
382  }
383  if (k == Nvar)
384  {
385  if (stc[j]==NULL)
386  i = j - 1;
387  loop
388  {
389  i++;
390  if (i == j)
391  {
392  i = -1;
393  j++;
394  if (j < nc)
395  n = stc[j];
396  else
397  {
398  if (z!=0)
399  {
400  *Nstc -= z;
401  hShrink(stc, 0, nc);
402  }
403  return;
404  }
405  }
406  else if (stc[i]!=NULL)
407  {
408  o = stc[i];
409  break;
410  }
411  }
412  }
413  }
414 }
loop
Definition: myNF.cc:98
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
static void hShrink(scfmon co, int a, int Nco)
Definition: hutil.cc:303
int k
Definition: cfEzgcd.cc:93
int j
Definition: myNF.cc:70
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
void hStepR ( scfmon  rad,
int  Nrad,
varset  var,
int  Nvar,
int a 
)

Definition at line 980 of file hutil.cc.

981 {
982  int k1, i;
983  k1 = var[Nvar];
984  i = 0;
985  loop
986  {
987  if (rad[i][k1])
988  {
989  *a = i;
990  return;
991  }
992  i++;
993  if (i == Nrad)
994  {
995  *a = i;
996  return;
997  }
998  }
999 }
const poly a
Definition: syzextra.cc:212
loop
Definition: myNF.cc:98
int i
Definition: cfEzgcd.cc:123
void hStepS ( scfmon  stc,
int  Nstc,
varset  var,
int  Nvar,
int a,
int x 
)

Definition at line 955 of file hutil.cc.

956 {
957  int k1, i;
958  int y;
959  k1 = var[Nvar];
960  y = *x;
961  i = *a;
962  loop
963  {
964  if (y < stc[i][k1])
965  {
966  *a = i;
967  *x = stc[i][k1];
968  return;
969  }
970  i++;
971  if (i == Nstc)
972  {
973  *a = i;
974  return;
975  }
976  }
977 }
const CanonicalForm int const CFList const Variable & y
Definition: facAbsFact.cc:57
const poly a
Definition: syzextra.cc:212
loop
Definition: myNF.cc:98
int i
Definition: cfEzgcd.cc:123
Variable x
Definition: cfModGcd.cc:4023
void hSupp ( scfmon  stc,
int  Nstc,
varset  var,
int Nvar 
)

Definition at line 180 of file hutil.cc.

181 {
182  int nv, i0, i1, i, j;
183  nv = i0 = *Nvar;
184  i1 = 0;
185  for (i = 1; i <= nv; i++)
186  {
187  j = 0;
188  loop
189  {
190  if (stc[j][i]>0)
191  {
192  i1++;
193  var[i1] = i;
194  break;
195  }
196  j++;
197  if (j == Nstc)
198  {
199  var[i0] = i;
200  i0--;
201  break;
202  }
203  }
204  }
205  *Nvar = i1;
206 }
loop
Definition: myNF.cc:98
int j
Definition: myNF.cc:70
int i
Definition: cfEzgcd.cc:123
void slicehilb ( ideal  I)

Definition at line 1096 of file hilb.cc.

1097 {
1098  //printf("Adi changes are here: \n");
1099  int i, NNN = 0;
1100  int steps = 0, prune = 0, moreprune = 0;
1101  mpz_ptr hilbertcoef;
1102  int *hilbpower;
1103  ideal S = idInit(1,1);
1104  poly q = p_ISet(1,currRing);
1105  ideal X = idInit(1,1);
1106  X->m[0]=p_One(currRing);
1107  for(i=1;i<=currRing->N;i++)
1108  {
1109  p_SetExp(X->m[0],i,1,currRing);
1110  }
1111  p_Setm(X->m[0],currRing);
1112  I = id_Mult(I,X,currRing);
1113  I = SortByDeg(I);
1114  //printf("\n-------------RouneSlice--------------\n");
1115  rouneslice(I,S,q,X->m[0],prune, moreprune, steps, NNN, hilbertcoef, hilbpower);
1116  //printf("\nIn total Prune got rid of %i elements\n",prune);
1117  //printf("\nIn total More Prune got rid of %i elements\n",moreprune);
1118  //printf("\nSteps of rouneslice: %i\n\n", steps);
1119  mpz_t coefhilb;
1120  mpz_t dummy;
1121  mpz_init(coefhilb);
1122  mpz_init(dummy);
1123  printf("\n// %8d t^0",1);
1124  for(i = 0; i<NNN; i++)
1125  {
1126  if(mpz_sgn(&hilbertcoef[i])!=0)
1127  {
1128  gmp_printf("\n// %8Zd t^%d",&hilbertcoef[i],hilbpower[i]);
1129  }
1130  }
1131  omFreeSize(hilbertcoef, (NNN)*sizeof(mpz_t));
1132  omFreeSize(hilbpower, (NNN)*sizeof(int));
1133  //printf("\n-------------------------------------\n");
1134 }
void rouneslice(ideal I, ideal S, poly q, poly x, int &prune, int &moreprune, int &steps, int &NNN, mpz_ptr &hilbertcoef, int *&hilbpower)
Definition: hilb.cc:942
ideal id_Mult(ideal h1, ideal h2, const ring r)
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
const ideal
Definition: gb_hack.h:42
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
poly p_One(const ring r)
Definition: p_polys.cc:1318
polyrec * poly
Definition: hilb.h:10
int i
Definition: cfEzgcd.cc:123
void prune(Variable &alpha)
Definition: variable.cc:261
ideal idInit(int idsize, int rank)
Definition: simpleideals.cc:40
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent : VarOffset encodes the position in p->exp
Definition: p_polys.h:484
static ideal SortByDeg(ideal I)
Definition: hilb.cc:369
static void p_Setm(poly p, const ring r)
Definition: p_polys.h:436
poly p_ISet(long i, const ring r)
returns the poly representing the integer i
Definition: p_polys.cc:1302

Variable Documentation

ring currRing

Widely used global variable which specifies the current polynomial ring for Singular interpreter and legacy implementatins. : one should avoid using it in newer designs, for example due to possible problems in parallelization with threads.

Definition at line 12 of file polys.cc.

int hCo

Definition at line 22 of file hdegree.cc.

scfmon hexist

Definition at line 19 of file hutil.cc.

int hisModule

Definition at line 23 of file hutil.cc.

int hMu

Definition at line 22 of file hdegree.cc.

int hMu2

Definition at line 22 of file hdegree.cc.

int hNexist

Definition at line 22 of file hutil.cc.

int hNpure

Definition at line 22 of file hutil.cc.

int hNrad

Definition at line 22 of file hutil.cc.

int hNstc

Definition at line 22 of file hutil.cc.

int hNvar

Definition at line 22 of file hutil.cc.

scmon hpur0

Definition at line 20 of file hutil.cc.

scmon hpure

Definition at line 20 of file hutil.cc.

scfmon hrad

Definition at line 19 of file hutil.cc.

varset hsel

Definition at line 21 of file hutil.cc.

scfmon hstc

Definition at line 19 of file hutil.cc.

varset hvar

Definition at line 21 of file hutil.cc.

scfmon hwork

Definition at line 19 of file hutil.cc.

omBin indlist_bin

Definition at line 23 of file hdegree.cc.

indset ISet

Definition at line 277 of file hdegree.cc.

indset JSet

Definition at line 277 of file hdegree.cc.

monf radmem

Definition at line 52 of file hutil.h.

monf stcmem

Definition at line 52 of file hutil.h.