convert to lookup-table if requested
[barvinok.git] / piptest.c
blobb413f57f7d4bd82d1c774142dbe5d85927413034
1 #include <polylib/polylibgmp.h>
2 #include "piputil.h"
3 #include "ev_operations.h"
4 #include <barvinok.h>
6 int main(int argc, char **argv)
8 Polyhedron *A;
9 Matrix *M;
10 Polyhedron *D, *P, *N;
11 char **param_name;
12 int exist, nparam, nvar;
13 char s[128];
14 evalue sum;
16 M = Matrix_Read();
17 A = Constraints2Polyhedron(M, 600);
18 Matrix_Free(M);
20 fgets(s, 128, stdin);
21 while ((*s=='#') || (sscanf(s, "E %d", &exist)<1))
22 fgets(s, 128, stdin);
24 fgets(s, 128, stdin);
25 while ((*s=='#') || (sscanf(s, "P %d", &nparam)<1))
26 fgets(s, 128, stdin);
28 Polyhedron_Print(stdout, P_VALUE_FMT, A);
29 printf("exist: %d, nparam: %d\n", exist, nparam);
30 param_name = Read_ParamNames(stdin, nparam);
32 nvar = A->Dimension - exist - nparam;
33 D = pip_lexmin(A, exist, nparam);
35 value_init(sum.d);
36 evalue_set_si(&sum, 0, 1);
37 for (P = D; P; P = N) {
38 N = P->next;
39 P->next = 0;
40 evalue *EP;
41 exist = P->Dimension - nvar - nparam;
42 EP = barvinok_enumerate_e(P, exist, nparam, 600);
43 print_evalue(stderr, EP, param_name);
44 eadd(EP, &sum);
46 print_evalue(stderr, &sum, param_name);