1 #define Nef_Max 500000 2 #define NP_Max 500000 3 #define W_Nmax (POLY_Dmax+1) 4 #define MAXSTRING 100 5 6 #undef WRITE_CWS 7 #define WRITE_CWS 8 9 #define Pos_Max (POLY_Dmax + 2) 10 #define FIB_POINT_Nmax VERT_Nmax 11 12 typedef struct { 13 Long W[FIB_Nmax][FIB_POINT_Nmax]; 14 Long VM[FIB_POINT_Nmax][POLY_Dmax]; 15 int nw; 16 int nv; 17 int d; 18 int Wmax; 19 } LInfo; 20 21 struct Poset_Element { 22 int num, dim; 23 }; 24 25 struct Interval { 26 int min, max; 27 }; 28 29 typedef struct Interval Interval; 30 31 typedef struct { 32 struct Interval *L; 33 int n; 34 } Interval_List; 35 36 typedef struct Poset_Element Poset_Element; 37 38 typedef struct { 39 struct Poset_Element x, y; 40 } Poset; 41 42 typedef struct { 43 struct Poset_Element *L; 44 int n; 45 } Poset_Element_List; 46 47 typedef struct { 48 int nface[Pos_Max]; 49 int dim; 50 INCI edge[Pos_Max][FACE_Nmax]; 51 } Cone; 52 53 typedef struct { 54 Long S[2*Pos_Max]; 55 } SPoly; 56 57 typedef struct { 58 Long B[Pos_Max][Pos_Max]; 59 } BPoly; 60 61 typedef struct { 62 int E[4*(Pos_Max)][4*(Pos_Max)]; 63 } EPoly; 64 65 typedef struct { 66 Long x[POINT_Nmax][W_Nmax]; 67 int N, np; 68 } AmbiPointList; 69 70 typedef struct { 71 int n; 72 int nv; 73 int codim; 74 int S[Nef_Max][VERT_Nmax]; 75 int DirProduct[Nef_Max]; 76 int Proj[Nef_Max]; 77 int DProj[Nef_Max]; 78 } PartList; 79 80 typedef struct { 81 int n; 82 int nv; 83 int S[Nef_Max][VERT_Nmax]; 84 } Part; 85 86 typedef struct { 87 int n, y, w, p, t, S, Lv, Lp, N, u, d, g, VP, B, T, H, dd, gd, 88 noconvex, Msum, Sym, V, Rv, Test, Sort, Dir, Proj, f, G; 89 } Flags; 90 91 typedef struct { 92 int noconvex, Sym, Test, Sort; 93 } NEF_Flags; 94 95 struct Vector { 96 Long x[POLY_Dmax]; 97 }; 98 99 typedef struct Vector Vector ; 100 101 typedef struct { 102 struct Vector *L; 103 int n; 104 Long np, NP_max; } DYN_PPL; 105 106 void part_nef(PolyPointList *, VertexNumList *, EqList *, PartList *, 107 int *, NEF_Flags *); 108 109 void Make_E_Poly(FILE *, CWS *, PolyPointList *, VertexNumList *, EqList *, 110 int *, Flags *, int *); 111 112 void Mink_WPCICY(AmbiPointList * _AP_1, AmbiPointList * _AP_2, 113 AmbiPointList * _AP); 114 115 int IsDigit(char); 116 117 int IntSqrt(int q); 118 119 void Die(char *); 120 121 void Print_CWS_Zinfo(CWS *); 122 123 void AnalyseGorensteinCone(CWS *_CW, PolyPointList *_P, VertexNumList *_V, 124 EqList *_E, int *_codim, Flags * _F); 125