doc: document volume computation
[barvinok.git] / barvinok / options.h
blob0b417112f7310d263a84416a3e435513a4c01eff
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;
15 void barvinok_stats_clear(struct barvinok_stats *stats);
16 void barvinok_stats_print(struct barvinok_stats *stats, FILE *out);
18 struct barvinok_options {
19 struct barvinok_stats *stats;
21 /* PolyLib options */
22 unsigned MaxRays;
24 /* NTL options */
25 /* LLL reduction parameter delta=LLL_a/LLL_b */
26 long LLL_a;
27 long LLL_b;
29 /* barvinok options */
30 #define BV_SPECIALIZATION_BF 2
31 #define BV_SPECIALIZATION_DF 1
32 #define BV_SPECIALIZATION_RANDOM 0
33 int incremental_specialization;
35 unsigned long max_index;
36 int primal;
37 int lookup_table;
38 int count_sample_infinite;
40 int try_Delaunay_triangulation;
42 #define BV_APPROX_SIGN_NONE 0
43 #define BV_APPROX_SIGN_APPROX 1
44 #define BV_APPROX_SIGN_LOWER 2
45 #define BV_APPROX_SIGN_UPPER 3
46 int polynomial_approximation;
47 #define BV_APPROX_NONE 0
48 #define BV_APPROX_DROP 1
49 #define BV_APPROX_SCALE 2
50 #define BV_APPROX_VOLUME 3
51 int approximation_method;
52 #define BV_APPROX_SCALE_FAST (1 << 0)
53 #define BV_APPROX_SCALE_NARROW (1 << 1)
54 #define BV_APPROX_SCALE_NARROW2 (1 << 2)
55 #define BV_APPROX_SCALE_CHAMBER (1 << 3)
56 int scale_flags;
57 #define BV_VOL_LIFT 0
58 #define BV_VOL_VERTEX 1
59 #define BV_VOL_BARYCENTER 2
60 int volume_triangulate;
62 /* basis reduction options */
63 #define BV_GBR_NONE 0
64 #define BV_GBR_GLPK 1
65 #define BV_GBR_CDD 2
66 int gbr_lp_solver;
68 /* bernstein options */
69 #define BV_BERNSTEIN_NONE 0
70 #define BV_BERNSTEIN_MAX 1
71 #define BV_BERNSTEIN_MIN -1
72 int bernstein_optimize;
74 #define BV_BERNSTEIN_FACTORS 1
75 #define BV_BERNSTEIN_INTERVALS 2
76 int bernstein_recurse;
79 struct barvinok_options *barvinok_options_new_with_defaults();
80 void barvinok_options_free(struct barvinok_options *options);
82 #define BV_OPT_SPECIALIZATION 256
83 #define BV_OPT_PRIMAL 257
84 #define BV_OPT_TABLE 258
85 #define BV_OPT_GBR 259
86 #define BV_OPT_MAXINDEX 260
87 #define BV_OPT_POLAPPROX 261
88 #define BV_OPT_APPROX 262
89 #define BV_OPT_SCALE 263
90 #define BV_OPT_VOL 264
91 #define BV_OPT_RECURSE 265
92 #define BV_OPT_LAST 265
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