add barvinok_union.c
[barvinok.git] / barvinok_union.c
blobaf83adeb2b4d5963d18c23b1891997d87c6b1488
1 #include <barvinok/barvinok.h>
2 #include <barvinok/util.h>
3 #include "config.h"
5 #ifdef HAVE_GROWING_CHERNIKOVA
6 #define MAXRAYS POL_NO_DUAL
7 #else
8 #define MAXRAYS 600
9 #endif
11 int main(int argc, char **argv)
13 Matrix *M;
14 Polyhedron *C, *D = NULL;
15 evalue *EP;
16 int i, npol;
17 char **param_name;
18 char s[128];
20 fgets(s, 128, stdin);
21 while ((*s=='#') || (sscanf(s, "%d", &npol)<1))
22 fgets(s, 128, stdin);
24 for (i = 0; i < npol; ++i) {
25 Polyhedron *P;
26 M = Matrix_Read();
27 P = Constraints2Polyhedron(M, MAXRAYS);
28 Matrix_Free(M);
29 D = DomainConcat(P, D);
31 M = Matrix_Read();
32 C = Constraints2Polyhedron(M, MAXRAYS);
33 Matrix_Free(M);
34 Polyhedron_Print(stdout, P_VALUE_FMT, D);
35 Polyhedron_Print(stdout, P_VALUE_FMT, C);
36 param_name = Read_ParamNames(stdin, C->Dimension);
37 EP = barvinok_enumerate_union(D, C, MAXRAYS);
38 print_evalue(stdout, EP, param_name);
39 free_evalue_refs(EP);
40 free(EP);
41 Free_ParamNames(param_name, C->Dimension);
42 Domain_Free(D);
43 Polyhedron_Free(C);
44 return 0;