Merge branch 'topcom'
[barvinok.git] / barvinok / options.h
blob50192a1417afaea9947431d85d7fcc7671d216d5
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;
18 void barvinok_stats_clear(struct barvinok_stats *stats);
19 void barvinok_stats_print(struct barvinok_stats *stats, FILE *out);
21 struct barvinok_options {
22 struct barvinok_stats *stats;
24 /* PolyLib options */
25 unsigned MaxRays;
27 /* NTL options */
28 /* LLL reduction parameter delta=LLL_a/LLL_b */
29 long LLL_a;
30 long LLL_b;
32 /* barvinok options */
33 #define BV_SPECIALIZATION_BF 2
34 #define BV_SPECIALIZATION_DF 1
35 #define BV_SPECIALIZATION_RANDOM 0
36 #define BV_SPECIALIZATION_TODD 3
37 int incremental_specialization;
39 unsigned long max_index;
40 int primal;
41 int lookup_table;
42 int count_sample_infinite;
44 int try_Delaunay_triangulation;
46 #define BV_APPROX_SIGN_NONE 0
47 #define BV_APPROX_SIGN_APPROX 1
48 #define BV_APPROX_SIGN_LOWER 2
49 #define BV_APPROX_SIGN_UPPER 3
50 int polynomial_approximation;
51 #define BV_APPROX_NONE 0
52 #define BV_APPROX_DROP 1
53 #define BV_APPROX_SCALE 2
54 #define BV_APPROX_VOLUME 3
55 #define BV_APPROX_BERNOULLI 4
56 int approximation_method;
57 #define BV_APPROX_SCALE_FAST (1 << 0)
58 #define BV_APPROX_SCALE_NARROW (1 << 1)
59 #define BV_APPROX_SCALE_NARROW2 (1 << 2)
60 #define BV_APPROX_SCALE_CHAMBER (1 << 3)
61 int scale_flags;
62 #define BV_VOL_LIFT 0
63 #define BV_VOL_VERTEX 1
64 #define BV_VOL_BARYCENTER 2
65 int volume_triangulate;
67 /* basis reduction options */
68 #define BV_GBR_PIP 0
69 #define BV_GBR_GLPK 1
70 #define BV_GBR_CDD 2
71 #define BV_GBR_PIP_DUAL 3
72 int gbr_lp_solver;
74 /* bernstein options */
75 #define BV_BERNSTEIN_NONE 0
76 #define BV_BERNSTEIN_MAX 1
77 #define BV_BERNSTEIN_MIN -1
78 int bernstein_optimize;
80 #define BV_BERNSTEIN_FACTORS 1
81 #define BV_BERNSTEIN_INTERVALS 2
82 int bernstein_recurse;
84 #define BV_LP_POLYLIB 0
85 #define BV_LP_GLPK 1
86 #define BV_LP_CDD 2
87 #define BV_LP_CDDF 3
88 int lp_solver;
90 #define BV_SUM_BARVINOK 0
91 #define BV_SUM_EULER 1
92 int summation;
94 #define BV_CHAMBERS_POLYLIB 0
95 #define BV_CHAMBERS_TOPCOM 1
96 int chambers;
99 struct barvinok_options *barvinok_options_new_with_defaults();
100 void barvinok_options_free(struct barvinok_options *options);
102 #define BV_OPT_SPECIALIZATION 256
103 #define BV_OPT_PRIMAL 257
104 #define BV_OPT_TABLE 258
105 #define BV_OPT_GBR 259
106 #define BV_OPT_MAXINDEX 260
107 #define BV_OPT_POLAPPROX 261
108 #define BV_OPT_APPROX 262
109 #define BV_OPT_SCALE 263
110 #define BV_OPT_VOL 264
111 #define BV_OPT_RECURSE 265
112 #define BV_OPT_LP 266
113 #define BV_OPT_SUM 267
114 #define BV_OPT_CHAMBERS 268
115 #define BV_OPT_LAST 268
117 #define BV_GRP_APPROX 1
118 #define BV_GRP_LAST 1
120 struct argp;
121 extern struct argp barvinok_argp;
123 #if defined(__cplusplus)
125 #endif
127 #endif