 |
My Project
debian-1:4.1.1-p2+ds-4build3
|
#include "config.h"
#include "timing.h"
#include "canonicalform.h"
#include "cfCharSets.h"
#include "cfCharSetsUtil.h"
#include "cf_algorithm.h"
#include "facAlgFunc.h"
Go to the source code of this file.
|
| TIMING_DEFINE_PRINT (neworder_time) Varlist new order(const CFList &PolyList) |
|
CFList | newordercf (const CFList &PolyList) |
|
IntList | neworderint (const CFList &PolyList) |
|
CFList | reorder (const Varlist &betterorder, const CFList &PS) |
|
CFFList | reorder (const Varlist &betterorder, const CFFList &PS) |
|
ListCFList | reorder (const Varlist &betterorder, const ListCFList &Q) |
|
CFList | basicSet (const CFList &PS) |
| basic set in the sense of Wang a.k.a. minimal ascending set in the sense of Greuel/Pfister More...
|
|
CFList | charSet (const CFList &PS) |
| characteristic set More...
|
|
CFList | charSetN (const CFList &PS) |
| medial set More...
|
|
CFList | charSetViaCharSetN (const CFList &PS) |
| compute a characteristic set via medial set More...
|
|
CFList | modCharSet (const CFList &L, StoreFactors &StoredFactors, bool removeContents) |
| modified medial set More...
|
|
CFList | charSetViaModCharSet (const CFList &PS, StoreFactors &StoredFactors, bool removeContents) |
| characteristic set via modified medial set More...
|
|
CFList | charSetViaModCharSet (const CFList &PS, bool removeContents) |
| modified characteristic set, i.e. a characteristic set with certain factors removed More...
|
|
CFList | modCharSet (const CFList &PS, bool removeContents) |
|
ListCFList | charSeries (const CFList &L) |
| characteristic series More...
|
|
static bool | irreducible (const CFList &AS) |
|
static CFList | irredAS (CFList &AS, int &indexRed, CanonicalForm &reducible) |
|
ListCFList | irrCharSeries (const CFList &PS) |
| irreducible characteristic series More...
|
|
This file provides functions to compute characteristic sets
- Note
- some of the code is code from libfac or derived from code from libfac. Libfac is written by M. Messollen. See also COPYING for license information and README for general information on characteristic sets.
ABSTRACT: Descriptions can be found in Wang "On the Parallelization of
characteristic-set based algorithms" or Greuel/Pfister "A Singular
Introduction to Commutative Algebra".
- Authors
- Martin Lee
Definition in file cfCharSets.cc.
◆ basicSet()
basic set in the sense of Wang a.k.a. minimal ascending set in the sense of Greuel/Pfister
Definition at line 150 of file cfCharSets.cc.
174 for (
i= QS;
i.hasItem();
i++)
176 if (
degree (
i.getItem(), cb) < degb)
◆ charSeries()
characteristic series
Definition at line 411 of file cfCharSets.cc.
441 select (ppi,
l.length(), ppi1, ppi2);
450 if (
l.length() - 3 < highestLevel)
◆ charSet()
characteristic set
Definition at line 187 of file cfCharSets.cc.
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);
◆ charSetN()
medial set
Definition at line 216 of file cfCharSets.cc.
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);
◆ charSetViaCharSetN()
compute a characteristic set via medial set
Definition at line 246 of file cfCharSets.cc.
256 for (iter2= sqrfFactors; iter2.
hasItem(); iter2++)
257 sqrf *= iter2.
getItem().factor();
263 if (
result.isEmpty() ||
result.getFirst().inCoeffDomain())
◆ charSetViaModCharSet() [1/2]
modified characteristic set, i.e. a characteristic set with certain factors removed
Definition at line 397 of file cfCharSets.cc.
◆ charSetViaModCharSet() [2/2]
characteristic set via modified medial set
modified characteristic set, i.e. a characteristic set with certain factors removed
Definition at line 356 of file cfCharSets.cc.
367 for (iter2= sqrfFactors; iter2.
hasItem(); iter2++)
368 sqrf *= iter2.
getItem().factor();
376 if (
result.isEmpty() ||
result.getFirst().inCoeffDomain())
◆ irrCharSeries()
irreducible characteristic series
Definition at line 568 of file cfCharSets.cc.
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);
◆ irredAS()
Definition at line 507 of file cfCharSets.cc.
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();
◆ irreducible()
◆ modCharSet() [1/2]
modified medial set
Definition at line 284 of file cfCharSets.cc.
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;
◆ modCharSet() [2/2]
◆ newordercf()
◆ neworderint()
◆ reorder() [1/3]
◆ reorder() [2/3]
◆ reorder() [3/3]
◆ TIMING_DEFINE_PRINT()
TIMING_DEFINE_PRINT |
( |
neworder_time |
| ) |
const & |
|
new |
Definition at line 31 of file cfCharSets.cc.
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 : ");
CFList FS2
candidate factors that might get removed
ListCFList contract(const ListCFList &cs)
CanonicalForm Prem(const CanonicalForm &F, const CanonicalForm &G)
pseudo remainder of F by G with certain factors of LC (g) cancelled
class to store factors that get removed during char set computation
CFList basicSet(const CFList &PS)
basic set in the sense of Wang a.k.a. minimal ascending set in the sense of Greuel/Pfister
static CFList irredAS(CFList &AS, int &indexRed, CanonicalForm &reducible)
CFList only_in_one(const CFList &PS, const Variable &x)
Varlist neworder(const CFList &PolyList)
CFList modCharSet(const CFList &L, StoreFactors &StoredFactors, bool removeContents)
modified medial set
CFList factorsOfInitials(const CFList &L)
poly initial(const poly p, const ring r, const gfan::ZVector &w)
Returns the initial form of p with respect to w.
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
bool isSubset(const CFList &PS, const CFList &Cset)
is PS a subset of Cset ?
void sortCFListByLevel(CFList &list)
sort in descending order of level of elements
template List< Variable > Difference(const List< Variable > &, const List< Variable > &)
void select(const ListCFList &ppi, int length, ListCFList &ppi1, ListCFList &ppi2)
CFList reorder(const Varlist &betterorder, const CFList &PS)
TIMING_START(fac_alg_resultant)
CFList FS1
factors that were removed
void removeFactors(CanonicalForm &r, StoreFactors &StoredFactors, CFList &removedFactors)
ListCFList adjoin(const CFList &is, const CFList &qs, const ListCFList &qh)
Variable get_max_var(const CFList &PS)
CFFList factorize(const CanonicalForm &f, bool issqrfree=false)
factorization over or
Varlist reorderb(const Varlist &difference, const CFList &PS, const int highest_level)
#define TIMING_PRINT(t, msg)
void sortListCFList(ListCFList &list)
sort in descending order of length of elements
CFList uniGcd(const CFList &L)
static poly normalize(poly next_p, ideal add_generators, syStrategy syzstr, int *g_l, int *p_l, int crit_comp)
factory's class for variables
ListCFList adjoinb(const CFList &is, const CFList &qs, const ListCFList &qh, const CFList &cs)
CFList charSetViaModCharSet(const CFList &PS, StoreFactors &StoredFactors, bool removeContents)
characteristic set via modified medial set
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...
CFList charSetN(const CFList &PS)
medial set
CanonicalForm lowestRank(const CFList &L)
CFFList sqrFree(const CanonicalForm &f, bool sort=false)
squarefree factorization
template bool find(const List< CanonicalForm > &, const CanonicalForm &)
template List< Variable > Union(const List< Variable > &, const List< Variable > &)
const Variable & v
< [in] a sqrfree bivariate poly
static bool irreducible(const CFList &AS)
int status int void size_t count
CFList factorPSet(const CFList &PS)
void removeContent(CanonicalForm &F, CanonicalForm &cF)
void inplaceUnion(const ListCFList &a, ListCFList &b)
Union of a and b stored in b.