377 ring
r = currentStrategy.getStartingRing();
378 ideal I = currentStrategy.getStartingIdeal();
379 currentStrategy.reduce(I,r);
380 if (currentStrategy.isValuationTrivial())
388 for (
int i=0;
i<
k;
i++)
402 if (zc.dimension()>=currentStrategy.getExpectedDimension())
418 while (zc.dimension()<currentStrategy.getExpectedDimension())
422 gfan::ZVector startingPoint = startingData.first;
431 inI =
initial(inI,s,startingPoint);
444 for (
int i=0;
i<
k;
i++)
450 for (
int i=0;
i<
k;
i++)
476 for (
int i=0;
i<
k;
i++)
487 if (zc.dimension()>=currentStrategy.getExpectedDimension())
506 gfan::ZVector startingPoint = startingData.first;
512 inJ =
initial(inJ,s,startingPoint);
513 ideal inI =
initial(I,r,startingPoint);
518 if (zc.dimension()==currentStrategy.getExpectedDimension())
521 ideal J =
lift(I,r,inJ,s);
531 ring rShortcut =
rCopy0(r);
533 rShortcut->cf =
nCopyCoeff((currentStrategy.getShortcutRing())->
cf);
537 ideal inJShortcut =
idInit(k);
539 for (
int i=0;
i<
k;
i++)
564 inJShortcut =
initial(inJShortcut,sShortcut,interiorPoint);
565 inI =
initial(inI,r,interiorPoint);
575 inJ->m[0] =
p_One(s);
576 identityMap =
n_SetMap(r->cf,s->cf);
577 p_SetCoeff(inJ->m[0],identityMap(currentStrategy.getUniformizingParameter(),r->cf,s->cf),s);
579 for (
int i=0;
i<
k;
i++)
581 if(inJShortcut->m[
i]!=
NULL)
591 for (
int i=0;
i<
k;
i++)
597 for (
int i=0;
i<
k;
i++)
const CanonicalForm int s
gfan::ZCone getPolyhedralCone() const
gfan::ZCone groebnerCone(const ideal I, const ring r, const gfan::ZVector &w)
ring getPolynomialRing() const
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
groebnerCone tropicalStartingCone(const tropicalStrategy ¤tStrategy)
static gfan::ZCone linealitySpaceOfGroebnerFan(const ideal I, const ring r)
static number p_SetCoeff(poly p, number n, ring r)
ideal lift(const ideal J, const ring r, const ideal inI, const ring s)
poly initial(const poly p, const ring r, const gfan::ZVector &w)
Returns the initial form of p with respect to w.
poly p_PermPoly(poly p, const int *perm, const ring oldRing, const ring dst, nMapFunc nMap, const int *par_perm, int OldPar, BOOLEAN use_mult)
BOOLEAN rComplete(ring r, int force)
this needs to be called whenever a new ring is created: new fields in ring are created (like VarOffse...
ring createTraversalStartingRing(const ring s, const gfan::ZMatrix &startingPoints, const tropicalStrategy ¤tStrategy)
ideal gfanlib_kStd_wrapper(ideal I, ring r, tHomog h=testHomog)
ring rCopy0(const ring r, BOOLEAN copy_qideal, BOOLEAN copy_ordering)
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
bool areIdealsEqual(ideal I, ring r, ideal J, ring s)
poly checkForMonomialViaSuddenSaturation(const ideal I, const ring r)
gfan::ZMatrix tropicalStartingPoints
static FORCE_INLINE nMapFunc n_SetMap(const coeffs src, const coeffs dst)
set the mapping function pointers for translating numbers from src to dst
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
static FORCE_INLINE coeffs nCopyCoeff(const coeffs r)
"copy" coeffs, i.e. increment ref
static void p_Delete(poly *p, const ring r)
ideal idInit(int idsize, int rank)
initialise an ideal / module
void rDelete(ring r)
unconditionally deletes fields in r
gfan::ZVector getInteriorPoint() const
std::pair< gfan::ZVector, groebnerCone > tropicalStartingDataViaGroebnerFan(const ideal I, const ring r, const tropicalStrategy ¤tStrategy)
Computes a starting point outside the lineatliy space by traversing the Groebner fan, checking each cone whether it contains a ray in the tropical variety.
void nKillChar(coeffs r)
undo all initialisations
ideal getPolynomialIdeal() const