28#define OVERFLOW_MAX LONG_MAX
29#define OVERFLOW_MIN LONG_MIN
31#define OVERFLOW_MAX (((int64)LONG_MAX)<<30)
32#define OVERFLOW_MIN (-OVERFLOW_MAX)
374 mpz_set_ui(dummy, 1);
376 mpz_set_si(dummy, -1);
377 mpz_add(ec, ec, dummy);
390 int i,howmanyvarinp = 0;
410 poly notsqrfree =
NULL;
427 if(notsqrfree !=
NULL)
500static void rouneslice(ideal I, ideal S, poly q, poly
x,
int &
prune,
int &moreprune,
int &steps,
int &NNN, mpz_ptr &hilbertcoef,
int* &hilbpower)
602 hilbertcoef = (mpz_ptr)
omAlloc((NNN+1)*
sizeof(mpz_t));
603 hilbpower = (
int*)
omAlloc((NNN+1)*
sizeof(int));
604 mpz_init_set( &hilbertcoef[NNN], ec);
616 mpz_add(&hilbertcoef[
i],&hilbertcoef[
i],ec_ptr);
621 hilbertcoef = (mpz_ptr)
omRealloc(hilbertcoef, (NNN+1)*
sizeof(mpz_t));
622 hilbpower = (
int*)
omRealloc(hilbpower, (NNN+1)*
sizeof(int));
623 mpz_init(&hilbertcoef[NNN]);
624 for(
j = NNN;
j>
i;
j--)
626 mpz_set(&hilbertcoef[
j],&hilbertcoef[
j-1]);
627 hilbpower[
j] = hilbpower[
j-1];
629 mpz_set( &hilbertcoef[
i], ec);
647 rouneslice(Ip, Sp, pq,
x,
prune, moreprune, steps, NNN, hilbertcoef,hilbpower);
660 int steps = 0,
prune = 0, moreprune = 0;
677 rouneslice(I,S,q,X->m[0],
prune, moreprune, steps, NNN, hilbertcoef, hilbpower);
683 printf(
"\n// %8d t^0",1);
684 for(
i = 0;
i<NNN;
i++)
686 if(mpz_sgn(&hilbertcoef[
i])!=0)
688 gmp_printf(
"\n// %8Zd t^%d",&hilbertcoef[
i],hilbpower[
i]);
702 if (hseries1 ==
NULL)
704 work =
new intvec(hseries1);
707 for (
i =
k-1;
i >= 0;
i--)
711 if ((
s != 0) || (
k == 1))
716 for (
i =
k-1;
i >= 0;
i--)
725 for (
i =
k-1;
i >= 0;
i--)
726 (*hseries2)[
i] = (*work)[
i];
727 (*hseries2)[
k] = (*work)[
l];
744 for(
k=
j-2;
k>=0;
k--)
757 if ((modul_weight!=
NULL)&&(modul_weight->
compare(0)!=0))
760 Print(
"module weights:%s\n",
s);
763 for (
i = 0;
i <
l;
i++)
785 const int l = hseries1->
length()-1;
794 if ((
l == 1) &&(
mu == 0))
822 while ((
j >= 0) && (I->m[
j] ==
NULL))
851 if(JCount != ObCount)
856 for(
i = 0;
i < JCount;
i++)
907 if(JCount != ObCount)
917 for(
i = 0;
i< JCount;
i++)
941 int orbCount = idorb.size();
967 for(
i = 1;
i < orbCount;
i++)
1017 int OrbCount = idorb.size();
1024 for(
i = 1;
i < OrbCount;
i++)
1049 int OrbCount = idorb.size();
1050 int dtr=0;
int IwCount, ObCount;
1055 for(
i = 1;
i < OrbCount;
i++)
1078 for(
i = 1;
i < OrbCount;
i++)
1091 for(
i = 1;
i < OrbCount;
i++)
1146 for(
k = ICount - 1;
k >=1;
k--)
1148 for(
i = 0;
i <
k;
i++)
1170 poly smon =
p_One(r);
1174 int *e=(
int *)
omAlloc((r->N+1)*
sizeof(int));
1175 int *
s=(
int *)
omAlloc0((r->N+1)*
sizeof(int));
1178 for(
j = 1;
j <= cnt;
j++)
1205 int *e = (
int *)
omAlloc((r->N+1)*
sizeof(int));
1206 int *
s=(
int *)
omAlloc0((r->N+1)*
sizeof(int));
1215 for(
j = (cnt+1);
j < (r->N+1);
j++)
1230static void TwordMap(poly
p, poly
w,
int lV,
int d, ideal Jwi,
bool &flag)
1246 for(
i = 0;
i <= d - 1;
i++)
1291static ideal
colonIdeal(ideal S, poly
w,
int lV, ideal Jwi,
int trunDegHs)
1306 if(trunDegHs !=0 && d >= trunDegHs)
1313 for(
i = 0;
i < SCount;
i++)
1349 PrintS(
"Hilbert Series:\n 0\n");
1352 int (*POS)(ideal, poly, std::vector<ideal>, std::vector<poly>, int, int);
1355 Print(
"\nTruncation degree = %d\n",trunDegHs);
1364 WerrorS(
"wrong input: it is not an infinitely gen. case");
1373 std::vector<ideal > idorb;
1374 std::vector< poly > polist;
1376 ideal orb_init =
idInit(1, 1);
1377 idorb.push_back(orb_init);
1381 std::vector< std::vector<int> > posMat;
1382 std::vector<int> posRow(lV,0);
1386 unsigned long lpcnt = 0;
1391 while(lpcnt < idorb.size())
1395 if(lpcnt >= 1 &&
idIs0(idorb[lpcnt]) ==
FALSE)
1412 for(is = 1; is <= lV; is++)
1433 ps = (*POS)(Jwi, wi, idorb, polist, trInd, trunDegHs);
1437 posRow[is-1] = idorb.size();
1439 idorb.push_back(Jwi);
1440 polist.push_back(wi);
1449 posMat.push_back(posRow);
1450 posRow.resize(lV,0);
1455 Print(
"\nlength of the Orbit = %d", lO);
1460 Print(
"words description of the Orbit: \n");
1461 for(is = 0; is < lO; is++)
1467 PrintS(
"\nmaximal degree, #(sum_j R(w,w_j))");
1469 for(is = 0; is < lO; is++)
1471 if(
idIs0(idorb[is]))
1482 for(is = idorb.size()-1; is >= 0; is--)
1486 for(is = polist.size()-1; is >= 0; is--)
1494 int adjMatrix[lO][lO];
1495 memset(adjMatrix, 0, lO*lO*
sizeof(
int));
1496 int rowCount, colCount;
1500 for(rowCount = 0; rowCount < lO; rowCount++)
1502 for(colCount = 0; colCount < lV; colCount++)
1504 tm = posMat[rowCount][colCount];
1505 adjMatrix[rowCount][tm] = adjMatrix[rowCount][tm] + 1;
1516 tt=(
char**)
omAlloc(
sizeof(
char*));
1522 tt=(
char**)
omalloc(lV*
sizeof(
char*));
1523 for(is = 0; is < lV; is++)
1525 tt[is] = (
char*)
omAlloc(7*
sizeof(
char));
1526 sprintf (tt[is],
"t%d", is+1);
1533 char** xx = (
char**)
omAlloc(
sizeof(
char*));
1546 for(rowCount = 0; rowCount < lO; rowCount++)
1548 for(colCount = 0; colCount < lO; colCount++)
1550 if(adjMatrix[rowCount][colCount] != 0)
1552 MATELEM(mR, rowCount + 1, colCount + 1) =
p_ISet(adjMatrix[rowCount][colCount],
R);
1560 for(rowCount = 0; rowCount < lO; rowCount++)
1562 for(colCount = 0; colCount < lV; colCount++)
1567 MATELEM(mR, rowCount +1, posMat[rowCount][colCount]+1)=
p_Add_q(rc,
MATELEM(mR, rowCount +1, posMat[rowCount][colCount]+1),
R);
1572 for(rowCount = 0; rowCount < lO; rowCount++)
1574 if(C[rowCount] != 0)
1588 PrintS(
"\nlinear system:\n");
1591 for(rowCount = 0; rowCount < lO; rowCount++)
1593 Print(
"H(%d) = ", rowCount+1);
1594 for(colCount = 0; colCount < lV; colCount++)
1599 Print(
"H(%d) + ", posMat[rowCount][colCount] + 1);
1601 Print(
" %d\n", C[rowCount] );
1603 PrintS(
"where H(1) represents the series corresp. to input ideal\n");
1604 PrintS(
"and i^th summand in the rhs of an eqn. is according\n");
1605 PrintS(
"to the right colon map corresp. to the i^th variable\n");
1609 for(rowCount = 0; rowCount < lO; rowCount++)
1611 Print(
"H(%d) = ", rowCount+1);
1612 for(colCount = 0; colCount < lV; colCount++)
1617 Print(
"H(%d) + ", posMat[rowCount][colCount] + 1);
1619 Print(
" %d\n", C[rowCount] );
1621 PrintS(
"where H(1) represents the series corresp. to input ideal\n");
1653 Print(
"Hilbert series:");
1662 for(is = lV-1; is >= 0; is--)
1711 for(
int i=src->N;
i>0;
i--)
1728#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__CYGWIN__)
1729static int compare_rp(
void *arg,
const void *pp1,
const void *pp2)
1731static int compare_rp(
const void *pp1,
const void *pp2,
void* arg)
1734 poly p1=*(poly*)pp1;
1735 poly p2=*(poly*)pp2;
1737 for(
int i=src->N;
i>0;
i--)
1741 if(e1<e2)
return -1;
1749 poly p1=*(poly*)pp1;
1750 poly p2=*(poly*)pp2;
1755 if(e1<e2)
return -1;
1765 long *sev=(
long*)
omAlloc0(kk*
sizeof(
long));
1766 while(id->m[
k]==
NULL)
k--;
1767 BOOLEAN only_lm=r->cf->has_simple_Alloc;
1768 for (
int i=
k;
i>=0;
i--)
1777 for (
int i=0;
i<
k;
i++)
1783 for (
int j=
i+1;
j<=
k;
j++)
1803 for (
int i=0;
i<
k;
i++)
1809 for (
int j=
i+1;
j<=
k;
j++)
1843 int*
exp=(
int*)
omAlloc((src->N+1)*
sizeof(int));
1849 for(
int j=src->N;
j>0;
j--)
1851 int w=(*wdegree)[
j-1];
1854 WerrorS(
"weights must be positive");
1872 int *exp_q=(
int*)
omAlloc((src->N+1)*
sizeof(int));
1873 for (
int i=1;
i<r;
i++)
1879 for(
int ii=src->N;ii>0;ii--)
1882 for(
int ii=0;ii<
i;ii++)
1889 for (
int ii=
IDELEMS(J)-1;ii>=0;ii--)
1938 Qt->block0 = (
int *)
omAlloc0(3 *
sizeof(
int *));
1939 Qt->block1 = (
int *)
omAlloc0(3 *
sizeof(
int *));
1977 #if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__CYGWIN__)
1978 qsort_r(AA->m,
IDELEMS(AA),
sizeof(poly),src,compare_rp);
1980 qsort_r(AA->m,
IDELEMS(AA),
sizeof(poly),compare_rp,src);
2002 if((*ss)[
i]==0)
Print(
"overflow at t^%d\n",
i);
2038 static ring hilb_Qt=
NULL;
2043 int w_max=0,w_min=0;
2046 w_max=module_w->
max_in();
2047 w_min=module_w->
min_in();
2049 for(
int c=1;c<=
A->rank;c++)
2057 if ((module_w==
NULL) || ((*module_w)[c-1]==0)) tmp=
ivAdd(
res,res_c);
2066 (*res)[
res->length()-1]=w_min;
2073 if(modulweight==
NULL)
return 0;
2074 return modulweight->
min_in();
2084 x = (*wdegree)[
i-1];
2100 memcpy(pon, pol,
l *
sizeof(
int64));
2103 for (
i =
x;
i <
l;
i++)
2105 #ifndef __SIZEOF_INT128__
2113 __int128 t2=pol[
i -
x];
2115 if ((t>=LONG_MIN)&&(t<=LONG_MAX)) pon[
i]=t;
2119 for (
i =
l;
i < ln;
i++)
2121 #ifndef __SIZEOF_INT128__
2126 __int128 t= -pol[
i -
x];
2127 if ((t>=LONG_MIN)&&(t<=LONG_MAX)) pon[
i]=t;
2134 for (
i =
l;
i <
x;
i++)
2136 for (
i =
x;
i < ln;
i++)
2137 pon[
i] = -pol[
i -
x];
2144 int l = lp,
x,
i,
j;
2148 for (
i = Nv;
i>0;
i--)
2150 x = pure[var[
i + 1]];
2156 for (
i = 0;
i <
l;
i++)
2158 #ifndef __SIZEOF_INT128__
2168 if ((t>=LONG_MIN)&&(t<=LONG_MAX)) pl[
i+
j]=t;
2176 for (
i = 0;
i <
l;
i++)
2178 #ifndef __SIZEOF_INT128__
2188 if ((t>=LONG_MIN)&&(t<=LONG_MAX)) pl[
i+
j]=t;
2203 for (
i = Nvar;
i>0;
i--)
2206 for (
j = 0;
j < Nstc;
j++)
2218 WerrorS(
"internal arrays too big");
2230 for (
x =
Ql[
j];
x < z;
x++)
2240 int Nvar,
int64 *pol,
int Lpol)
2242 int iv = Nvar -1, ln, a, a0, a1,
b,
i;
2255 hStepS(sn, Nstc, var, Nvar, &a, &
x);
2261 x = pure[var[Nvar]];
2279 hStepS(sn, Nstc, var, Nvar, &a, &
x);
2280 hElimS(sn, &
b, a0, a, var, iv);
2282 hPure(sn, a0, &a1, var, iv, pn, &
i);
2293 x = pure[var[Nvar]];
2310 int i,
j,
k,
l, ii, mw;
2349 if (modulweight !=
NULL)
2350 j = (*modulweight)[mc-1]-mw;
2385 while ((
i > 0) && ((*Qpol)[
i - 1] == 0))
2393 for (ii=0; ii<
k; ii++)
2394 (*work)[ii] = (*hseries1)[ii];
2395 if (hseries1 !=
NULL)
2402 (*hseries1)[
i +
j - 1] += (*Qpol)[
i - 1];
2421 while ((*hseries1)[
l-2]==0)
l--;
2425 for (ii=
l-2; ii>=0; ii--)
2426 (*work)[ii] = (*hseries1)[ii];
2430 (*hseries1)[
l-1] = mw;
const CanonicalForm CFMap CFMap & N
int compare(const intvec *o) const
char * ivString(int not_mat=1, int spaces=0, int dim=2) const
Coefficient rings, fields and other domains suitable for Singular polynomials.
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
static FORCE_INLINE number n_Param(const int iParameter, const coeffs r)
return the (iParameter^th) parameter as a NEW number NOTE: parameter numbering: 1....
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ....
@ n_Q
rational (GMP) numbers
@ n_transExt
used for all transcendental extensions, i.e., the top-most extension in an extension tower is transce...
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
const CanonicalForm int s
const CanonicalForm int const CFList const Variable & y
void WerrorS(const char *s)
void scPrintDegree(int co, int mu)
static void idInsertMonomial(ideal I, poly p)
static int comapreMonoIdBases_IG_Case(ideal J, int JCount, ideal Ob, int ObCount)
static void rouneslice(ideal I, ideal S, poly q, poly x, int &prune, int &moreprune, int &steps, int &NNN, mpz_ptr &hilbertcoef, int *&hilbpower)
static poly SqFree(ideal I)
static void idAddMon(ideal I, ideal p)
static int comapreMonoIdBases(ideal J, ideal Ob)
static void TwordMap(poly p, poly w, int lV, int d, ideal Jwi, bool &flag)
static poly ChooseP(ideal I)
static poly deleteInMon(poly w, int i, int lV, const ring r)
intvec * hSecondSeries(intvec *hseries1)
static void hLastHilb(scmon pure, int Nv, varset var, int64 *pol, int lp)
static BOOLEAN isModule(ideal A, const ring src)
static int CountOnIdUptoTruncationIndex(ideal I, int tr)
static poly ChoosePJL(ideal I)
static int monCompare(const void *m, const void *n)
static void hHilbEst(scfmon stc, int Nstc, varset var, int Nvar)
static void hPrintHilb(intvec *hseries, intvec *modul_weight)
static int positionInOrbitTruncationCase(ideal I, poly w, std::vector< ideal > idorb, std::vector< poly > polist, int, int trunDegHs)
static intvec * hSeries(ideal S, intvec *modulweight, intvec *wdegree, ideal Q)
static poly LCMmon(ideal I)
void HilbertSeries_OrbitData(ideal S, int lV, bool IG_CASE, bool mgrad, bool odp, int trunDegHs)
static ideal colonIdeal(ideal S, poly w, int lV, ideal Jwi, int trunDegHs)
intvec * hFirstSeries(ideal A, intvec *module_w, ideal Q, intvec *wdegree)
static int hMinModulweight(intvec *modulweight)
static poly shiftInMon(poly p, int i, int lV, const ring r)
static ideal getModuleComp(ideal A, int c, const ring src)
intvec * hFirstSeries0(ideal A, ideal Q, intvec *wdegree, const ring src, const ring Qt)
static poly ChoosePVar(ideal I)
static int positionInOrbit_FG_Case(ideal I, poly, std::vector< ideal > idorb, std::vector< poly >, int, int)
static void sortMonoIdeal_pCompare(ideal I)
static ideal SortByDeg(ideal I)
static bool IsIn(poly p, ideal I)
static void eulerchar(ideal I, int variables, mpz_ptr ec)
ideal RightColonOperation(ideal S, poly w, int lV)
static void hHilbStep(scmon pure, scfmon stc, int Nstc, varset var, int Nvar, int64 *pol, int Lpol)
static void hWDegree(intvec *wdegree)
static BOOLEAN p_Div_hi(poly p, const int *exp_q, const ring src)
static int positionInOrbit_IG_Case(ideal I, poly w, std::vector< ideal > idorb, std::vector< poly > polist, int trInd, int)
void hDegreeSeries(intvec *s1, intvec *s2, int *co, int *mu)
static poly SearchP(ideal I)
searches for a monomial of degree d>=2 and divides it by a variable (result monomial of deg d-1)
static int64 * hAddHilb(int Nv, int x, int64 *pol, int *lp)
static ideal minimalMonomialGenSet(ideal I)
intvec * hFirstSeries1(ideal S, intvec *modulweight, ideal Q, intvec *wdegree)
ideal idQuotMon(ideal Iorig, ideal p)
static void SortByDeg_p(ideal I, poly p)
static bool JustVar(ideal I)
void hLookSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree)
poly hilbert_series(ideal A, const ring src, const intvec *wdegree, const ring Qt)
static void id_DelDiv_hi(ideal id, BOOLEAN *bad, const ring r)
static int compare_rp_currRing(const void *pp1, const void *pp2)
void hComp(scfmon exist, int Nexist, int ak, scfmon stc, int *Nstc)
void hLex2S(scfmon rad, int e1, int a2, int e2, varset var, int Nvar, scfmon w)
void hKill(monf xmem, int Nvar)
void hElimS(scfmon stc, int *e1, int a2, int e2, varset var, int Nvar)
void hLexS(scfmon stc, int Nstc, varset var, int Nvar)
void hDelete(scfmon ev, int ev_length)
scfmon hGetmem(int lm, scfmon old, monp monmem)
void hPure(scfmon stc, int a, int *Nstc, varset var, int Nvar, scmon pure, int *Npure)
void hSupp(scfmon stc, int Nstc, varset var, int *Nvar)
void hStepS(scfmon stc, int Nstc, varset var, int Nvar, int *a, int *x)
void hStaircase(scfmon stc, int *Nstc, varset var, int Nvar)
void hOrdSupp(scfmon stc, int Nstc, varset var, int Nvar)
scfmon hInit(ideal S, ideal Q, int *Nexist)
#define idDelete(H)
delete an ideal
BOOLEAN idInsertPoly(ideal h1, poly h2)
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted
ideal id_Copy(ideal h1, const ring r)
copy an ideal
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
intvec * ivAddShift(intvec *a, intvec *b, int s)
intvec * ivAdd(intvec *a, intvec *b)
bool unitMatrix(const int n, matrix &unitMat, const ring R)
Creates a new matrix which is the (nxn) unit matrix, and returns true in case of success.
void luDecomp(const matrix aMat, matrix &pMat, matrix &lMat, matrix &uMat, const ring R)
LU-decomposition of a given (m x n)-matrix.
bool luSolveViaLUDecomp(const matrix pMat, const matrix lMat, const matrix uMat, const matrix bVec, matrix &xVec, matrix &H)
Solves the linear system A * x = b, where A is an (m x n)-matrix which is given by its LU-decompositi...
void mp_Delete(matrix *a, const ring r)
static matrix mu(matrix A, const ring R)
matrix mp_Sub(matrix a, matrix b, const ring R)
matrix mpNew(int r, int c)
create a r x c zero-matrix
#define MATELEM(mat, i, j)
1-based access to matrix
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
gmp_float exp(const gmp_float &a)
The main handler for Singular numbers which are suitable for Singular polynomials.
#define omFreeSize(addr, size)
#define omRealloc(addr, size)
poly p_ISet(long i, const ring r)
returns the poly representing the integer i
poly p_Power(poly p, int i, const ring r)
poly p_MDivide(poly a, poly b, const ring r)
int p_Compare(const poly a, const poly b, const ring R)
unsigned long p_GetShortExpVector(const poly p, const ring r)
void pEnlargeSet(poly **p, int l, int increment)
static poly p_Neg(poly p, const ring r)
static poly p_Add_q(poly p, poly q, const ring r)
static void p_LmDelete(poly p, const ring r)
static poly p_Mult_q(poly p, poly q, const ring r)
#define p_LmEqual(p1, p2, r)
static void p_SetExpV(poly p, int *ev, const ring r)
static poly pp_Mult_mm(poly p, poly m, const ring r)
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent @Note: VarOffset encodes the position in p->exp
static unsigned long p_SetComp(poly p, unsigned long c, ring r)
static void p_Setm(poly p, const ring r)
static number p_SetCoeff(poly p, number n, ring r)
static poly p_Head(const poly p, const ring r)
copy the (leading) term of p
static BOOLEAN p_LmShortDivisibleBy(poly a, unsigned long sev_a, poly b, unsigned long not_sev_b, const ring r)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
static BOOLEAN p_IsOne(const poly p, const ring R)
either poly(1) or gen(k)?!
static BOOLEAN p_LmDivisibleBy(poly a, poly b, const ring r)
static BOOLEAN p_DivisibleBy(poly a, poly b, const ring r)
static void p_Delete(poly *p, const ring r)
static void p_GetExpV(poly p, int *ev, const ring r)
static void p_LmFree(poly p, ring)
static poly p_Copy(poly p, const ring r)
returns a copy of p
static long p_Totaldegree(poly p, const ring r)
void rChangeCurrRing(ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#define pLmDivisibleBy(a, b)
like pDivisibleBy, except that it is assumed that a!=NULL, b!=NULL
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced
#define pCopy(p)
return a copy of the poly
void StringSetS(const char *st)
void PrintS(const char *s)
BOOLEAN rComplete(ring r, int force)
this needs to be called whenever a new ring is created: new fields in ring are created (like VarOffse...
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl, unsigned long bitmask)
static short rVar(const ring r)
#define rVar(r) (r->N)
int status int void size_t count
ideal idInit(int idsize, int rank)
initialise an ideal / module
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
ideal id_Head(ideal h, const ring r)
returns the ideals of initial terms
void id_DelDiv(ideal id, const ring r)
delete id[j], if LT(j) == coeff*mon*LT(i) and vice versa, i.e., delete id[i], if LT(i) == coeff*mon*L...
ideal id_Mult(ideal h1, ideal h2, const ring R)
h1 * h2 one h_i must be an ideal (with at least one column) the other h_i may be a module (with no co...
ideal id_CopyFirstK(const ideal ide, const int k, const ring r)
copies the first k (>= 1) entries of the given ideal/module and returns these as a new ideal/module (...
ideal id_SimpleAdd(ideal h1, ideal h2, const ring R)
concat the lists h1 and h2 without zeros
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
struct for passing initialization parameters to naInitChar
void prune(Variable &alpha)