add an ehrhart example with interesting chambers
[barvinok.git] / barvinok / options.h
blobe89175027bad5a5cefc1911259f1548f0e4652a4
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;
14 void barvinok_stats_clear(struct barvinok_stats *stats);
15 void barvinok_stats_print(struct barvinok_stats *stats, FILE *out);
17 struct barvinok_options {
18 /* PolyLib options */
19 unsigned MaxRays;
21 /* NTL options */
22 /* LLL reduction parameter delta=LLL_a/LLL_b */
23 long LLL_a;
24 long LLL_b;
26 /* barvinok options */
28 * 0: no
29 * 1: depth first
30 * 2: breadth first
32 #define BV_SPECIALIZATION_BF 2
33 #define BV_SPECIALIZATION_DF 1
34 #define BV_SPECIALIZATION_RANDOM 0
35 int incremental_specialization;
37 unsigned long max_index;
38 int primal;
39 int lookup_table;
40 int count_sample_infinite;
42 int try_Delaunay_triangulation;
44 #define BV_APPROX_SIGN_NONE 0
45 #define BV_APPROX_SIGN_APPROX 1
46 #define BV_APPROX_SIGN_LOWER 2
47 #define BV_APPROX_SIGN_UPPER 3
48 int polynomial_approximation;
49 #define BV_APPROX_NONE 0
50 #define BV_APPROX_DROP 1
51 #define BV_APPROX_SCALE 2
52 #define BV_APPROX_VOLUME 3
53 int approximation_method;
54 #define BV_APPROX_SCALE_FAST (1 << 0)
55 #define BV_APPROX_SCALE_NARROW (1 << 1)
56 #define BV_APPROX_SCALE_NARROW2 (1 << 2)
57 #define BV_APPROX_SCALE_CHAMBER (1 << 3)
58 int scale_flags;
59 int volume_triangulate_lift;
61 /* basis reduction options */
62 #define BV_GBR_NONE 0
63 #define BV_GBR_GLPK 1
64 #define BV_GBR_CDD 2
65 int gbr_lp_solver;
67 /* bernstein options */
68 #define BV_BERNSTEIN_NONE 0
69 #define BV_BERNSTEIN_MAX 1
70 #define BV_BERNSTEIN_MIN -1
71 int bernstein_optimize;
73 #define BV_BERNSTEIN_FACTORS 1
74 #define BV_BERNSTEIN_INTERVALS 2
75 int bernstein_recurse;
77 struct barvinok_stats *stats;
80 struct barvinok_options *barvinok_options_new_with_defaults();
81 void barvinok_options_free(struct barvinok_options *options);
83 #define BV_OPT_SPECIALIZATION 256
84 #define BV_OPT_PRIMAL 257
85 #define BV_OPT_TABLE 258
86 #define BV_OPT_GBR 259
87 #define BV_OPT_MAXINDEX 260
88 #define BV_OPT_POLAPPROX 261
89 #define BV_OPT_APPROX 262
90 #define BV_OPT_SCALE 263
91 #define BV_OPT_NO_LIFT 264
92 #define BV_OPT_LAST 264
94 #define BV_GRP_APPROX 1
95 #define BV_GRP_LAST 1
97 struct argp;
98 extern struct argp barvinok_argp;
100 #if defined(__cplusplus)
102 #endif
104 #endif