Move GiNaC-independent part of library to barvinok-core
[barvinok.git] / polysign.h
blob3176f7d24e588a18d867f02cd045d57b8bfb6837
1 #include <barvinok/polylib.h>
3 #if defined(__cplusplus)
4 extern "C" {
5 #endif
7 struct barvinok_options;
9 Matrix *standard_constraints(Polyhedron *P, unsigned nparam, int *rows_p,
10 Matrix **T);
12 enum order_sign { order_lt, order_le, order_eq, order_ge, order_gt, order_unknown,
13 order_undefined };
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,
35 unsigned MaxRays);
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)
73 #endif