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);
65 reorder=
Union (reorder, difference);
68 TIMING_PRINT(neworder_time,
"\ntime used for neworder : ");
114 for (i= 1; i <=
n; i++)
134 for (i= 1; i <=
n; i++)
189 CFList QS= PS, RS= PS, CSet, tmp;
193 while (!RS.isEmpty())
198 if (CSet.length() > 0 && CSet.getFirst().level() > 0)
218 CFList QS= PS, RS= PS, CSet, tmp;
222 while (!RS.isEmpty())
228 if (CSet.length() > 0 && CSet.getFirst().level() > 0)
237 QS=
Union (CSet, RS);
256 for (iter2= sqrfFactors; iter2.
hasItem(); iter2++)
257 sqrf *= iter2.
getItem().factor();
286 CFList QS, RS= L, CSet, tmp, contents,
initial, removedFactors;
289 bool noRemainder=
true;
301 StoredFactors2.
FS1= StoredFactors.
FS1;
302 StoredFactors2.
FS2=
Union (StoredFactors2.
FS2, initial);
306 if (CSet.length() > 0 && CSet.getFirst().level() > 0)
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();
424 for (iter= l; iter.
hasItem(); iter++)
427 if (highestLevel < iter.
getItem().level())
428 highestLevel= iter.
getItem().level();
450 if (l.
length() - 3 < highestLevel)
469 tmp2=
adjoin (ini, l, qqi);
470 tmp=
Union (tmp2, tmp);
521 if (qs.
getFirst().factor().inCoeffDomain())
540 for (nr= 1; nr< AS.
length(); nr++)
549 if (qs.
getFirst().factor().inCoeffDomain())
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);
int status int void size_t count
void sortCFListByLevel(CFList &list)
sort in descending order of level of elements
void removeFactors(CanonicalForm &r, StoreFactors &StoredFactors, CFList &removedFactors)
ListCFList adjoin(const CFList &is, const CFList &qs, const ListCFList &qh)
#define TIMING_PRINT(t, msg)
Variable get_max_var(const CFList &PS)
static poly normalize(poly next_p, ideal add_generators, syStrategy syzstr, int *g_l, int *p_l, int crit_comp)
CFList FS1
factors that were removed
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...
void inplaceUnion(const ListCFList &a, ListCFList &b)
Union of a and b stored in b.
Varlist reorderb(const Varlist &difference, const CFList &PS, const int highest_level)
CFList factorsOfInitials(const CFList &L)
CFList charSet(const CFList &PS)
characteristic set
void sortListCFList(ListCFList &list)
sort in descending order of length of elements
factory's class for variables
class to store factors that get removed during char set computation
CFList uniGcd(const CFList &L)
const CanonicalForm CFMap CFMap int &both_non_zero int n
CFList basicSet(const CFList &PS)
basic set in the sense of Wang a.k.a. minimal ascending set in the sense of Greuel/Pfister ...
bool isSubset(const CFList &PS, const CFList &Cset)
is PS a subset of Cset ?
void removeContent(CanonicalForm &F, CanonicalForm &cF)
Varlist neworder(const CFList &PolyList)
CFList charSetViaModCharSet(const CFList &PS, StoreFactors &StoredFactors, bool removeContents)
characteristic set via modified medial set
ListCFList irrCharSeries(const CFList &PS)
irreducible characteristic series
template bool find(const List< CanonicalForm > &, const CanonicalForm &)
template List< Variable > Union(const List< Variable > &, const List< Variable > &)
This file provides utility functions to compute characteristic sets.
poly initial(const poly p, const ring r, const gfan::ZVector w)
Returns the initial form of p with respect to w.
CFFList factorize(const CanonicalForm &f, bool issqrfree=false)
factorization over or
CFList factorPSet(const CFList &PS)
ListCFList adjoinb(const CFList &is, const CFList &qs, const ListCFList &qh, const CFList &cs)
IntList neworderint(const CFList &PolyList)
Factorization over algebraic function fields.
CFList FS2
candidate factors that might get removed
TIMING_DEFINE_PRINT(neworder_time) Varlist new order(const CFList &PolyList)
void select(const ListCFList &ppi, int length, ListCFList &ppi1, ListCFList &ppi2)
This file provides functions to compute characteristic sets.
ListCFList contract(const ListCFList &cs)
declarations of higher level algorithms.
CFList charSetN(const CFList &PS)
medial set
CanonicalForm lowestRank(const CFList &L)
const Variable & v
< [in] a sqrfree bivariate poly
CFList only_in_one(const CFList &PS, const Variable &x)
CFList charSetViaCharSetN(const CFList &PS)
compute a characteristic set via medial set
CanonicalForm Premb(const CanonicalForm &f, const CFList &L)
pseudo remainder of f by L with faster test for remainder being zero
CanonicalForm Prem(const CanonicalForm &F, const CanonicalForm &G)
pseudo remainder of F by G with certain factors of LC (g) cancelled
ListCFList charSeries(const CFList &L)
characteristic series
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)
static bool irreducible(const CFList &AS)
CFFList sqrFree(const CanonicalForm &f, bool sort=false)
squarefree factorization
template List< Variable > Difference(const List< Variable > &, const List< Variable > &)