1 #ifndef BARVINOK_OPTIONS_H
2 #define BARVINOK_OPTIONS_H
6 #if defined(__cplusplus)
10 struct barvinok_stats
{
12 long volume_simplices
;
13 long topcom_empty_chambers
;
15 long topcom_distinct_chambers
;
20 void barvinok_stats_clear(struct barvinok_stats
*stats
);
21 void barvinok_stats_print(struct barvinok_stats
*stats
, FILE *out
);
23 struct barvinok_options
{
24 struct barvinok_stats
*stats
;
30 /* LLL reduction parameter delta=LLL_a/LLL_b */
34 /* barvinok options */
35 #define BV_SPECIALIZATION_BF 2
36 #define BV_SPECIALIZATION_DF 1
37 #define BV_SPECIALIZATION_RANDOM 0
38 #define BV_SPECIALIZATION_TODD 3
39 int incremental_specialization
;
41 unsigned long max_index
;
44 int count_sample_infinite
;
46 int try_Delaunay_triangulation
;
48 #define BV_APPROX_SIGN_NONE 0
49 #define BV_APPROX_SIGN_APPROX 1
50 #define BV_APPROX_SIGN_LOWER 2
51 #define BV_APPROX_SIGN_UPPER 3
52 int polynomial_approximation
;
53 #define BV_APPROX_NONE 0
54 #define BV_APPROX_DROP 1
55 #define BV_APPROX_SCALE 2
56 #define BV_APPROX_VOLUME 3
57 #define BV_APPROX_BERNOULLI 4
58 int approximation_method
;
59 #define BV_APPROX_SCALE_FAST (1 << 0)
60 #define BV_APPROX_SCALE_NARROW (1 << 1)
61 #define BV_APPROX_SCALE_NARROW2 (1 << 2)
62 #define BV_APPROX_SCALE_CHAMBER (1 << 3)
65 #define BV_VOL_VERTEX 1
66 #define BV_VOL_BARYCENTER 2
67 int volume_triangulate
;
69 /* basis reduction options */
73 #define BV_GBR_PIP_DUAL 3
76 /* bernstein options */
77 #define BV_BERNSTEIN_NONE 0
78 #define BV_BERNSTEIN_MAX 1
79 #define BV_BERNSTEIN_MIN -1
80 int bernstein_optimize
;
82 #define BV_BERNSTEIN_FACTORS 1
83 #define BV_BERNSTEIN_INTERVALS 2
84 int bernstein_recurse
;
86 #define BV_LP_POLYLIB 0
95 #define BV_SUM_BARVINOK 0
96 #define BV_SUM_EULER 1
97 #define BV_SUM_BERNOULLI 2
98 #define BV_SUM_LAURENT 3
99 #define BV_SUM_LAURENT_OLD 4
102 #define BV_CHAMBERS_POLYLIB 0
103 #define BV_CHAMBERS_TOPCOM 1
106 #define BV_HULL_GBR 0
107 #define BV_HULL_HILBERT 1
117 struct barvinok_options
*barvinok_options_new_with_defaults();
118 void barvinok_options_free(struct barvinok_options
*options
);
120 #define BV_OPT_SPECIALIZATION 256
121 #define BV_OPT_PRIMAL 257
122 #define BV_OPT_TABLE 258
123 #define BV_OPT_GBR 259
124 #define BV_OPT_MAXINDEX 260
125 #define BV_OPT_POLAPPROX 261
126 #define BV_OPT_APPROX 262
127 #define BV_OPT_SCALE 263
128 #define BV_OPT_VOL 264
129 #define BV_OPT_RECURSE 265
130 #define BV_OPT_LP 266
131 #define BV_OPT_SUM 267
132 #define BV_OPT_CHAMBERS 268
133 #define BV_OPT_HULL 269
134 #define BV_OPT_PRINT_STATS 270
135 #define BV_OPT_LAST 270
137 #define BV_GRP_APPROX 1
138 #define BV_GRP_LAST 1
141 extern struct argp barvinok_argp
;
143 #if defined(__cplusplus)