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"
26 #define VERSION_DATE "March 1998"
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."
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."
64 #define LRS_EXEC "lrs"
65 #define CDD_EXEC "cddf+"
66 #define QHULL_EXEC "qhull"
67 #define QHULL_OPTIONS "d i Q0 Qz"
72 #define PIVOTING_LASS 0
73 #define MIN_PIVOT_LASS 0.1
88 #define DEFAULT_PRECOMP 1
101 #define DEFAULT_STORAGE 20
129 #define EPSILON 1e-10
130 #define ARRAYSIZESTEP 5
160 #define KEY_VERTICES 2
161 #define KEY_PLANES_VAR 3
164 #define HOUSEHOLDER 2
167 #define STAT_SMALLEST_EXP -200
168 #define STAT_BIGGEST_EXP 200
175 #include <Rational.h>
303 void *
my_realloc (
void *pointer,
long int new_size,
long int size_diff);
304 void my_free (
void *pointer,
long int size);
377 char vertexfile [255],
char incidencefile [255]);
379 char vertexfile [255]);
380 void center_of_gravity_qhull_file (
rational *
volume,
real *center,
char vertexfile [255]);
384 int key_choice,
int ortho_choice);
388 char incidencefile [255]);
void add_superelement(T_VertexSuperset **S, T_VertexSet s)
void my_free(void *pointer, long int size)
boolean are_equal_sets(T_VertexSet s1, T_VertexSet s2)
T_VertexSet create_empty_set(void)
rational factorial(int n)
rational * create_vector()
void free_basis(rational ***basis)
boolean is_contained(T_VertexSet s1, T_VertexSet s2)
void free_matrix(rational **A, int m, int n)
#define STAT_SMALLEST_EXP
void simplex_volume(T_VertexSet S, rational *volume, boolean verbose)
unsigned int * Stat_CountRetrieved
void free_vector(std::vector< _TT > &v)
boolean delete_element(T_VertexSet *s, T_Vertex *e)
rational orthonormal_schmidt(int d, T_VertexSet face, rational **B)
void volume_lrs_file(rational *volume, char *rational_volume, char vertexfile[255])
void delete_hypervar(T_LassInt hyperplane, T_LassInt variable, T_Key *key)
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)
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)
rational add_orthonormal_householder(int d, T_VertexSet face, rational **H, T_Vertex *vertex)
void free_key(T_Key key, int key_choice)
void volume_lawrence_file(rational *volume, char vertexfile[255], char planesfile[255], char incidencefile[255])
T_VertexSet * G_Incidence
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)
void free_int_vector(int *v, int n)
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
T_VertexSet duplicate_set(T_VertexSet s)
void free_fact(rational *fact)
void add_element(T_VertexSet *s, T_Vertex *e)
int volume(const block *b)
void volume_qhull_file(rational *volume, char vertexfile[255])
unsigned int Stat_CountNeg[STAT_BIGGEST_EXP-STAT_SMALLEST_EXP+3]
rational orthonormal_householder(int d, T_VertexSet face, rational **H)
void free_vertex(T_Vertex *v)
struct T_Key::@40 hypervar
struct T_VertexSet content
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)
rational det_and_invert(rational **A, int rows, int columns, boolean verbose)
void free_faces(T_VertexSet *face)
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)
unsigned int * Stat_CountStored
T_Vertex * create_vertex()
void volume_lawrence_lrs_file(rational *volume, char planesfile[255])
struct T_VertexSuperset * next
void add_hypervar(T_LassInt hyperplane, T_LassInt variable, T_Key *key)
T_VertexSuperset * create_empty_superset(void)
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)
void create_hyperplanes()
void volume_ortho_file(rational *volume, char vertexfile[255], char incidencefile[255], int key_choice, int ortho_choice)
rational normalise_vertices()
void * my_realloc(void *pointer, long int new_size, long int size_diff)
void volume_lasserre_file(double planes2[7][4], rational *volume)
void free_superset(T_VertexSuperset **S)