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 );
void pLcmRat(poly a, poly b, poly m, int rat_shift)
Compatiblity layer for legacy polynomial operations (over currRing)
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
BOOLEAN p_DivisibleByRat(poly a, poly b, int ishift, const ring r)
poly nc_rat_ReduceSpolyNew(const poly p1, poly p2, int ishift, const ring r)
void WerrorS(const char *s)
poly singclap_pdivide(poly f, poly g, const ring r)
#define pGetComp(p)
Component.
static poly p_Copy(poly p, const ring r)
returns a copy of p
#define pGetExp(p, i)
Exponent.
static poly nc_mm_Mult_p(const poly m, poly p, 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 long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
void p_LmDeleteAndNextRat(poly *p, int ishift, ring r)
BOOLEAN p_LmIsConstantCompRat(const poly p, const ring r)
poly singclap_gcd(poly f, poly g, const ring r)
polynomial gcd via singclap_gcd_r resp. idSyzygies destroys f and g
poly nc_rat_CreateSpoly(poly pp1, poly pp2, int ishift, const ring r)
static int si_max(const int a, const int b)
poly p_GetCoeffRat(poly p, int ishift, ring r)
void PrintS(const char *s)
#define p_LmCheckPolyRing1(p, r)
poly p_HeadRat(poly p, int ishift, ring r)
ideal idSyzygies(ideal h1, tHomog h, intvec **w, BOOLEAN setSyzComp, BOOLEAN setRegularity, int *deg, GbVariant alg)
static void p_Delete(poly *p, const ring r)
ideal idInit(int idsize, int rank)
initialise an ideal / module
const Variable & v
< [in] a sqrfree bivariate poly
BOOLEAN p_LmIsConstantRat(const poly p, const ring r)
static void p_ExpVectorDiff(poly pr, poly p1, poly p2, const 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
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 ...
void p_ExpVectorDiffRat(poly pr, poly p1, poly p2, int ishift, ring r)
ideal ncGCD2(poly p, poly q, const ring r)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
static void p_Setm(poly p, const ring r)
static poly p_GetExp_k_n(poly p, int l, int k, const ring r)
int redRat(poly *h, poly *reducer, int *red_length, int rl, int ishift, ring r)
static poly p_Neg(poly p, const ring r)
ideal ncGCD(poly p, poly q, const ring r)
void p_wrp(poly p, ring lmRing, ring tailRing)
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),...
static poly p_Add_q(poly p, poly q, const ring r)
static poly p_Mult_q(poly p, poly q, const ring r)