barvinok 0.41.7
[barvinok.git] / lattice_width.h
blob58c1d93d4b0d2abd4f4ae05f33bf77e8b3e5209c
1 #include <isl/polynomial.h>
2 #include <isl/union_set.h>
3 #include <barvinok/polylib.h>
5 #if defined(__cplusplus)
6 extern "C" {
7 #endif
9 struct barvinok_options;
11 struct width_direction {
12 Vector *width; /* The lattice width, a vector of length n+2.
13 * width[n] is the constant term
14 * width[n+1] is the denominator
16 Vector *dir; /* The direction in which width is obtained */
17 Polyhedron *domain; /* Chamber where this width is minimal */
20 struct width_direction_array {
21 int n; /* Number of elements (used) in wd array */
22 int alloc; /* Number of elements allocated in wd array */
23 struct width_direction *wd;
26 evalue *Polyhedron_Lattice_Width(Polyhedron *P, Polyhedron *C,
27 struct barvinok_options *options);
29 struct width_direction_array *
30 Polyhedron_Lattice_Width_Directions(Polyhedron *P, Polyhedron *C,
31 struct barvinok_options *options);
32 void free_width_direction_array(struct width_direction_array *dirs);
34 __isl_give isl_pw_qpolynomial *isl_set_lattice_width(__isl_take isl_set *set);
35 __isl_give isl_union_pw_qpolynomial *isl_union_set_lattice_width(
36 __isl_take isl_union_set *uset);
38 #if defined(__cplusplus)
40 #endif