3 #include <gfanlib/gfanlib_vector.h> 21 for (
int j=0;
j<
i;
j++)
22 if (r->wvhdl[
j]!=
NULL)
40 std::pair<ideal,ring>
flip(
const ideal I,
const ring
r,
41 const gfan::ZVector interiorPoint,
42 const gfan::ZVector facetNormal,
43 const gfan::ZVector adjustedInteriorPoint,
44 const gfan::ZVector adjustedFacetNormal)
48 ring sAdjusted =
rCopy0(r);
49 int n =
rVar(sAdjusted);
51 sAdjusted->order = (
int*)
omAlloc0(4*
sizeof(
int));
52 sAdjusted->block0 = (
int*)
omAlloc0(4*
sizeof(
int));
53 sAdjusted->block1 = (
int*)
omAlloc0(4*
sizeof(
int));
54 sAdjusted->wvhdl = (
int**)
omAlloc0(4*
sizeof(
int**));
56 sAdjusted->block0[0] = 1;
57 sAdjusted->block1[0] = n;
60 sAdjusted->block0[1] = 1;
61 sAdjusted->block1[1] = n;
69 ideal inIr =
initial(I,r,interiorPoint);
71 for (
int i=0;
i<
k;
i++)
80 ideal IsAdjustedGB =
lift(I,r,inIsAdjustedGB,sAdjusted);
87 s->order = (
int*)
omAlloc0(5*
sizeof(
int));
88 s->block0 = (
int*)
omAlloc0(5*
sizeof(
int));
89 s->block1 = (
int*)
omAlloc0(5*
sizeof(
int));
90 s->wvhdl = (
int**)
omAlloc0(5*
sizeof(
int**));
105 identity =
n_SetMap(sAdjusted->cf,s->cf);
107 for (
int i=0;
i<
k;
i++)
117 return std::make_pair(IsGB,s);
implementation of the class tropicalStrategy
const CanonicalForm int s
#define omFreeSize(addr, size)
static short rVar(const ring r)
#define rVar(r) (r->N)
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
int * ZVectorToIntStar(const gfan::ZVector &v, bool &overflow)
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.
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
static int rBlocks(ring r)
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 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
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 rChangeCurrRing(ring r)
std::pair< ideal, ring > flip(const ideal I, const ring r, const gfan::ZVector interiorPoint, const gfan::ZVector facetNormal, const gfan::ZVector adjustedInteriorPoint, const gfan::ZVector adjustedFacetNormal)
ideal idInit(int idsize, int rank)
initialise an ideal / module
void rDelete(ring r)
unconditionally deletes fields in r
static void deleteOrdering(ring r)
static int idSize(const ideal id)
Count the effective size of an ideal (without the trailing allocated zero-elements) ...