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 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 rIsPluralRing(const ring r)
we must always have this test!
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