1 #include <isl/polynomial.h>
2 #include <isl/union_set.h>
3 #include <barvinok/polylib.h>
5 #if defined(__cplusplus)
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_basic_set_lattice_width(
35 __isl_take isl_basic_set
*bset
);
36 __isl_give isl_pw_qpolynomial
*isl_set_lattice_width(__isl_take isl_set
*set
);
37 __isl_give isl_union_pw_qpolynomial
*isl_union_set_lattice_width(
38 __isl_take isl_union_set
*uset
);
40 #if defined(__cplusplus)