 |
My Project
UNKNOWN_GIT_VERSION
|
Go to the source code of this file.
|
typedef std::pair< int, int > | mark |
|
typedef std::vector< std::pair< int, int > > | marks |
|
◆ mark
typedef std::pair<int,int> mark |
◆ marks
typedef std::vector<std::pair<int,int> > marks |
◆ isOrderingLocalInT()
bool isOrderingLocalInT |
( |
const ring |
r | ) |
|
◆ ppreduceInitially()
bool ppreduceInitially |
( |
ideal |
I, |
|
|
const ring |
r, |
|
|
const number |
p |
|
) |
| |
reduces I initially with respect to itself.
assumes that the generators of I are homogeneous in x and that p-t is in I.
sorts Hi according to degree in t in descending order (lowest first, highest last)
Definition at line 583 of file ppinitialReduction.cc.
605 std::map<long,ideal>
H;
int n =
IDELEMS(I);
606 for (
int i=0;
i<n;
i++)
612 for (
int j=2;
j<=r->N;
j++)
614 std::map<long,ideal>::iterator it =
H.find(d);
619 std::pair<long,ideal> Hd(d,
idInit(1));
620 Hd.second->m[0] = I->m[
i];
626 std::map<long,ideal>::iterator it=
H.begin();
627 ideal Hi = it->second;
645 for (it++; it!=
H.end(); it++)
655 for (
int i=1;
i<
k;
i++)
668 for (
int i=n-
m-
l;
i<n;
i++)
672 memcpy(&(
G->m[
i]),&(Hi->m[kH]),(n-
i)*
sizeof(poly));
678 G->m[
i] =
G->m[kG++];
680 G->m[
i] = Hi->m[kH++];
◆ pReduce()
void pReduce |
( |
ideal & |
I, |
|
|
const number |
p, |
|
|
const ring |
r |
|
) |
| |
◆ pReduceInhomogeneous()
void pReduceInhomogeneous |
( |
poly & |
g, |
|
|
const number |
p, |
|
|
const ring |
r |
|
) |
| |
static poly p_LmDeleteAndNext(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 void idShallowDelete(ideal *h)
id_ShallowDelete deletes the monomials of the polynomials stored inside of it
static poly p_LmInit(poly p, const ring r)
bool ppreduceInitially(poly *hStar, const poly g, const ring r)
reduces h initially with respect to g, returns false if h was initially reduced in the first place,...
BOOLEAN idInsertPoly(ideal h1, poly h2)
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
bool p_xLeadmonomDivisibleBy(const poly g, const poly f, 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
static FORCE_INLINE number n_Add(number a, number b, const coeffs r)
return the sum of 'a' and 'b', i.e., a+b
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
poly p_Cleardenom(poly p, const ring r)
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
static int p_LmCmp(poly p, poly q, const ring r)
void pReduce(poly &g, const number p, const ring r)
static void p_Delete(poly *p, const ring r)
static poly p_Add_q(poly p, poly q, const ring r)
ideal idInit(int idsize, int rank)
initialise an ideal / module
static number p_SetCoeff(poly p, number n, ring r)
void WerrorS(const char *s)
static long p_AddExp(poly p, int v, long ee, ring r)
static FORCE_INLINE BOOLEAN n_DivBy(number a, number b, const coeffs r)
test whether 'a' is divisible 'b'; for r encoding a field: TRUE iff 'b' does not represent zero in Z:...
static FORCE_INLINE void n_Power(number a, int b, number *res, const coeffs r)
fill res with the power a^b
static void p_Setm(poly p, const ring r)
const CanonicalForm int s
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of 'a' and 'b', i.e., a/b; raises an error if 'b' is not invertible in r exceptio...
CanonicalForm subst(const CanonicalForm &f, const CFList &a, const CFList &b, const CanonicalForm &Rstar, bool isFunctionField)
static FORCE_INLINE BOOLEAN n_IsUnit(number n, const coeffs r)
TRUE iff n has a multiplicative inverse in the given coeff field/ring r.
void divideByCommonGcd(poly &g, const ring r)