1 #include <barvinok/polylib.h>
3 #if defined(__cplusplus)
7 struct barvinok_options
;
9 Matrix
*standard_constraints(Polyhedron
*P
, unsigned nparam
, int *rows_p
,
12 enum order_sign
{ order_lt
, order_le
, order_eq
, order_ge
, order_gt
, order_unknown
,
15 /* Returns the sign of the affine function specified by T on the polyhedron D */
16 enum order_sign
polyhedron_affine_sign(Polyhedron
*D
, Matrix
*T
,
17 struct barvinok_options
*options
);
18 enum order_sign
PL_polyhedron_affine_sign(Polyhedron
*D
, Matrix
*T
,
19 struct barvinok_options
*options
);
20 enum order_sign
cdd_polyhedron_affine_sign(Polyhedron
*D
, Matrix
*T
,
21 struct barvinok_options
*options
);
22 enum order_sign
cddf_polyhedron_affine_sign(Polyhedron
*D
, Matrix
*T
,
23 struct barvinok_options
*options
);
25 enum lp_result
{ lp_ok
= 0, lp_unbounded
, lp_empty
};
26 enum lp_dir
{ lp_min
, lp_max
};
28 enum lp_result
constraints_opt(Matrix
*C
, Value
*obj
, Value denom
,
29 enum lp_dir dir
, Value
*opt
,
30 struct barvinok_options
*options
);
31 enum lp_result
glpk_constraints_opt(Matrix
*C
, Value
*obj
, Value denom
,
32 enum lp_dir dir
, Value
*opt
);
33 enum lp_result
PL_constraints_opt(Matrix
*C
, Value
*obj
, Value denom
,
34 enum lp_dir dir
, Value
*opt
,
36 enum lp_result
cdd_constraints_opt(Matrix
*C
, Value
*obj
, Value denom
,
37 enum lp_dir dir
, Value
*opt
);
38 enum lp_result
cddf_constraints_opt(Matrix
*C
, Value
*obj
, Value denom
,
39 enum lp_dir dir
, Value
*opt
);
40 enum lp_result
pip_constraints_opt(Matrix
*C
, Value
*obj
, Value denom
,
41 enum lp_dir dir
, Value
*opt
);
43 enum lp_result
polyhedron_opt(Polyhedron
*P
, Value
*obj
, Value denom
,
44 enum lp_dir dir
, Value
*opt
,
45 struct barvinok_options
*options
);
46 enum lp_result
PL_polyhedron_opt(Polyhedron
*P
, Value
*obj
, Value denom
,
47 enum lp_dir dir
, Value
*opt
);
49 /* Computes min and max of obj/denom over D, with min rounded up
50 * and max rounded down to an integer. obj has D->Dimension+1
51 * elements, with the constant term in position D->Dimension.
53 enum lp_result
polyhedron_range(Polyhedron
*D
, Value
*obj
, Value denom
,
54 Value
*min
, Value
*max
,
55 struct barvinok_options
*options
);
56 enum lp_result
PL_polyhedron_range(Polyhedron
*D
, Value
*obj
, Value denom
,
57 Value
*min
, Value
*max
,
58 struct barvinok_options
*options
);
59 enum lp_result
glpk_polyhedron_range(Polyhedron
*D
, Value
*obj
, Value denom
,
60 Value
*min
, Value
*max
,
61 struct barvinok_options
*options
);
62 enum lp_result
cdd_polyhedron_range(Polyhedron
*D
, Value
*obj
, Value denom
,
63 Value
*min
, Value
*max
,
64 struct barvinok_options
*options
);
65 enum lp_result
cddf_polyhedron_range(Polyhedron
*D
, Value
*obj
, Value denom
,
66 Value
*min
, Value
*max
,
67 struct barvinok_options
*options
);
68 enum lp_result
pip_polyhedron_range(Polyhedron
*D
, Value
*obj
, Value denom
,
69 Value
*min
, Value
*max
,
70 struct barvinok_options
*options
);
71 #if defined(__cplusplus)