1 #ifndef BARVINOK_OPTIONS_H
2 #define BARVINOK_OPTIONS_H
8 #if defined(__cplusplus)
12 struct barvinok_stats
{
14 long volume_simplices
;
15 long topcom_empty_chambers
;
17 long topcom_distinct_chambers
;
22 void barvinok_stats_clear(struct barvinok_stats
*stats
);
23 void barvinok_stats_print(struct barvinok_stats
*stats
, FILE *out
);
25 struct barvinok_approximation_options
{
26 #define BV_APPROX_SIGN_NONE 0
27 #define BV_APPROX_SIGN_APPROX 1
28 #define BV_APPROX_SIGN_LOWER 2
29 #define BV_APPROX_SIGN_UPPER 3
31 #define BV_APPROX_NONE 0
32 #define BV_APPROX_DROP 1
33 #define BV_APPROX_SCALE 2
34 #define BV_APPROX_VOLUME 3
35 #define BV_APPROX_BERNOULLI 4
37 #define BV_APPROX_SCALE_FAST (1 << 0)
38 #define BV_APPROX_SCALE_NARROW (1 << 1)
39 #define BV_APPROX_SCALE_NARROW2 (1 << 2)
40 #define BV_APPROX_SCALE_CHAMBER (1 << 3)
43 #define BV_VOL_VERTEX 1
44 #define BV_VOL_BARYCENTER 2
45 int volume_triangulate
;
48 struct barvinok_options
{
49 struct isl_options
*isl
;
50 struct barvinok_approximation_options
*approx
;
51 struct barvinok_stats
*stats
;
57 /* LLL reduction parameter delta=LLL_a/LLL_b */
61 /* barvinok options */
62 #define BV_SPECIALIZATION_BF 2
63 #define BV_SPECIALIZATION_DF 1
64 #define BV_SPECIALIZATION_RANDOM 0
65 #define BV_SPECIALIZATION_TODD 3
66 int incremental_specialization
;
68 unsigned long max_index
;
71 int count_sample_infinite
;
73 int try_Delaunay_triangulation
;
75 /* basis reduction options */
79 #define BV_GBR_PIP_DUAL 3
83 #define BV_LP_POLYLIB 0
92 #define BV_SUM_BARVINOK 0
93 #define BV_SUM_EULER 1
94 #define BV_SUM_BERNOULLI 2
95 #define BV_SUM_LAURENT 3
96 #define BV_SUM_LAURENT_OLD 4
99 #define BV_CHAMBERS_POLYLIB 0
100 #define BV_CHAMBERS_TOPCOM 1
101 #define BV_CHAMBERS_ISL 2
104 #define BV_HULL_GBR 0
105 #define BV_HULL_HILBERT 1
115 ISL_ARG_DECL(barvinok_options
, struct barvinok_options
, barvinok_options_arg
)
116 ISL_ARG_CTX_DECL(barvinok_options
, struct barvinok_options
, barvinok_options_arg
)
118 #if defined(__cplusplus)