53 const char *usage =
"'ClearContent' needs a (non-zero!) poly or vector argument...";
71 poly ph =
reinterpret_cast<poly
>(
h->Data());
99 const char *usage =
"'ClearDenominators' needs a (non-zero!) poly or vector argument...";
117 poly ph =
reinterpret_cast<poly
>(
h->Data());
143static int getOptionalInteger(const leftv& h, const int _n)
147 int n = (int)(
long)(
h->Data());
150 Warn(
"Negative (%d) optional integer argument", n);
170 Print (
"intvec: {rows: %d, cols: %d, length: %d, Values: \n",
v->rows(),
v->cols(),
v->length());
172 for (
int i = 0;
i <
v->rows();
i++)
175 for (
int j = 0;
j <
v->cols();
j++)
176 Print (
" %5d", (*
v)[
j +
i * (
v->cols())] );
193 const poly
p = (poly)(
h->Data());
204 res->data =
reinterpret_cast<void *
>(
jjLONG2N(iComp));
214 WerrorS(
"`leadcomp(<poly/vector>)` expected");
224 const int s = (int)((
long)(
h->Data()));
226 if(
s != -1 &&
s != 1 )
228 WerrorS(
"`MakeInducedSchreyerOrdering(<int>)` called with wrong integer argument (must be +-1)!");
252 p = (int)((
long)(
h->Data()));
h=
h->next;
260 WerrorS(
"`GetInducedData([int])` called on incompatible ring (not created by 'MakeInducedSchreyerOrdering'!)");
265 const int iLimit = r->typ[pos].data.is.limit;
266 const ideal F = r->typ[pos].data.is.F;
274 l->m[0].data =
reinterpret_cast<void *
>(iLimit);
290 l->m[1].data =
reinterpret_cast<void *
>(FF);
293 res->data =
reinterpret_cast<void *
>(
l);
309 WerrorS(
"`SetInducedReferrence(<ideal/module>, [int[, int]])` expected");
313 const ideal F = (ideal)
h->Data(); ;
320 rank = (int)((
long)(
h->Data()));
h=
h->next;
329 p = (int)((
long)(
h->Data()));
h=
h->next;
337 WerrorS(
"`SetInducedReferrence(<ideal/module>, [int[, int]])` called on incompatible ring (not created by 'MakeInducedSchreyerOrdering'!)");
360 WerrorS(
"`idPrepare(<module>)` expected");
364 const ideal I =
reinterpret_cast<ideal
>(
h->Data());
374 iComp = (int)((
long)(
h->Data()));
378 if( (!isSyz) && (-1 == posIS) )
380 WerrorS(
"`idPrepare(<...>)` called on incompatible ring (not created by 'MakeSyzCompOrdering' or 'MakeInducedSchreyerOrdering'!)");
435 res->data =
reinterpret_cast<void *
>(J);
443 psModulFunctions->iiAddCproc((currPack->libname? currPack->libname: ""), (char*)C, D, E);
Concrete implementation of enumerators over polynomials.
void atSet(idhdl root, char *name, void *data, int typ)
void * atGet(idhdl root, const char *name, int t, void *defaultReturnValue)
This is a polynomial enumerator for simple iteration over coefficients of polynomials.
Coefficient rings, fields and other domains suitable for Singular polynomials.
static FORCE_INLINE void n_ClearDenominators(ICoeffsEnumerator &numberCollectionEnumerator, number &d, const coeffs r)
(inplace) Clears denominators on a collection of numbers number d is the LCM of all the coefficient d...
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
static FORCE_INLINE void n_ClearContent(ICoeffsEnumerator &numberCollectionEnumerator, number &c, const coeffs r)
Computes the content and (inplace) divides it out on a collection of numbers number c is the content ...
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
void WerrorS(const char *s)
static ideal idPrepare(ideal h1, ideal h11, tHomog hom, int syzcomp, intvec **w, GbVariant alg)
ideal id_Copy(ideal h1, const ring r)
copy an ideal
intvec * ivCopy(const intvec *o)
ideal kStd2(ideal F, ideal Q, tHomog h, intvec **w, bigintmat *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
generic interface to GB/SB computations, large hilbert vectors
The main handler for Singular numbers which are suitable for Singular polynomials.
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Compatibility layer for legacy polynomial operations (over currRing)
void PrintS(const char *s)
ring rAssure_InducedSchreyerOrdering(const ring r, BOOLEAN complete, int sgn)
int rGetISPos(const int p, const ring r)
Finds p^th IS ordering, and returns its position in r->typ[] returns -1 if something went wrong!...
BOOLEAN rSetISReference(const ring r, const ideal F, const int i, const int p)
Changes r by setting induced ordering parameters: limit and reference leading terms F belong to r,...
static int rGetCurrSyzLimit(const ring r)
static BOOLEAN rIsSyzIndexRing(const ring r)
BOOLEAN id_IsModule(ideal A, const ring src)
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
static BOOLEAN GetInducedData(leftv res, leftv h)
?
static BOOLEAN idPrepare(leftv res, leftv h)
Get raw syzygies (idPrepare)
int SI_MOD_INIT syzextra(SModulFunctions *psModulFunctions)
static BOOLEAN leadcomp(leftv res, leftv h)
Get leading component.
static void view(const intvec *v)
static BOOLEAN _ClearDenominators(leftv res, leftv h)
wrapper around n_ClearDenominators
static BOOLEAN SetInducedReferrence(leftv res, leftv h)
Returns old SyzCompLimit, can set new limit.
static BOOLEAN MakeInducedSchreyerOrdering(leftv res, leftv h)
Same for Induced Schreyer ordering (ordering on components is defined by sign!)
static BOOLEAN _ClearContent(leftv res, leftv h)
wrapper around n_ClearContent
static void NoReturn(leftv &res)
static number jjLONG2N(long d)