55 #define PLURAL_INTERNAL_DECLARATIONS 1 78 P.SetShortExpVector();
88 PrintS(
"redNF: starting S: ");
164 PrintS(
"redNF: starting S: ");
165 for( j = 0; j <=
max_ind; j++ )
167 Print(
"S[%d] (of size: %d): ", j,
pLength(strat->S[j]));
178 P.SetShortExpVector();
197 PrintS(
"redNF: starting S: ");
198 for( j = 0; j <=
max_ind; j++ )
200 Print(
"S[%d] (of size: %d): ", j,
pLength(strat->S[j]));
267 p =
redtailBba(p,max_ind,strat,(lazyReduce & KSTD_NF_NONORM)==0);
325 res=
kNF1(F,Q,pp,strat,lazyReduce);
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
void kBucketClear(kBucket_pt bucket, poly *p, int *length)
int kFindNextDivisibleByInS(const kStrategy strat, int start, int max_ind, LObject *L)
ideal SCAQuotient(const ring r)
static void nc_kBucketPolyRed(kBucket_pt b, poly p, number *c)
KINLINE poly redtailBba_Z(poly p, int pos, kStrategy strat)
#define idDelete(H)
delete an ideal
Compatiblity layer for legacy polynomial operations (over currRing)
number kBucketPolyRed(kBucket_pt bucket, poly p1, int l1, poly spNoether)
poly kNF2Length(ideal F, ideal Q, poly q, kStrategy strat, int lazyReduce)
const poly kBucketGetLm(kBucket_pt bucket)
kBucketInit(P.bucket, P.p, pLength(P.p))
NF which uses pLength instead of pSize!
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
KINLINE poly redtailBba(poly p, int pos, kStrategy strat, BOOLEAN normalize)
poly p_KillSquares(const poly p, const short iFirstAltVar, const short iLastAltVar, const ring r)
#define BEGIN_NAMESPACE_SINGULARXX
END_NAMESPACE BEGIN_NAMESPACE_SINGULARXX ideal Q
#define TEST_OPT_NOT_BUCKETS
void(* initEcart)(TObject *L)
void initS(ideal F, ideal Q, kStrategy strat)
void kBucketDestroy(kBucket_pt *bucket_pt)
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
END_NAMESPACE BEGIN_NAMESPACE_SINGULARXX ideal poly int syzComp
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
poly kNF1(ideal F, ideal Q, poly q, kStrategy strat, int lazyReduce)
#define END_NAMESPACE_SINGULARXX
void initEcartBBA(TObject *h)
void(* enterS)(LObject &h, int pos, kStrategy strat, int atR)
int kFindDivisibleByInS(const kStrategy strat, int *max_ind, LObject *L)
return -1 if no divisor is found number of first divisor in S, otherwise
void initBuchMoraCrit(kStrategy strat)
static int si_max(const int a, const int b)
void PrintS(const char *s)
BEGIN_NAMESPACE() static poly redNFLength(poly h
reduction procedure for the normal form, which uses pLength instead of pSize!
static unsigned pLength(poly a)
static short scaFirstAltVar(ring r)
static void p_Delete(poly *p, const ring r)
static BOOLEAN rField_is_Ring(const ring r)
currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
void pNorm(poly p, const ring R=currRing)
static short scaLastAltVar(ring r)
static bool rIsSCA(const ring r)
kBucket_pt kBucketCreate(const ring bucket_ring)
Creation/Destruction of buckets.
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
#define SI_RESTORE_OPT1(A)
void kDebugPrint(kStrategy strat)
END_NAMESPACE BEGIN_NAMESPACE_SINGULARXX ideal poly int int lazyReduce
void enterSBba(LObject &p, int atS, kStrategy strat, int atR)
#define pCopy(p)
return a copy of the poly