Typedefs | Functions | Variables
stairc.h File Reference

Go to the source code of this file.

Typedefs

typedef polyrec * poly
 

Functions

void scComputeHC (ideal s, ideal Q, int k, poly &hEdge, ring tailRing=currRing)
 
intvecscIndIntvec (ideal S, ideal Q=NULL)
 
int scDimInt (ideal s, ideal Q=NULL)
 
int scMultInt (ideal s, ideal Q=NULL)
 
int scMult0Int (ideal s, ideal Q=NULL, const ring tailRing=currRing)
 
void scPrintDegree (int co, int mu)
 
void scDegree (ideal s, intvec *modulweight, ideal Q=NULL)
 
ideal scKBase (int deg, ideal s, ideal Q=NULL, intvec *mv=NULL)
 

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...
 

Typedef Documentation

typedef polyrec* poly

Definition at line 10 of file stairc.h.

Function Documentation

void scComputeHC ( ideal  s,
ideal  Q,
int  k,
poly hEdge,
ring  tailRing = currRing 
)

Definition at line 999 of file hdegree.cc.

1000 {
1003  int i;
1004  int k = ak;
1005 
1006  #if HAVE_RINGS
1007  if (rField_is_Ring(currRing) && (currRing->OrdSgn == -1))
1008  {
1009  //consider just monic generators (over rings with zero-divisors)
1010  ideal SS=id_Copy(S,tailRing);
1011  for(i=0;i<=idElem(SS);i++)
1012  {
1013  if(pIsPurePower(SS->m[i])==0)
1014  p_Delete(&SS->m[i],tailRing);
1015  }
1016  S=id_Copy(SS,tailRing);
1017  }
1018  #endif
1019 
1020  hNvar = (currRing->N);
1021  hexist = hInit(S, Q, &hNexist, tailRing); // tailRing?
1022  if (k!=0)
1023  hComp(hexist, hNexist, k, hexist, &hNstc);
1024  else
1025  hNstc = hNexist;
1026  hwork = (scfmon)omAlloc(hNexist * sizeof(scmon));
1027  hvar = (varset)omAlloc((hNvar + 1) * sizeof(int));
1028  hpure = (scmon)omAlloc((1 + (hNvar * hNvar)) * sizeof(int));
1029  stcmem = hCreate(hNvar - 1);
1030  for (i = hNvar; i>0; i--)
1031  hvar[i] = i;
1032  hStaircase(hexist, &hNstc, hvar, hNvar);
1033  if ((hNvar > 2) && (hNstc > 10))
1034  hOrdSupp(hexist, hNstc, hvar, hNvar);
1035  memset(hpure, 0, (hNvar + 1) * sizeof(int));
1036  hPure(hexist, 0, &hNstc, hvar, hNvar, hpure, &hNpure);
1037  hLexS(hexist, hNstc, hvar, hNvar);
1038  if (hEdge!=NULL)
1039  pLmFree(hEdge);
1040  hEdge = pInit();
1041  pWork = pInit();
1042  hHedgeStep(hpure, hexist, hNstc, hvar, hNvar,hEdge);
1043  pSetComp(hEdge,ak);
1044  hKill(stcmem, hNvar - 1);
1045  omFreeSize((ADDRESS)hwork, hNexist * sizeof(scmon));
1046  omFreeSize((ADDRESS)hvar, (hNvar + 1) * sizeof(int));
1047  omFreeSize((ADDRESS)hpure, (1 + (hNvar * hNvar)) * sizeof(int));
1049  pLmFree(pWork);
1050 }
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
#define pIsPurePower(p)
Definition: polys.h:219
int hNstc
Definition: hutil.cc:22
void hLexS(scfmon stc, int Nstc, varset var, int Nvar)
Definition: hutil.cc:512
scfmon hwork
Definition: hutil.cc:19
int hNexist
Definition: hutil.cc:22
int * varset
Definition: hutil.h:23
ideal id_Copy(ideal h1, const ring r)
scmon * scfmon
Definition: hutil.h:22
BEGIN_NAMESPACE_SINGULARXX const ring const ring tailRing
Definition: DebugPrint.h:30
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
scfmon hexist
Definition: hutil.cc:19
const ideal
Definition: gb_hack.h:42
static poly pWork
Definition: hdegree.cc:925
monf hCreate(int Nvar)
Definition: hutil.cc:1002
int hNvar
Definition: hutil.cc:22
void * ADDRESS
Definition: auxiliary.h:161
int hNpure
Definition: hutil.cc:22
scmon hpure
Definition: hutil.cc:20
int k
Definition: cfEzgcd.cc:93
#define Q
Definition: sirandom.c:25
#define omAlloc(size)
Definition: omAllocDecl.h:210
void hDelete(scfmon ev, int ev_length)
Definition: hutil.cc:146
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
void hOrdSupp(scfmon stc, int Nstc, varset var, int Nvar)
Definition: hutil.cc:208
void hKill(monf xmem, int Nvar)
Definition: hutil.cc:1016
varset hvar
Definition: hutil.cc:21
void hPure(scfmon stc, int a, int *Nstc, varset var, int Nvar, scmon pure, int *Npure)
Definition: hutil.cc:627
void hStaircase(scfmon stc, int *Nstc, varset var, int Nvar)
Definition: hutil.cc:319
#define pSetComp(p, v)
Definition: polys.h:38
static void hHedgeStep(scmon pure, scfmon stc, int Nstc, varset var, int Nvar, poly hEdge)
Definition: hdegree.cc:939
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:850
static BOOLEAN rField_is_Ring(const ring r)
Definition: ring.h:428
#define NULL
Definition: omList.c:10
monf stcmem
Definition: hutil.cc:24
#define pInit()
allocates a new monomial and initializes everything to 0
Definition: polys.h:61
strat ak
Definition: myNF.cc:321
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced ...
Definition: polys.h:70
int idElem(const ideal F)
number of non-zero polys in F
void hComp(scfmon exist, int Nexist, int ak, scfmon stc, int *Nstc)
Definition: hutil.cc:160
scfmon hInit(ideal S, ideal Q, int *Nexist, ring tailRing)
Definition: hutil.cc:34
void scDegree ( ideal  s,
intvec modulweight,
ideal  Q = NULL 
)

Definition at line 818 of file hdegree.cc.

819 {
820  id_Test(S, currRing);
821  id_Test(Q, currRing);
822  int co, mu, l;
823  intvec *hseries2;
824  intvec *hseries1 = hFirstSeries(S, modulweight, Q);
825  l = hseries1->length()-1;
826  if (l > 1)
827  hseries2 = hSecondSeries(hseries1);
828  else
829  hseries2 = hseries1;
830  hDegreeSeries(hseries1, hseries2, &co, &mu);
831  if ((l == 1) &&(mu == 0))
832  scPrintDegree((currRing->N)+1, 0);
833  else
834  scPrintDegree(co, mu);
835  if (l>1)
836  delete hseries1;
837  delete hseries2;
838 }
void mu(int **points, int sizePoints)
void scPrintDegree(int co, int mu)
Definition: hdegree.cc:804
#define id_Test(A, lR)
Definition: simpleideals.h:67
int length() const
Definition: intvec.h:85
void hDegreeSeries(intvec *s1, intvec *s2, int *co, int *mu)
Definition: hilb.cc:1341
#define Q
Definition: sirandom.c:25
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
Definition: intvec.h:16
intvec * hSecondSeries(intvec *hseries1)
Definition: hilb.cc:1307
intvec * hFirstSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree, ring tailRing)
Definition: hilb.cc:1300
int l
Definition: cfEzgcd.cc:94
int scDimInt ( ideal  s,
ideal  Q = NULL 
)

Definition at line 72 of file hdegree.cc.

73 {
74  id_Test(S, currRing);
75  id_Test(Q, currRing);
76  int mc;
77  hexist = hInit(S, Q, &hNexist, currRing);
78  if (!hNexist)
79  return (currRing->N);
80  hwork = (scfmon)omAlloc(hNexist * sizeof(scmon));
81  hvar = (varset)omAlloc(((currRing->N) + 1) * sizeof(int));
82  hpure = (scmon)omAlloc((1 + ((currRing->N) * (currRing->N))) * sizeof(int));
83  mc = hisModule;
84  if (!mc)
85  {
86  hrad = hexist;
87  hNrad = hNexist;
88  }
89  else
90  hrad = (scfmon)omAlloc(hNexist * sizeof(scmon));
91  radmem = hCreate((currRing->N) - 1);
92  hCo = (currRing->N) + 1;
93  loop
94  {
95  if (mc)
96  hComp(hexist, hNexist, mc, hrad, &hNrad);
97  if (hNrad)
98  {
99  hNvar = (currRing->N);
100  hRadical(hrad, &hNrad, hNvar);
101  hSupp(hrad, hNrad, hvar, &hNvar);
102  if (hNvar)
103  {
104  memset(hpure, 0, ((currRing->N) + 1) * sizeof(int));
105  hPure(hrad, 0, &hNrad, hvar, hNvar, hpure, &hNpure);
106  hLexR(hrad, hNrad, hvar, hNvar);
108  }
109  }
110  else
111  {
112  hCo = 0;
113  break;
114  }
115  mc--;
116  if (mc <= 0)
117  break;
118  }
119  hKill(radmem, (currRing->N) - 1);
120  omFreeSize((ADDRESS)hpure, (1 + ((currRing->N) * (currRing->N))) * sizeof(int));
121  omFreeSize((ADDRESS)hvar, ((currRing->N) + 1) * sizeof(int));
122  omFreeSize((ADDRESS)hwork, hNexist * sizeof(scmon));
124  if (hisModule)
125  omFreeSize((ADDRESS)hrad, hNexist * sizeof(scmon));
126  return (currRing->N) - hCo;
127 }
void hDimSolve(scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
Definition: hdegree.cc:29
scfmon hwork
Definition: hutil.cc:19
int hNexist
Definition: hutil.cc:22
int * varset
Definition: hutil.h:23
int hCo
Definition: hdegree.cc:22
loop
Definition: myNF.cc:98
#define id_Test(A, lR)
Definition: simpleideals.h:67
scmon * scfmon
Definition: hutil.h:22
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
scfmon hexist
Definition: hutil.cc:19
monf hCreate(int Nvar)
Definition: hutil.cc:1002
int hNvar
Definition: hutil.cc:22
void * ADDRESS
Definition: auxiliary.h:161
int hNrad
Definition: hutil.cc:22
int hNpure
Definition: hutil.cc:22
scmon hpure
Definition: hutil.cc:20
#define Q
Definition: sirandom.c:25
void hRadical(scfmon rad, int *Nrad, int Nvar)
Definition: hutil.cc:417
#define omAlloc(size)
Definition: omAllocDecl.h:210
scfmon hrad
Definition: hutil.cc:19
void hDelete(scfmon ev, int ev_length)
Definition: hutil.cc:146
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
void hKill(monf xmem, int Nvar)
Definition: hutil.cc:1016
varset hvar
Definition: hutil.cc:21
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 hLexR(scfmon rad, int Nrad, varset var, int Nvar)
Definition: hutil.cc:571
monf radmem
Definition: hutil.cc:24
int hisModule
Definition: hutil.cc:23
void hComp(scfmon exist, int Nexist, int ak, scfmon stc, int *Nstc)
Definition: hutil.cc:160
scfmon hInit(ideal S, ideal Q, int *Nexist, ring tailRing)
Definition: hutil.cc:34
void hSupp(scfmon stc, int Nstc, varset var, int *Nvar)
Definition: hutil.cc:180
intvec* scIndIntvec ( ideal  S,
ideal  Q = NULL 
)

Definition at line 211 of file hdegree.cc.

212 {
213  id_Test(S, currRing);
214  id_Test(Q, currRing);
215  intvec *Set=new intvec((currRing->N));
216  int mc,i;
217  hexist = hInit(S, Q, &hNexist, currRing);
218  if (hNexist==0)
219  {
220  for(i=0; i<(currRing->N); i++)
221  (*Set)[i]=1;
222  return Set;
223  }
224  hwork = (scfmon)omAlloc(hNexist * sizeof(scmon));
225  hvar = (varset)omAlloc(((currRing->N) + 1) * sizeof(int));
226  hpure = (scmon)omAlloc((1 + ((currRing->N) * (currRing->N))) * sizeof(int));
227  hInd = (scmon)omAlloc0((1 + (currRing->N)) * sizeof(int));
228  mc = hisModule;
229  if (mc==0)
230  {
231  hrad = hexist;
232  hNrad = hNexist;
233  }
234  else
235  hrad = (scfmon)omAlloc(hNexist * sizeof(scmon));
236  radmem = hCreate((currRing->N) - 1);
237  hCo = (currRing->N) + 1;
238  loop
239  {
240  if (mc!=0)
241  hComp(hexist, hNexist, mc, hrad, &hNrad);
242  if (hNrad!=0)
243  {
244  hNvar = (currRing->N);
245  hRadical(hrad, &hNrad, hNvar);
246  hSupp(hrad, hNrad, hvar, &hNvar);
247  if (hNvar!=0)
248  {
249  memset(hpure, 0, ((currRing->N) + 1) * sizeof(int));
250  hPure(hrad, 0, &hNrad, hvar, hNvar, hpure, &hNpure);
251  hLexR(hrad, hNrad, hvar, hNvar);
253  }
254  }
255  else
256  {
257  hCo = 0;
258  break;
259  }
260  mc--;
261  if (mc <= 0)
262  break;
263  }
264  for(i=0; i<(currRing->N); i++)
265  (*Set)[i] = hInd[i+1];
266  hKill(radmem, (currRing->N) - 1);
267  omFreeSize((ADDRESS)hpure, (1 + ((currRing->N) * (currRing->N))) * sizeof(int));
268  omFreeSize((ADDRESS)hInd, (1 + (currRing->N)) * sizeof(int));
269  omFreeSize((ADDRESS)hvar, ((currRing->N) + 1) * sizeof(int));
270  omFreeSize((ADDRESS)hwork, hNexist * sizeof(scmon));
272  if (hisModule)
273  omFreeSize((ADDRESS)hrad, hNexist * sizeof(scmon));
274  return Set;
275 }
scfmon hwork
Definition: hutil.cc:19
int hNexist
Definition: hutil.cc:22
int * varset
Definition: hutil.h:23
int hCo
Definition: hdegree.cc:22
loop
Definition: myNF.cc:98
#define id_Test(A, lR)
Definition: simpleideals.h:67
scmon * scfmon
Definition: hutil.h:22
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
scfmon hexist
Definition: hutil.cc:19
monf hCreate(int Nvar)
Definition: hutil.cc:1002
int hNvar
Definition: hutil.cc:22
void * ADDRESS
Definition: auxiliary.h:161
int hNrad
Definition: hutil.cc:22
int hNpure
Definition: hutil.cc:22
scmon hpure
Definition: hutil.cc:20
#define Q
Definition: sirandom.c:25
void hRadical(scfmon rad, int *Nrad, int Nvar)
Definition: hutil.cc:417
#define omAlloc(size)
Definition: omAllocDecl.h:210
scfmon hrad
Definition: hutil.cc:19
void hDelete(scfmon ev, int ev_length)
Definition: hutil.cc:146
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
Definition: intvec.h:16
void hKill(monf xmem, int Nvar)
Definition: hutil.cc:1016
varset hvar
Definition: hutil.cc:21
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
int i
Definition: cfEzgcd.cc:123
void hLexR(scfmon rad, int Nrad, varset var, int Nvar)
Definition: hutil.cc:571
monf radmem
Definition: hutil.cc:24
int hisModule
Definition: hutil.cc:23
static void hIndSolve(scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
Definition: hdegree.cc:132
static scmon hInd
Definition: hdegree.cc:130
void hComp(scfmon exist, int Nexist, int ak, scfmon stc, int *Nstc)
Definition: hutil.cc:160
scfmon hInit(ideal S, ideal Q, int *Nexist, ring tailRing)
Definition: hutil.cc:34
#define omAlloc0(size)
Definition: omAllocDecl.h:211
void hSupp(scfmon stc, int Nstc, varset var, int *Nvar)
Definition: hutil.cc:180
ideal scKBase ( int  deg,
ideal  s,
ideal  Q = NULL,
intvec mv = NULL 
)

Definition at line 1333 of file hdegree.cc.

1334 {
1335  id_Test(Q, currRing);
1336  int i, di;
1337  poly p;
1338 
1339  if (deg < 0)
1340  {
1341  di = scDimInt(s, Q);
1342  if (di != 0)
1343  {
1344  //Werror("KBase not finite");
1345  return idInit(1,s->rank);
1346  }
1347  }
1348  stcmem = hCreate((currRing->N) - 1);
1349  hexist = hInit(s, Q, &hNexist, currRing);
1350  p = last = pInit();
1351  /*pNext(p) = NULL;*/
1352  act = (scmon)omAlloc(((currRing->N) + 1) * sizeof(int));
1353  *act = 0;
1354  if (!hNexist)
1355  {
1356  scAll((currRing->N), deg);
1357  goto ende;
1358  }
1359  if (!hisModule)
1360  {
1361  if (deg < 0) scInKbase(hexist, hNexist, (currRing->N));
1362  else scDegKbase(hexist, hNexist, (currRing->N), deg);
1363  }
1364  else
1365  {
1366  hstc = (scfmon)omAlloc(hNexist * sizeof(scmon));
1367  for (i = 1; i <= hisModule; i++)
1368  {
1369  *act = i;
1370  hComp(hexist, hNexist, i, hstc, &hNstc);
1371  int deg_ei=deg;
1372  if (mv!=NULL) deg_ei -= (*mv)[i-1];
1373  if ((deg < 0) || (deg_ei>=0))
1374  {
1375  if (hNstc)
1376  {
1377  if (deg < 0) scInKbase(hstc, hNstc, (currRing->N));
1378  else scDegKbase(hstc, hNstc, (currRing->N), deg_ei);
1379  }
1380  else
1381  scAll((currRing->N), deg_ei);
1382  }
1383  }
1384  omFreeSize((ADDRESS)hstc, hNexist * sizeof(scmon));
1385  }
1386 ende:
1388  omFreeSize((ADDRESS)act, ((currRing->N) + 1) * sizeof(int));
1389  hKill(stcmem, (currRing->N) - 1);
1390  pLmDelete(&p);
1391  if (p == NULL)
1392  return idInit(1,s->rank);
1393 
1394  last = p;
1395  return scIdKbase(p, s->rank);
1396 }
const const intvec const intvec const ring _currRing const const intvec const intvec const ring _currRing int
Definition: gb_hack.h:53
int hNstc
Definition: hutil.cc:22
const CanonicalForm int s
Definition: facAbsFact.cc:55
int hNexist
Definition: hutil.cc:22
return P p
Definition: myNF.cc:203
#define id_Test(A, lR)
Definition: simpleideals.h:67
scmon * scfmon
Definition: hutil.h:22
static void scDegKbase(scfmon stc, int Nstc, int Nvar, int deg)
Definition: hdegree.cc:1177
static poly last
Definition: hdegree.cc:1056
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
scfmon hexist
Definition: hutil.cc:19
monf hCreate(int Nvar)
Definition: hutil.cc:1002
#define pLmDelete(p)
assume p != NULL, deletes Lm(p)->coef and Lm(p)
Definition: polys.h:76
void * ADDRESS
Definition: auxiliary.h:161
#define Q
Definition: sirandom.c:25
#define omAlloc(size)
Definition: omAllocDecl.h:210
void hDelete(scfmon ev, int ev_length)
Definition: hutil.cc:146
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
void hKill(monf xmem, int Nvar)
Definition: hutil.cc:1016
polyrec * poly
Definition: hilb.h:10
int scDimInt(ideal S, ideal Q)
Definition: hdegree.cc:72
int * scmon
Definition: hutil.h:21
int i
Definition: cfEzgcd.cc:123
ideal idInit(int idsize, int rank)
Definition: simpleideals.cc:40
#define NULL
Definition: omList.c:10
monf stcmem
Definition: hutil.cc:24
static ideal scIdKbase(poly q, const int rank)
Definition: hdegree.cc:1314
#define pInit()
allocates a new monomial and initializes everything to 0
Definition: polys.h:61
static void scInKbase(scfmon stc, int Nstc, int Nvar)
Definition: hdegree.cc:1258
int hisModule
Definition: hutil.cc:23
static scmon act
Definition: hdegree.cc:1057
static void scAll(int Nvar, int deg)
Definition: hdegree.cc:1143
scfmon hstc
Definition: hutil.cc:19
void hComp(scfmon exist, int Nexist, int ak, scfmon stc, int *Nstc)
Definition: hutil.cc:160
scfmon hInit(ideal S, ideal Q, int *Nexist, ring tailRing)
Definition: hutil.cc:34
int scMult0Int ( ideal  s,
ideal  Q = NULL,
const ring  tailRing = currRing 
)

Definition at line 914 of file hdegree.cc.

915 {
918  hDegree0(S, Q, tailRing);
919  return hMu;
920 }
#define id_TestTail(A, lR, tR)
Definition: simpleideals.h:66
BEGIN_NAMESPACE_SINGULARXX const ring const ring tailRing
Definition: DebugPrint.h:30
#define Q
Definition: sirandom.c:25
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
static void hDegree0(ideal S, ideal Q, const ring tailRing)
Definition: hdegree.cc:840
int hMu
Definition: hdegree.cc:22
int scMultInt ( ideal  s,
ideal  Q = NULL 
)

Definition at line 796 of file hdegree.cc.

797 {
798  id_Test(S, currRing);
799  id_Test(Q, currRing);
800  hDegree(S, Q);
801  return hMu;
802 }
#define id_Test(A, lR)
Definition: simpleideals.h:67
static void hDegree(ideal S, ideal Q)
Definition: hdegree.cc:696
#define Q
Definition: sirandom.c:25
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
int hMu
Definition: hdegree.cc:22
void scPrintDegree ( int  co,
int  mu 
)

Definition at line 804 of file hdegree.cc.

805 {
806  int di = (currRing->N)-co;
807  if (currRing->OrdSgn == 1)
808  {
809  if (di>0)
810  Print("// dimension (proj.) = %d\n// degree (proj.) = %d\n", di-1, mu);
811  else
812  Print("// dimension (affine) = 0\n// degree (affine) = %d\n", mu);
813  }
814  else
815  Print("// dimension (local) = %d\n// multiplicity = %d\n", di, mu);
816 }
#define Print
Definition: emacs.cc:83
void mu(int **points, int sizePoints)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12

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.