38 CFList PS= PolyList, PS1=PolyList;
46 for (
int i= highest_level;
i>=1;
i--)
55 else if (is_one.
length() == 0)
64 difference=
reorderb (difference, PS, highest_level);
68 TIMING_PRINT(neworder_time,
"\ntime used for neworder : ");
103 int i= 1, n= betterorder.
length();
114 for (
i= 1;
i <= n;
i++)
122 int i= 1, n= betterorder.
length();
134 for (
i= 1;
i <= n;
i++)
174 for (
i= QS;
i.hasItem();
i++)
176 if (
degree (
i.getItem(), cb) < degb)
189 CFList QS= PS, RS= PS, CSet, tmp;
193 while (!RS.isEmpty())
198 if (CSet.length() > 0 && CSet.getFirst().level() > 0)
201 for (
i= tmp;
i.hasItem();
i++)
203 r=
Prem (
i.getItem(), CSet);
218 CFList QS= PS, RS= PS, CSet, tmp;
222 while (!RS.isEmpty())
228 if (CSet.length() > 0 && CSet.getFirst().level() > 0)
231 for (
i= tmp;
i.hasItem();
i++)
233 r=
Prem (
i.getItem(), CSet);
237 QS=
Union (CSet, RS);
256 for (iter2= sqrfFactors; iter2.
hasItem(); iter2++)
257 sqrf *= iter2.
getItem().factor();
263 if (
result.isEmpty() ||
result.getFirst().inCoeffDomain())
286 CFList QS, RS= L, CSet, tmp, contents,
initial, removedFactors;
289 bool noRemainder=
true;
301 StoredFactors2.
FS1= StoredFactors.
FS1;
306 if (CSet.length() > 0 && CSet.getFirst().level() > 0)
310 for (
i= tmp;
i.hasItem();
i++)
312 r=
Prem (
i.getItem(), CSet);
325 StoredFactors2.
FS1=
Union (StoredFactors2.
FS1, removedFactors);
334 if (removeContents && !noRemainder)
336 StoredFactors.
FS1=
Union (StoredFactors2.
FS1, contents);
337 StoredFactors.
FS2= StoredFactors2.
FS2;
340 StoredFactors= StoredFactors2;
342 QS=
Union (CSet, RS);
348 StoredFactors= StoredFactors2;
367 for (iter2= sqrfFactors; iter2.
hasItem(); iter2++)
368 sqrf *= iter2.
getItem().factor();
376 if (
result.isEmpty() ||
result.getFirst().inCoeffDomain())
441 select (ppi,
l.length(), ppi1, ppi2);
450 if (
l.length() - 3 < highestLevel)
517 for (
i= AS;
i.hasItem();
i++ )
521 if (qs.
getFirst().factor().inCoeffDomain())
528 reducible=
i.getItem();
540 for (nr= 1; nr< AS.
length(); nr++)
549 if (qs.
getFirst().factor().inCoeffDomain())
553 reducible=
i.getItem();
571 CFList qs, cs, factorset, is, ts, L;
579 if (sqrfFactors.
getFirst().factor().inCoeffDomain())
581 for (iter2= sqrfFactors; iter2.
hasItem(); iter2++)
582 sqrf *= iter2.
getItem().factor();
589 int nr_of_iteration= 0, indexRed, highestlevel= 0;
608 if (nr_of_iteration == 0)
610 nr_of_iteration += 1;
615 nr_of_iteration += 1;
620 if (qs.
length() - 3 < highestlevel)
626 factorset= StoredFactors.
FS1;
630 ts=
irredAS (cs, indexRed, reducible);
641 ts=
irredAS (cs, indexRed, reducible);
646 if (cs.
length() == highestlevel)
650 iss=
adjoin (is, qs, qqi);
668 if (
i.getItem() == reducible)
685 qhi=
Union (iss, qhi);
void inplaceUnion(const ListCFList &a, ListCFList &b)
Union of a and b stored in b.
CFList uniGcd(const CFList &L)
void removeFactors(CanonicalForm &r, StoreFactors &StoredFactors, CFList &removedFactors)
CanonicalForm Prem(const CanonicalForm &F, const CanonicalForm &G)
pseudo remainder of F by G with certain factors of LC (g) cancelled
CanonicalForm Premb(const CanonicalForm &f, const CFList &L)
pseudo remainder of f by L with faster test for remainder being zero
CFList only_in_one(const CFList &PS, const Variable &x)
CFList factorsOfInitials(const CFList &L)
void removeContent(CanonicalForm &F, CanonicalForm &cF)
void select(const ListCFList &ppi, int length, ListCFList &ppi1, ListCFList &ppi2)
bool isSubset(const CFList &PS, const CFList &Cset)
is PS a subset of Cset ?
Variable get_max_var(const CFList &PS)
void sortListCFList(ListCFList &list)
sort in descending order of length of elements
ListCFList adjoinb(const CFList &is, const CFList &qs, const ListCFList &qh, const CFList &cs)
void sortCFListByLevel(CFList &list)
sort in descending order of level of elements
ListCFList contract(const ListCFList &cs)
CFList factorPSet(const CFList &PS)
Varlist reorderb(const Varlist &difference, const CFList &PS, const int highest_level)
ListCFList adjoin(const CFList &is, const CFList &qs, const ListCFList &qh)
CanonicalForm lowestRank(const CFList &L)
This file provides utility functions to compute characteristic sets.
CFList charSetViaCharSetN(const CFList &PS)
compute a characteristic set via medial set
CFList charSetViaModCharSet(const CFList &PS, StoreFactors &StoredFactors, bool removeContents)
characteristic set via modified medial set
static bool irreducible(const CFList &AS)
ListCFList charSeries(const CFList &L)
characteristic series
CFList charSet(const CFList &PS)
characteristic set
ListCFList irrCharSeries(const CFList &PS)
irreducible characteristic series
CFList charSetN(const CFList &PS)
medial set
CFList basicSet(const CFList &PS)
basic set in the sense of Wang a.k.a. minimal ascending set in the sense of Greuel/Pfister
CFList newordercf(const CFList &PolyList)
CFList modCharSet(const CFList &L, StoreFactors &StoredFactors, bool removeContents)
modified medial set
CFList reorder(const Varlist &betterorder, const CFList &PS)
static CFList irredAS(CFList &AS, int &indexRed, CanonicalForm &reducible)
IntList neworderint(const CFList &PolyList)
This file provides functions to compute characteristic sets.
Varlist neworder(const CFList &PolyList)
declarations of higher level algorithms.
CFFList FACTORY_PUBLIC sqrFree(const CanonicalForm &f, bool sort=false)
squarefree factorization
CFFList FACTORY_PUBLIC factorize(const CanonicalForm &f, bool issqrfree=false)
factorization over or
class to store factors that get removed during char set computation
CFList FS2
candidate factors that might get removed
CFList FS1
factors that were removed
factory's class for variables
CFFList facAlgFunc2(const CanonicalForm &f, const CFList &as)
factorize a polynomial that is irreducible over the ground field modulo an extension given by an irre...
Factorization over algebraic function fields.
const Variable & v
< [in] a sqrfree bivariate poly
template List< Variable > Union(const List< Variable > &, const List< Variable > &)
template List< Variable > Difference(const List< Variable > &, const List< Variable > &)
template bool find(const List< CanonicalForm > &, const CanonicalForm &)
poly initial(const poly p, const ring r, const gfan::ZVector &w)
Returns the initial form of p with respect to w.
int status int void size_t count
static poly normalize(poly next_p, ideal add_generators, syStrategy syzstr, int *g_l, int *p_l, int crit_comp)
#define TIMING_DEFINE_PRINT(t)
#define TIMING_PRINT(t, msg)