Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vinci.h
Go to the documentation of this file.
1 /****************************************************************************************/
2 /* */
3 /* vinci.h */
4 /* */
5 /****************************************************************************************/
6 /* */
7 /* Authors: Benno Bueeler (bueeler@ifor.math.ethz.ch) */
8 /* and */
9 /* Andreas Enge (enge@ifor.math.ethz.ch) */
10 /* Institute for Operations Research */
11 /* Swiss Federal Institute of Technology Zurich */
12 /* Switzerland */
13 /* */
14 /* Last Changes: April 7, 1998 */
15 /* */
16 /****************************************************************************************/
17 /* */
18 /* global constants, types, variable and function declarations */
19 /* */
20 /****************************************************************************************/
21 
22 #define COPYRIGHT1 "(C) Benno Bueeler and Andreas Enge, {bueeler,enge}@ifor.math.ethz.ch"
23 #define COPYRIGHT2 " Developed in the ETHZ-EPFL project on Optimisation and Computational"
24 #define COPYRIGHT3 " Geometry with Komei Fukuda"
25 #define VERSION "1"
26 #define VERSION_DATE "March 1998"
27 
28 #define T01 "The package computes the volume of a polytope whose vertices, defining"
29 #define T02 "hyperplanes and/or incidences of vertices and facettes are stored in files"
30 #define T03 "following Avis' and Fukuda's polytope format. The vertices are supposed to"
31 #define T04 "be in a file with extension '.ine', the hyperplanes in '.ext' and the"
32 #define T05 "incidences in '.icd' (see the sample files 'square.ext', 'square.icd' and"
33 #define T06 "'square.ine').\n"
34 #define T07 "Its basic call is 'vinci file' where 'file' stands for the polyhedron file"
35 #define T08 "name without extension, e. g. 'vinci square'. In this case the existing files"
36 #define T09 "and installed additional packages are analysed and according to the problem"
37 #define T10 "type an appropriate volume computation method is chosen automatically."
38 #define T11 ""
39 #define T12 "The following additional parameters are possible:"
40 #define T13 "-m followed by the label of a specific volume computation method; to see a"
41 #define T14 " list of the implemented methods, use 'vinci -m' without any label."
42 #define T15 "-p1, -p2 or -p3 which are valid for some methods. They determine the space"
43 #define T16 " and time complexity. Higher values lead to more space consume and a fast-"
44 #define T17 " er execution. If none of the parameters is specified the value"
45 #define T18 " DEFAULT_PRECOMP defined in 'vinci.h' is chosen."
46 #define T19 "-s directly followed by a natural integer. The value determines for how many"
47 #define T20 " recursion levels intermediate results are stored. A higher value speeds"
48 #define T21 " up certain methods considerably while needing more storage space."
49 #define T22 "-r directly followed by an integer. The value sets the random seed used for"
50 #define T23 " determining the objective function for Lawrence's formula."
51 #define T24 "\nFor more information please consult the manual."
52 
53 /****************************************************************************************/
54 
55 #include <stdio.h>
56 #include <stdlib.h>
57 #include <string.h>
58 #include <math.h>
59 
60 /****************************************************************************************/
61 /* The following constants may be changed by a user */
62 /****************************************************************************************/
63 
64 #define LRS_EXEC "lrs"
65 #define CDD_EXEC "cddf+"
66 #define QHULL_EXEC "qhull"
67 #define QHULL_OPTIONS "d i Q0 Qz"
68  /* location of external programmes with paths and options for qhull */
69 
70 #define PIVOTING 1
71 #define MIN_PIVOT 0.5
72 #define PIVOTING_LASS 0
73 #define MIN_PIVOT_LASS 0.1
74  /* for choosing a pivoting strategy whenever this is needed, e.g. for determinant */
75  /* computation. The last two constants are valid for Lasserre's method, the first */
76  /* two for any other method. PIVOTING and PIVOTING_LASS can take the following */
77  /* values: */
78  /* 0: The first row with entry bigger than MIN_PIVOT (in its absolute value) is */
79  /* chosen. */
80  /* bigger than EPSILON or smaller than -EPSILON) is chosen */
81  /* 1: partial pivoting; the row with maximal entry (absolute value) is chosen; */
82  /* MIN_PIVOT is ignored. */
83  /* 2: total pivoting; the row and column with maximal entry (absolute value) are */
84  /* chosen, MIN_PIVOT is ignored. If total pivoting is not possible (e. g. for */
85  /* solving linear equations) partial pivoting is performed. */
86 
87 #define MAX_PRECOMP 3
88 #define DEFAULT_PRECOMP 1
89  /* The global variable "G_Precomp" specifies the precomputation effort of the pro- */
90  /* gram; it can be set to 1, 2 or 3 by using the options "-p1", "-p2", "-p3" resp. */
91  /* 1: Each intersection is done with the hyperplane itself. */
92  /* 2: The intersections of all possible choices of two hyperplanes are computed */
93  /* once. Then instead of intersecting with one hyperplane, intersection is done */
94  /* with two hyperplanes at the same time: The new one and another one which com- */
95  /* pletely contains the set. So the same result is obtained, but intersection is */
96  /* faster because the sets are smaller. */
97  /* 3: The same as 2, but with three hyperplanes. */
98  /* MAX_PRECOMP is the maximum value the variable can take, DEFAULT_PRECOMP the value */
99  /* used when nothing is specified by the user. */
100 
101 #define DEFAULT_STORAGE 20
102  /* For so many recursion levels intermediate volumes are stored, starting from the */
103  /* level with two planes fixed. The value is only active if no option -s is speci- */
104  /* fied; it may be set to 0, for instance, by using the option -s0. */
105 
106 #define STATISTICS
107  /* If STATISTICS is defined, during volume computation, some statistical variables */
108  /* like the number of simplices and their volume distribution are withheld. */
109 
110 #define NO_RATIONAL
111  /* If RATIONAL is defined, exact computation will be used in some places. In this */
112  /* case, some real variables will be defined as rational. This option only works if */
113  /* the g++-compiler is used, and its exact consequences are unknown... */
114 
115 #define NO_COG
116  /* If COG is defined, the programme makes functions available which compute the */
117  /* center of gravity as well as the volume. Their names start with */
118  /* "center_of_gravity". Otherwise basically the same code is used for computing only */
119  /* the volume. The function parameters are still the same (when dropping the */
120  /* variable supposed to hold the center of gravity), but their names now start with */
121  /* "volume". If COG is undefined, some volume computation functions using Lawrence's */
122  /* formula or Lasserre's method are added. These functions are not appropriate for */
123  /* computing the center of gravity. */
124 
125 /****************************************************************************************/
126 /* The following constants should not be changed by a user */
127 /****************************************************************************************/
128 
129 #define EPSILON 1e-10
130 #define ARRAYSIZESTEP 5
131  /* the dynamic arrays are increased in steps of this size */
132 
133 #define FALSE 0
134 #define TRUE 1
135 #define EOLN 10 /* end of line character */
136 
137 #define NONE 0 /* constants for data types in files */
138 #define INTEGER_T 1
139 #define REAL_T 2
140 #define RATIONAL_T 3
141 
142 #define RCH 1 /* constants for the volume computation methods */
143 #define GS 2
144 #define GSH 3
145 #define HOT 4
146 #define HOTH 5
147 #define CDDP 6
148 #define CDDM 7
149 #define QHULL 8
150 #define LAWD 9
151 #define LAWND 10
152 #define RLASS 11
153 #define LRS 12
154 
155 #define PREPARE 1 /* constants for precomputation of hyperplane intersections */
156 #define RETRIEVE 2
157 #define FREE 3
158 
159 #define KEY_PLANES 1 /* constants for the key type actually used in the balanced */
160 #define KEY_VERTICES 2 /* tree routines */
161 #define KEY_PLANES_VAR 3
162 
163 #define SCHMIDT 1 /* constants for the orthonormalisation technique used */
164 #define HOUSEHOLDER 2
165 
166 #ifdef STATISTICS
167 #define STAT_SMALLEST_EXP -200
168 #define STAT_BIGGEST_EXP 200
169 #endif
170  /* The simplices in the size classes from 1e(STAT_SMALLEST_EXP) to */
171  /* 1e(STAT_BIGGEST_EXP) are counted separately for each class. Simplices too small */
172  /* or too big are summarized in one variable. */
173 
174 #ifdef RATIONAL
175 #include <Rational.h>
176 #endif
177 
178 /****************************************************************************************/
179 /* type definitions */
180 /****************************************************************************************/
181 
182 typedef double real;
183 typedef int boolean;
184 typedef unsigned char T_LassInt;
185 
186 #ifdef RATIONAL
187  typedef Rational rational;
188 #else
189  typedef real rational;
190 #endif
191 
192 struct T_Vertex
194  /* the coordinates of a vertex */
195  long int no;
196  }; /* type of a vertex */
197 typedef struct T_Vertex T_Vertex;
198 
199 /* The sets of vertices are implemented as ordered lists */
201  {int maxel; /* The list of vertices loe may contain elements 0 to maxel */
202  int lastel; /* Effectively, loe contains elements from 0 to lastel; */
203  /* an empty set is indicated by lastel == -1. */
204  T_Vertex **loe; /* The elements of the set are pointers to vertices which are */
205  /* stored in loe, in ascending order following the numbering */
206  /* of the vertices */
207  };
208 typedef struct T_VertexSet T_VertexSet;
209 
210 
211 /* The sets of VertexSets are implemented as linked chain because only simple */
212 /* operations are needed on them. */
216  };
218 
219 
220 /* Types for storing face volumes in balanced trees. For storing and retrieving a key */
221 /* is needed for every face; all possibilities for keys are defined by the union T_Key. */
222 /* Only one of the keys is active at a time. T_Tree defines the tree itself. */
223 union T_Key
224  {int *hyperplanes;
225  /* The indices of the hyperplanes which are intersected to obtain the face, */
226  /* in ascending order. The list is terminated by G_m + 1. */
227  struct {T_VertexSet set;
228  int d;
229  } vertices;
230  /* The vertices contained in the face and the dimension for which the volume */
231  /* is stored. */
233  /* A list of fixed constraints and variables onto which the face has been */
234  /* projected, used for Lasserre's formula */
235  };
236 typedef union T_Key T_Key;
237 
238 struct T_Tree
239  {struct T_Tree *tree_l, *tree_r; /* the left and right subtrees */
240  int tree_b;
242  rational vol; /* the stored volume */
243  };
244 typedef struct T_Tree T_Tree;
245 
246 /****************************************************************************************/
247 /* global variable declarations */
248 /****************************************************************************************/
249 
250 extern int G_d;
251 extern int G_m;
252 extern real **G_Hyperplanes;
253  /* The first d components are the coordinates of a normal vector, the d+first com- */
254  /* ponent is the right hand side. */
255 extern T_VertexSet *G_Incidence;
256  /* sets of the vertices contained in the hyperplanes. The indices are the same as in */
257  /* 'G_Hyperplanes'. */
258 extern T_VertexSet G_Vertices;
259  /* set of the vertices of the polytope */
260 extern int G_Precomp;
261  /* see the annotations for MAX_PRECOMP and DEFAULT_PRECOMP */
262 extern int G_Storage;
263  /* see the annotations for DEFAULT_STORAGE */
264 extern int G_RandomSeed;
265 extern boolean G_OutOfMem;
266 extern void *G_MemRes;
267  /* Memory reserve; in the storage routine a certain part of the memory is blocked by */
268  /* allocating it to this variable. If the programme runs out of memory this part is */
269  /* freed and G_OutOfMem is set to TRUE. */
270 extern rational G_Minus1;
271  /* dummy to have a pointer, namely &G_Minus1, to the value -1 */
272 
273 #ifdef STATISTICS
274  /* some variables for statistical purpose */
275  extern unsigned int Stat_Count;
276  /* for counting the number of partial volumes computed */
278  /* the volumes of the smallest and the biggest simplex */
279  extern unsigned int Stat_CountPos [STAT_BIGGEST_EXP - STAT_SMALLEST_EXP + 3];
280  /* Stat_CountPos [i] counts the number of positive partial volumes (usually */
281  /* simplex volumes except for Lawrence's formula) which are contained between */
282  /* 1e(i - 1 + STAT_SMALLEST_EXP) and 1e(i + STAT_SMALLEST_EXP). Smaller volumes */
283  /* are counted in Stat_CountPos [0], bigger ones in the last entry of */
284  /* Stat_CountPos. */
285  extern unsigned int Stat_CountNeg [STAT_BIGGEST_EXP - STAT_SMALLEST_EXP + 3];
286  /* the same for the absolute values of "negative volumes" in Lawrence's formula */
287  extern unsigned int *Stat_CountStored, *Stat_CountRetrieved;
288  /* counts the number of volumes stored in and retrieved from the tree */
289  extern unsigned int Stat_CountShifts;
290  /* counts the number of shifts performed in Lasserre's method */
291  extern long int Stat_ActualMem;
292  /* the memory actually used on the heap */
293  extern long int Stat_MaxMem;
294  /* the maximal heap memory used during execution */
295  /* Both values do not comprise the memory reserve G_MemRes. */
296 #endif
297 
298 /****************************************************************************************/
299 /* functions and procedures from 'vinci_memory' */
300 /****************************************************************************************/
301 
302 void *my_malloc (long int size);
303 void *my_realloc (void *pointer, long int new_size, long int size_diff);
304 void my_free (void *pointer, long int size);
306 void free_vertex (T_Vertex *v);
307 void create_hyperplanes ();
308 void free_hyperplanes ();
309 void create_incidence ();
310 void free_incidence ();
312 void free_faces (T_VertexSet *face);
313 rational ***create_basis ();
314 void free_basis (rational *** basis);
316 void free_fact (rational *fact);
318 void free_vector (rational *v);
319 int *create_int_vector (int n);
320 void free_int_vector (int *v, int n);
321 rational **create_matrix (int m, int n);
322 void redim_matrix (rational ***A, int m_alt, int m_neu, int n);
323 void free_matrix (rational **A, int m, int n);
324 void create_key (T_Key *key, int key_choice);
325 void free_key (T_Key key, int key_choice);
326 
327 void tree_out (T_Tree **ppr , int *pi_balance, T_Key key, rational **volume,
328  T_Key **keyfound, int key_choice);
329 void add_hypervar (T_LassInt hyperplane, T_LassInt variable, T_Key *key);
330 void delete_hypervar (T_LassInt hyperplane, T_LassInt variable, T_Key *key);
331 
332 /****************************************************************************************/
333 /* functions and procedures from 'vinci_set' */
334 /****************************************************************************************/
335 
339 void print_set (FILE *f, T_VertexSet s);
340 boolean empty (T_VertexSet s);
341 boolean is_in_set (T_Vertex *e, T_VertexSet s);
342 boolean is_contained (T_VertexSet s1, T_VertexSet s2);
343 boolean are_equal_sets (T_VertexSet s1, T_VertexSet s2);
344 void add_element (T_VertexSet *s, T_Vertex *e);
345 boolean delete_element (T_VertexSet *s, T_Vertex *e);
346 void intersect (T_VertexSet s1, T_VertexSet s2, T_VertexSet *inter);
349 void print_superset (FILE *f, T_VertexSuperset *S);
352 
353 /****************************************************************************************/
354 /* functions and procedures from 'vinci_computation' */
355 /****************************************************************************************/
356 
357 rational factorial (int n);
358 #ifdef COG
359 void simplex_center (T_VertexSet S, real *center);
360 #endif
361 rational det_and_invert (rational **A, int rows, int columns, boolean verbose);
362 void simplex_volume (T_VertexSet S, rational *volume, boolean verbose);
363 T_VertexSet* do_intersections (int precomp, int i1, int i2, int i3, int action);
365  T_Vertex *vertex);
368  T_Vertex *vertex);
370 
371 /****************************************************************************************/
372 /* functions and procedures from 'vinci_volume' */
373 /****************************************************************************************/
374 
375 #ifdef COG
376 void center_of_gravity_ch_file (rational *volume, real *center,
377  char vertexfile [255], char incidencefile [255]);
378 void center_of_gravity_cdd_file (rational *volume, real *center, int direction,
379  char vertexfile [255]);
380 void center_of_gravity_qhull_file (rational *volume, real *center, char vertexfile [255]);
381 #else
382 void volume_ch_file (rational *volume, char vertexfile [255], char incidencefile [255]);
383 void volume_ortho_file (rational *volume, char vertexfile [255], char incidencefile [255],
384  int key_choice, int ortho_choice);
385 void volume_cdd_file (rational *volume, int direction, char vertexfile [255]);
386 void volume_qhull_file (rational *volume, char vertexfile [255]);
387 void volume_lawrence_file (rational *volume, char vertexfile [255], char planesfile [255],
388  char incidencefile [255]);
389 void volume_lawrence_lrs_file (rational *volume, char planesfile [255]);
390 void volume_lrs_file (rational *volume, char *rational_volume, char vertexfile [255]);
391 #endif
392 
393 /****************************************************************************************/
394 /* functions and procedures from 'vinci_lass' */
395 /****************************************************************************************/
396 
397 #ifndef COG
398 void volume_lasserre_file (double planes2[7][4], rational *volume);
399 #endif
400 
void add_superelement(T_VertexSuperset **S, T_VertexSet s)
void my_free(void *pointer, long int size)
Definition: vinci_lass.c:121
boolean are_equal_sets(T_VertexSet s1, T_VertexSet s2)
T_VertexSet create_empty_set(void)
real rational
Definition: vinci.h:189
rational factorial(int n)
int G_RandomSeed
Definition: vinci_lass.c:59
rational * create_vector()
void free_incidence()
void free_basis(rational ***basis)
boolean is_contained(T_VertexSet s1, T_VertexSet s2)
rational vol
Definition: vinci.h:242
#define STAT_BIGGEST_EXP
Definition: vinci.h:168
static T_Key * keyfound
Definition: vinci_lass.c:76
void free_matrix(rational **A, int m, int n)
#define STAT_SMALLEST_EXP
Definition: vinci.h:167
void simplex_volume(T_VertexSet S, rational *volume, boolean verbose)
T_Vertex ** loe
Definition: vinci.h:204
int G_Precomp
Definition: vinci_lass.c:57
struct T_Tree * tree_r
Definition: vinci.h:239
unsigned int * Stat_CountRetrieved
void free_vector(std::vector< _TT > &v)
Definition: rfc_basic.h:54
boolean delete_element(T_VertexSet *s, T_Vertex *e)
rational orthonormal_schmidt(int d, T_VertexSet face, rational **B)
long int Stat_MaxMem
Definition: face.h:90
const NT & d
void volume_lrs_file(rational *volume, char *rational_volume, char vertexfile[255])
Definition: vinci.h:238
void delete_hypervar(T_LassInt hyperplane, T_LassInt variable, T_Key *key)
Definition: vinci_lass.c:204
float real
Definition: gridutil.h:70
double s
Definition: blastest.C:80
void print_set(FILE *f, T_VertexSet s)
void intersect(T_VertexSet s1, T_VertexSet s2, T_VertexSet *inter)
unsigned int Stat_CountShifts
int * create_int_vector(int n)
long int no
Definition: vinci.h:195
boolean empty(T_VertexSet s)
struct T_Key::@39 vertices
void volume_ch_file(rational *volume, char vertexfile[255], char incidencefile[255])
void volume_cdd_file(rational *volume, int direction, char vertexfile[255])
T_VertexSet * create_faces()
void * my_malloc(long int size)
Definition: vinci_lass.c:90
rational add_orthonormal_householder(int d, T_VertexSet face, rational **H, T_Vertex *vertex)
real * coords
Definition: vinci.h:193
void free_key(T_Key key, int key_choice)
Definition: vinci_lass.c:151
void volume_lawrence_file(rational *volume, char vertexfile[255], char planesfile[255], char incidencefile[255])
T_VertexSet * G_Incidence
Definition: vinci_lass.c:54
void print_superset(FILE *f, T_VertexSuperset *S)
void tree_out(T_Tree **ppr, int *pi_balance, T_Key key, rational **volume, T_Key **keyfound, int key_choice)
Definition: vinci_lass.c:870
void free_int_vector(int *v, int n)
Definition: vinci_lass.c:248
rational G_Minus1
Definition: vinci_lass.c:63
boolean is_in_set(T_Vertex *e, T_VertexSet s)
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Definition: roccomf90.h:20
real Stat_Smallest
int G_m
Definition: vinci_lass.c:51
T_VertexSet duplicate_set(T_VertexSet s)
Definition: vinci_lass.c:1028
void free_fact(rational *fact)
real ** G_Hyperplanes
Definition: vinci_lass.c:53
rational * A
Definition: vinci_lass.c:67
void create_incidence()
void add_element(T_VertexSet *s, T_Vertex *e)
int volume(const block *b)
Definition: split.cpp:181
T_Key key
Definition: vinci.h:241
void volume_qhull_file(rational *volume, char vertexfile[255])
unsigned int Stat_CountNeg[STAT_BIGGEST_EXP-STAT_SMALLEST_EXP+3]
struct T_Tree * tree_l
Definition: vinci.h:239
rational orthonormal_householder(int d, T_VertexSet face, rational **H)
int maxel
Definition: vinci.h:201
boolean G_OutOfMem
Definition: vinci_lass.c:61
void free_vertex(T_Vertex *v)
T_VertexSet G_Vertices
Definition: vinci_lass.c:55
struct T_Key::@40 hypervar
const NT & n
struct T_VertexSet content
Definition: vinci.h:215
rational * create_fact()
void redim_matrix(rational ***A, int m_alt, int m_neu, int n)
rational *** create_basis()
void create_key(T_Key *key, int key_choice)
Definition: vinci_lass.c:131
rational det_and_invert(rational **A, int rows, int columns, boolean verbose)
void free_faces(T_VertexSet *face)
int boolean
Definition: vinci.h:183
long int Stat_ActualMem
rational add_orthonormal_schmidt(int d, T_VertexSet face, rational **B, T_Vertex *vertex)
T_VertexSet * do_intersections(int precomp, int i1, int i2, int i3, int action)
int tree_b
Definition: vinci.h:240
unsigned int * Stat_CountStored
T_Vertex * create_vertex()
void volume_lawrence_lrs_file(rational *volume, char planesfile[255])
Definition: vinci.h:223
int d
Definition: vinci.h:228
struct T_VertexSuperset * next
Definition: vinci.h:214
void add_hypervar(T_LassInt hyperplane, T_LassInt variable, T_Key *key)
Definition: vinci_lass.c:168
real Stat_Biggest
int G_Storage
Definition: vinci_lass.c:58
T_VertexSuperset * create_empty_superset(void)
void free_hyperplanes()
rational ** create_matrix(int m, int n)
unsigned int Stat_CountPos[STAT_BIGGEST_EXP-STAT_SMALLEST_EXP+3]
boolean is_in_superset(T_VertexSet s, T_VertexSuperset *S)
int lastel
Definition: vinci.h:202
void create_hyperplanes()
int G_d
Definition: vinci_lass.c:50
void volume_ortho_file(rational *volume, char vertexfile[255], char incidencefile[255], int key_choice, int ortho_choice)
static T_Key key
Definition: vinci_lass.c:76
T_LassInt * variables
Definition: vinci.h:232
int * hyperplanes
Definition: vinci.h:224
T_VertexSet set
Definition: vinci.h:227
void * G_MemRes
Definition: vinci_lass.c:62
rational normalise_vertices()
void * my_realloc(void *pointer, long int new_size, long int size_diff)
unsigned char T_LassInt
Definition: vinci.h:184
void volume_lasserre_file(double planes2[7][4], rational *volume)
Definition: vinci_lass.c:800
void free_superset(T_VertexSuperset **S)
unsigned int Stat_Count