keep track of number of Bernoulli sums
[barvinok.git] / barvinok / options.h
blob7401f008b6a578606d92bbf8860a0aa5840c8698
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;
17 long bernoulli_sums;
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;
26 /* PolyLib options */
27 unsigned MaxRays;
29 /* NTL options */
30 /* LLL reduction parameter delta=LLL_a/LLL_b */
31 long LLL_a;
32 long 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;
42 int primal;
43 int lookup_table;
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)
63 int scale_flags;
64 #define BV_VOL_LIFT 0
65 #define BV_VOL_VERTEX 1
66 #define BV_VOL_BARYCENTER 2
67 int volume_triangulate;
69 /* basis reduction options */
70 #define BV_GBR_PIP 0
71 #define BV_GBR_GLPK 1
72 #define BV_GBR_CDD 2
73 #define BV_GBR_PIP_DUAL 3
74 int gbr_lp_solver;
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
87 #define BV_LP_GLPK 1
88 #define BV_LP_CDD 2
89 #define BV_LP_CDDF 3
90 #define BV_LP_PIP 4
91 int lp_solver;
93 #define BV_SUM_BARVINOK 0
94 #define BV_SUM_EULER 1
95 #define BV_SUM_BERNOULLI 2
96 int summation;
98 #define BV_CHAMBERS_POLYLIB 0
99 #define BV_CHAMBERS_TOPCOM 1
100 int chambers;
102 #define BV_HULL_GBR 0
103 #define BV_HULL_HILBERT 1
104 int integer_hull;
106 int verbose;
108 int print_stats;
110 int gbr_only_first;
113 struct barvinok_options *barvinok_options_new_with_defaults();
114 void barvinok_options_free(struct barvinok_options *options);
116 #define BV_OPT_SPECIALIZATION 256
117 #define BV_OPT_PRIMAL 257
118 #define BV_OPT_TABLE 258
119 #define BV_OPT_GBR 259
120 #define BV_OPT_MAXINDEX 260
121 #define BV_OPT_POLAPPROX 261
122 #define BV_OPT_APPROX 262
123 #define BV_OPT_SCALE 263
124 #define BV_OPT_VOL 264
125 #define BV_OPT_RECURSE 265
126 #define BV_OPT_LP 266
127 #define BV_OPT_SUM 267
128 #define BV_OPT_CHAMBERS 268
129 #define BV_OPT_HULL 269
130 #define BV_OPT_PRINT_STATS 270
131 #define BV_OPT_LAST 270
133 #define BV_GRP_APPROX 1
134 #define BV_GRP_LAST 1
136 struct argp;
137 extern struct argp barvinok_argp;
139 #if defined(__cplusplus)
141 #endif
143 #endif