isl_pw_qpolynomial_sum: take tuple names into account
[barvinok.git] / barvinok / options.h
blob74e394613e71f8d97016ec2fd7e76852dfc76ef7
1 #ifndef BARVINOK_OPTIONS_H
2 #define BARVINOK_OPTIONS_H
4 #include <stdio.h>
5 #include <isl_arg.h>
6 #include <isl_ctx.h>
8 #if defined(__cplusplus)
9 extern "C" {
10 #endif
12 struct barvinok_stats {
13 long base_cones;
14 long volume_simplices;
15 long topcom_empty_chambers;
16 long topcom_chambers;
17 long topcom_distinct_chambers;
18 long gbr_solved_lps;
19 long bernoulli_sums;
22 void barvinok_stats_clear(struct barvinok_stats *stats);
23 void barvinok_stats_print(struct barvinok_stats *stats, FILE *out);
25 struct barvinok_approximation_options {
26 #define BV_APPROX_SIGN_NONE 0
27 #define BV_APPROX_SIGN_APPROX 1
28 #define BV_APPROX_SIGN_LOWER 2
29 #define BV_APPROX_SIGN_UPPER 3
30 int approximation;
31 #define BV_APPROX_NONE 0
32 #define BV_APPROX_DROP 1
33 #define BV_APPROX_SCALE 2
34 #define BV_APPROX_VOLUME 3
35 #define BV_APPROX_BERNOULLI 4
36 int method;
37 #define BV_APPROX_SCALE_FAST (1 << 0)
38 #define BV_APPROX_SCALE_NARROW (1 << 1)
39 #define BV_APPROX_SCALE_NARROW2 (1 << 2)
40 #define BV_APPROX_SCALE_CHAMBER (1 << 3)
41 int scale_flags;
42 #define BV_VOL_LIFT 0
43 #define BV_VOL_VERTEX 1
44 #define BV_VOL_BARYCENTER 2
45 int volume_triangulate;
48 struct barvinok_options {
49 struct isl_options *isl;
50 struct barvinok_approximation_options *approx;
51 struct barvinok_stats *stats;
53 /* PolyLib options */
54 unsigned MaxRays;
56 /* NTL options */
57 /* LLL reduction parameter delta=LLL_a/LLL_b */
58 long LLL_a;
59 long LLL_b;
61 /* barvinok options */
62 #define BV_SPECIALIZATION_BF 2
63 #define BV_SPECIALIZATION_DF 1
64 #define BV_SPECIALIZATION_RANDOM 0
65 #define BV_SPECIALIZATION_TODD 3
66 int incremental_specialization;
68 unsigned long max_index;
69 int primal;
70 int lookup_table;
71 int count_sample_infinite;
73 int try_Delaunay_triangulation;
75 /* basis reduction options */
76 #define BV_GBR_PIP 0
77 #define BV_GBR_GLPK 1
78 #define BV_GBR_CDD 2
79 #define BV_GBR_PIP_DUAL 3
80 int gbr_lp_solver;
82 #define BV_LP_POLYLIB 0
83 #define BV_LP_GLPK 1
84 #define BV_LP_CDD 2
85 #define BV_LP_CDDF 3
86 #define BV_LP_PIP 4
87 int lp_solver;
89 #define BV_SUM_BOX 0
90 /* deprecated */
91 #define BV_SUM_BARVINOK 0
92 #define BV_SUM_EULER 1
93 #define BV_SUM_BERNOULLI 2
94 #define BV_SUM_LAURENT 3
95 #define BV_SUM_LAURENT_OLD 4
96 int summation;
98 #define BV_CHAMBERS_POLYLIB 0
99 #define BV_CHAMBERS_TOPCOM 1
100 #define BV_CHAMBERS_ISL 2
101 int chambers;
103 #define BV_HULL_GBR 0
104 #define BV_HULL_HILBERT 1
105 int integer_hull;
107 int verbose;
109 int print_stats;
111 int gbr_only_first;
114 ISL_ARG_DECL(barvinok_options, struct barvinok_options, barvinok_options_arg)
115 ISL_ARG_CTX_DECL(barvinok_options, struct barvinok_options, barvinok_options_arg)
117 #if defined(__cplusplus)
119 #endif
121 #endif