1 #include <barvinok/barvinok.h>
2 #include <barvinok/util.h>
5 /* The input of this example program is similar to that of ehrhart_union
6 * in the PolyLib distribution, the difference being that the number of
7 * polytopes in the union needs to specified explicitly.
8 * The input starts with this number, followed by this number of
9 * polytopes in combined data and parameter space, a context polytope
10 * in parameter space and (optionally) the names of the parameters.
11 * All polytopes are in PolyLib notation.
14 #ifdef HAVE_GROWING_CHERNIKOVA
15 #define MAXRAYS POL_NO_DUAL
20 int main(int argc
, char **argv
)
23 Polyhedron
*C
, *D
= NULL
;
30 while ((*s
=='#') || (sscanf(s
, "%d", &npol
)<1))
33 for (i
= 0; i
< npol
; ++i
) {
36 P
= Constraints2Polyhedron(M
, MAXRAYS
);
38 D
= DomainConcat(P
, D
);
41 C
= Constraints2Polyhedron(M
, MAXRAYS
);
43 Polyhedron_Print(stdout
, P_VALUE_FMT
, D
);
44 Polyhedron_Print(stdout
, P_VALUE_FMT
, C
);
45 param_name
= Read_ParamNames(stdin
, C
->Dimension
);
46 EP
= barvinok_enumerate_union(D
, C
, MAXRAYS
);
47 print_evalue(stdout
, EP
, param_name
);
50 Free_ParamNames(param_name
, C
->Dimension
);