68 rGraded->block0 = (
int*)
omAlloc0(3*
sizeof(
int));
69 rGraded->block1 = (
int*)
omAlloc0(3*
sizeof(
int));
70 rGraded->wvhdl = (
int**)
omAlloc0(3*
sizeof(
int**));
72 rGraded->block0[0] = 1;
73 rGraded->block1[0] = n;
84 for (
int i=0;
i<
k;
i++)
92 for (
int i=0;
i<
k;
i++)
111 int* cycleAllVariables = (
int*)
omAlloc0((n+1)*
sizeof(int));
112 for (
int i=1;
i<n;
i++)
113 cycleAllVariables[
i]=
i+1;
114 cycleAllVariables[n]=1;
116 int* maxPowers = (
int*)
omAlloc0((n+1)*
sizeof(int));
118 for(
int currentSaturationVariable=n-1; currentSaturationVariable>0; currentSaturationVariable--)
122 for (
int i=0;
i<
k;
i++)
133 if (d>maxPowers[currentSaturationVariable+1])
134 maxPowers[currentSaturationVariable+1]=d;
140 gfan::Integer cache =
w[n-1];
141 for (
int i=n-1;
i>0;
i--)
147 rGradedNew->block0 = (
int*)
omAlloc0(3*
sizeof(
int));
148 rGradedNew->block1 = (
int*)
omAlloc0(3*
sizeof(
int));
149 rGradedNew->wvhdl = (
int**)
omAlloc0(3*
sizeof(
int**));
151 rGradedNew->block0[0] = 1;
152 rGradedNew->block1[0] = n;
159 identity =
n_SetMap(rGraded->cf,rGradedNew->cf);
161 for (
int i=0;
i<
k;
i++)
162 Jold->m[
i] =
p_PermPoly(Jnew->m[
i],cycleAllVariables,rGraded,rGradedNew,identity,
NULL,0);
166 rGraded = rGradedNew;
177 for (
int i=0;
i<
k;
i++)
185 int jDeshifted = (
j-currentSaturationVariable)%n;
186 if (jDeshifted<=0) jDeshifted = jDeshifted+n;
193 omFree(cycleAllVariables);
207 omFree(cycleAllVariables);
static FORCE_INLINE BOOLEAN n_IsUnit(number n, const coeffs r)
TRUE iff n has a multiplicative inverse in the given coeff field/ring r.
static short rVar(const ring r)
#define rVar(r) (r->N)
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
ideal gfanlib_monomialabortStd_wrapper(ideal I, ring r, tHomog h=testHomog)
int * ZVectorToIntStar(const gfan::ZVector &v, bool &overflow)
static long p_SubExp(poly p, int v, long ee, ring r)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
poly p_PermPoly(poly p, const int *perm, const ring oldRing, const ring dst, nMapFunc nMap, const int *par_perm, int OldPar, BOOLEAN use_mult)
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...
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent : the integer VarOffset encodes:
ring rCopy0(const ring r, BOOLEAN copy_qideal, BOOLEAN copy_ordering)
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
static FORCE_INLINE nMapFunc n_SetMap(const coeffs src, const coeffs dst)
set the mapping function pointers for translating numbers from src to dst
void rChangeCurrRing(ring r)
ideal idInit(int idsize, int rank)
initialise an ideal / module
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
void rDelete(ring r)
unconditionally deletes fields in r
static void p_Setm(poly p, const ring r)