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