184 #ifdef TEST_OPT_DEBUG_RED
230 printf(
"IN KSREDUCEPOLYSIG: \n");
234 printf(
"--------------\n");
239 printf(
"------------------- IN KSREDUCEPOLYSIG: --------------------\n");
244 printf(
"--------------\n");
251 printf(
"%d -- %d sig\n",sigSafe,PW->is_sigsafe);
260 PR->is_redundant =
TRUE;
265 PR->is_redundant =
FALSE;
266 poly p1 = PR->GetLmTailRing();
267 poly p2 = PW->GetLmTailRing();
289 poly _p = (PR->t_p !=
NULL ? PR->t_p : PR->p);
292 if (PR->t_p!=
NULL) PR->t_p=_p;
else PR->p=_p;
301 PR->LmDeleteAndIter();
302 if (coef !=
NULL) *coef =
n_Init(1, tailRing);
315 if (strat ==
NULL)
return 2;
318 p1 = PR->GetLmTailRing();
319 p2 = PW->GetLmTailRing();
334 if ((ct == 0) || (ct == 2))
335 PR->Tail_Mult_nn(an);
336 if (coef !=
NULL) *coef = an;
341 if (coef !=
NULL) *coef =
n_Init(1, tailRing);
346 PR->Tail_Minus_mm_Mult_qq(lm, t2, PW->GetpLength() - 1, spNoether);
348 PR->LmDeleteAndIter();
351 #ifdef HAVE_SHIFTBBA_NONEXISTENT
360 PR->SetShortExpVector();
364 #if defined(KDEBUG) && defined(TEST_OPT_DEBUG_RED)
static void nc_kBucketPolyRed(kBucket_pt b, poly p, number *c)
void nc_PolyPolyRed(poly &b, poly p, number *c, const ring r)
static FORCE_INLINE BOOLEAN n_IsOne(number n, const coeffs r)
TRUE iff 'n' represents the one element.
static BOOLEAN p_LmExpVectorAddIsOk(const poly p1, const poly p2, const ring r)
BEGIN_NAMESPACE_SINGULARXX const ring const ring tailRing
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
int ksCheckCoeff(number *a, number *b)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
static bool rIsPluralRing(const ring r)
we must always have this test!
static number p_SetCoeff(poly p, number n, ring r)
static int pLength(poly a)
poly p_Shrink(poly p, int lV, const ring r)
BOOLEAN p_CheckPolyRing(poly p, ring r)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
static BOOLEAN p_DivisibleBy(poly a, poly b, const ring r)
static int p_LmCmp(poly p, poly q, const ring r)
BOOLEAN kStratChangeTailRing(kStrategy strat, LObject *L, TObject *T, unsigned long expbound)
static void p_ExpVectorSub(poly p1, poly p2, const ring r)
static void p_ExpVectorAdd(poly p1, poly p2, const ring r)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL ...
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
static void p_ExpVectorAddSub(poly p1, poly p2, poly p3, const ring r)
static long p_MaxComp(poly p, ring lmRing, ring tailRing)
#define pCopy(p)
return a copy of the poly