Support use of generalized basis reduction to compute integer hulls
[barvinok.git] / barvinok / options.h
blob55a1d5219dc71e6d69730e7fcb2273eec9fd082d
1 #ifndef BARVINOK_OPTIONS_H
2 #define BARVINOK_OPTIONS_H
4 #include <stdio.h>
6 #if defined(__cplusplus)
7 extern "C" {
8 #endif
10 struct barvinok_stats {
11 long base_cones;
12 long volume_simplices;
13 long topcom_empty_chambers;
14 long topcom_chambers;
15 long topcom_distinct_chambers;
16 long gbr_solved_lps;
19 void barvinok_stats_clear(struct barvinok_stats *stats);
20 void barvinok_stats_print(struct barvinok_stats *stats, FILE *out);
22 struct barvinok_options {
23 struct barvinok_stats *stats;
25 /* PolyLib options */
26 unsigned MaxRays;
28 /* NTL options */
29 /* LLL reduction parameter delta=LLL_a/LLL_b */
30 long LLL_a;
31 long LLL_b;
33 /* barvinok options */
34 #define BV_SPECIALIZATION_BF 2
35 #define BV_SPECIALIZATION_DF 1
36 #define BV_SPECIALIZATION_RANDOM 0
37 #define BV_SPECIALIZATION_TODD 3
38 int incremental_specialization;
40 unsigned long max_index;
41 int primal;
42 int lookup_table;
43 int count_sample_infinite;
45 int try_Delaunay_triangulation;
47 #define BV_APPROX_SIGN_NONE 0
48 #define BV_APPROX_SIGN_APPROX 1
49 #define BV_APPROX_SIGN_LOWER 2
50 #define BV_APPROX_SIGN_UPPER 3
51 int polynomial_approximation;
52 #define BV_APPROX_NONE 0
53 #define BV_APPROX_DROP 1
54 #define BV_APPROX_SCALE 2
55 #define BV_APPROX_VOLUME 3
56 #define BV_APPROX_BERNOULLI 4
57 int approximation_method;
58 #define BV_APPROX_SCALE_FAST (1 << 0)
59 #define BV_APPROX_SCALE_NARROW (1 << 1)
60 #define BV_APPROX_SCALE_NARROW2 (1 << 2)
61 #define BV_APPROX_SCALE_CHAMBER (1 << 3)
62 int scale_flags;
63 #define BV_VOL_LIFT 0
64 #define BV_VOL_VERTEX 1
65 #define BV_VOL_BARYCENTER 2
66 int volume_triangulate;
68 /* basis reduction options */
69 #define BV_GBR_PIP 0
70 #define BV_GBR_GLPK 1
71 #define BV_GBR_CDD 2
72 #define BV_GBR_PIP_DUAL 3
73 int gbr_lp_solver;
75 /* bernstein options */
76 #define BV_BERNSTEIN_NONE 0
77 #define BV_BERNSTEIN_MAX 1
78 #define BV_BERNSTEIN_MIN -1
79 int bernstein_optimize;
81 #define BV_BERNSTEIN_FACTORS 1
82 #define BV_BERNSTEIN_INTERVALS 2
83 int bernstein_recurse;
85 #define BV_LP_POLYLIB 0
86 #define BV_LP_GLPK 1
87 #define BV_LP_CDD 2
88 #define BV_LP_CDDF 3
89 #define BV_LP_PIP 4
90 int lp_solver;
92 #define BV_SUM_BARVINOK 0
93 #define BV_SUM_EULER 1
94 #define BV_SUM_BERNOULLI 2
95 int summation;
97 #define BV_CHAMBERS_POLYLIB 0
98 #define BV_CHAMBERS_TOPCOM 1
99 int chambers;
101 #define BV_HULL_GBR 0
102 #define BV_HULL_HILBERT 1
103 int integer_hull;
105 int verbose;
107 int print_stats;
109 int gbr_only_first;
112 struct barvinok_options *barvinok_options_new_with_defaults();
113 void barvinok_options_free(struct barvinok_options *options);
115 #define BV_OPT_SPECIALIZATION 256
116 #define BV_OPT_PRIMAL 257
117 #define BV_OPT_TABLE 258
118 #define BV_OPT_GBR 259
119 #define BV_OPT_MAXINDEX 260
120 #define BV_OPT_POLAPPROX 261
121 #define BV_OPT_APPROX 262
122 #define BV_OPT_SCALE 263
123 #define BV_OPT_VOL 264
124 #define BV_OPT_RECURSE 265
125 #define BV_OPT_LP 266
126 #define BV_OPT_SUM 267
127 #define BV_OPT_CHAMBERS 268
128 #define BV_OPT_HULL 269
129 #define BV_OPT_PRINT_STATS 270
130 #define BV_OPT_LAST 270
132 #define BV_GRP_APPROX 1
133 #define BV_GRP_LAST 1
135 struct argp;
136 extern struct argp barvinok_argp;
138 #if defined(__cplusplus)
140 #endif
142 #endif