67 if (q ==
NULL)
return p;
89 for (
i=ishift+1;
i<=r->N;
i++)
97 PrintS(
"negative ExpVectorDiff\n");
120 PrintS(
"running syzygy comp. for nc_GCD:\n");
124 PrintS(
"done syzygy comp. for nc_GCD\n");
160 ideal
ncGCD(poly
p, poly q,
const ring r)
349 if ((lCompP1!=lCompP2) && (lCompP1!=0) && (lCompP2!=0))
352 WerrorS(
"nc_rat_CreateSpoly: different non-zero components!");
406 ideal ncsyz =
ncGCD(C,K,r);
407 poly KK = ncsyz->m[0]; ncsyz->m[0]=
NULL;
408 poly CC = ncsyz->m[1]; ncsyz->m[1]=
NULL;
443 PrintS(
" k'(r_f + d^{gamma-alpha} t_f): ");
p_wrp(p1,r);
444 PrintS(
" c'(r_g + d^{gamma-beta} t_g): ");
p_wrp(p2,r);
470 if ((lCompP1!=lCompP2) && (lCompP1!=0) && (lCompP2!=0))
473 WerrorS(
"nc_rat_ReduceSpolyNew: different non-zero components!");
515 ideal ncsyz =
ncGCD(P,K,r);
516 poly KK = ncsyz->m[0]; ncsyz->m[0]=
NULL;
517 poly PP = ncsyz->m[1]; ncsyz->m[1]=
NULL;
546 PrintS(
" end reduction\n");
572 PrintS(
"invoke p_DivByRat with a = ");
579 for(
i=r->N;
i>ishift;
i--)
593 int redRat (poly*
h, poly *reducer,
int *red_length,
int rl,
int ishift, ring r)
595 if ((*
h)==
NULL)
return 0;
607 j=
i;
l=red_length[
i];
653 int i = r->real_var_end;
655 while ( (
p_GetExp(
p,
i,r)==0) && (
i>=r->real_var_start))
659 return (
i+1 == r->real_var_start );
static int si_max(const int a, const int b)
poly singclap_pdivide(poly f, poly g, const ring r)
poly singclap_gcd(poly f, poly g, const ring r)
destroys f and g
static FORCE_INLINE BOOLEAN n_GreaterZero(number n, const coeffs r)
ordered fields: TRUE iff 'n' is positive; in Z/pZ: TRUE iff 0 < m <= roundedBelow(p/2),...
const Variable & v
< [in] a sqrfree bivariate poly
void WerrorS(const char *s)
ideal idSyzygies(ideal h1, tHomog h, intvec **w, BOOLEAN setSyzComp, BOOLEAN setRegularity, int *deg, GbVariant alg)
static poly nc_mm_Mult_p(const poly m, poly p, const ring r)
#define p_LmCheckPolyRing1(p, r)
void p_LmDeleteAndNextRat(poly *p, int ishift, ring r)
poly p_GetCoeffRat(poly p, int ishift, ring r)
static poly p_Neg(poly p, const ring r)
static poly p_Add_q(poly p, poly q, const ring r)
static poly p_Mult_q(poly p, poly q, const ring r)
static poly p_Head(poly p, const ring r)
static int p_Comp_k_n(poly a, poly b, int k, ring r)
static void p_SetCompP(poly p, int i, ring r)
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent @Note: VarOffset encodes the position in p->exp
static void p_ExpVectorDiff(poly pr, poly p1, poly p2, const ring r)
static void p_Setm(poly p, const ring r)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
static poly p_GetExp_k_n(poly p, int l, int k, const ring r)
static void p_Delete(poly *p, const ring r)
static poly p_Copy(poly p, const ring r)
returns a copy of p
void p_wrp(poly p, ring lmRing, ring tailRing)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Compatiblity layer for legacy polynomial operations (over currRing)
#define pGetComp(p)
Component.
#define pGetExp(p, i)
Exponent.
void pTakeOutComp(poly *p, long comp, poly *q, int *lq, const ring R=currRing)
Splits *p into two polys: *q which consists of all monoms with component == comp and *p of all other ...
BOOLEAN p_DivisibleByRat(poly a, poly b, int ishift, const ring r)
poly nc_rat_CreateSpoly(poly pp1, poly pp2, int ishift, const ring r)
BOOLEAN p_LmIsConstantCompRat(const poly p, const ring r)
BOOLEAN p_LmIsConstantRat(const poly p, const ring r)
void pLcmRat(poly a, poly b, poly m, int rat_shift)
poly p_HeadRat(poly p, int ishift, ring r)
ideal ncGCD2(poly p, poly q, const ring r)
void p_ExpVectorDiffRat(poly pr, poly p1, poly p2, int ishift, ring r)
ideal ncGCD(poly p, poly q, const ring r)
int redRat(poly *h, poly *reducer, int *red_length, int rl, int ishift, ring r)
poly nc_rat_ReduceSpolyNew(const poly p1, poly p2, int ishift, const ring r)
void PrintS(const char *s)
ideal idInit(int idsize, int rank)
initialise an ideal / module
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix