6 #include <polylib/polylibgmp.h>
10 static void time_diff(struct tms
*before
, struct tms
*after
)
12 long ticks
= sysconf(_SC_CLK_TCK
);
13 printf("User: %g; Sys: %g\n",
14 (0.0 + after
->tms_utime
- before
->tms_utime
) / ticks
,
15 (0.0 + after
->tms_stime
- before
->tms_stime
) / ticks
);
20 int i
, nbPol
, nbVec
, func
, j
;
21 Polyhedron
*A
, *B
, *C
, *D
, *E
, *F
, *G
;
27 ((sscanf(s
, "D %d", &nbPol
)<1) && (sscanf(s
, "V %d", &nbVec
)<1)) )
30 for (i
= 0; i
< nbPol
; ++i
) {
31 Matrix
*M
= Matrix_Read();
32 A
= Constraints2Polyhedron(M
, 600);
35 while ((*s
=='#') || (sscanf(s
, "F %d", &func
)<1))
44 /* workaround for apparent bug in older gmps */
45 *strchr(s
, '\n') = '\0';
46 while ((*s
=='#') || (value_read(ck
, s
) != 0)) {
48 /* workaround for apparent bug in older gmps */
49 *strchr(s
, '\n') = '\0';
51 barvinok_count(A
, &cb
, 100);
59 Polyhedron_Print(stdout
, P_VALUE_FMT
, A
);
60 B
= Polyhedron_Polar(A
, 600);
61 Polyhedron_Print(stdout
, P_VALUE_FMT
, B
);
62 C
= Polyhedron_Polar(B
, 600);
63 Polyhedron_Print(stdout
, P_VALUE_FMT
, C
);
68 Polyhedron_Print(stdout
, P_VALUE_FMT
, A
);
69 for (j
= 0; j
< A
->NbRays
; ++j
) {
70 B
= supporting_cone(A
, j
);
71 Polyhedron_Print(stdout
, P_VALUE_FMT
, B
);
76 Polyhedron_Print(stdout
, P_VALUE_FMT
, A
);
78 barvinok_decompose(A
,&B
,&C
);
80 Polyhedron_Print(stdout
, P_VALUE_FMT
, B
);
82 Polyhedron_Print(stdout
, P_VALUE_FMT
, C
);
88 struct tms tms_before
, tms_between
, tms_after
;
91 Polyhedron_Print(stdout
, P_VALUE_FMT
, A
);
95 barvinok_count(A
, &cb
, 100);
98 value_print(stdout
, P_VALUE_FMT
, cm
);
100 time_diff(&tms_before
, &tms_between
);
101 printf("Barvinok: ");
102 value_print(stdout
, P_VALUE_FMT
, cb
);
104 time_diff(&tms_between
, &tms_after
);
110 Polyhedron_Print(stdout
, P_VALUE_FMT
, A
);
111 B
= triangularize_cone(A
, 100);
112 Polyhedron_Print(stdout
, P_VALUE_FMT
, B
);
113 check_triangulization(A
, B
);
117 Polyhedron_Print(stdout
, P_VALUE_FMT
, A
);
118 B
= remove_equalities(A
);
119 Polyhedron_Print(stdout
, P_VALUE_FMT
, B
);
125 Polyhedron_Print(stdout
, P_VALUE_FMT
, A
);
126 B
= Polyhedron_Reduce(A
, &f
);
127 Polyhedron_Print(stdout
, P_VALUE_FMT
, B
);
130 value_print(stdout
, P_VALUE_FMT
, f
);
137 Matrix
*M
= Matrix_Read();
139 C
= Constraints2Polyhedron(M
, 600);
141 Polyhedron_Print(stdout
, P_VALUE_FMT
, A
);
142 Polyhedron_Print(stdout
, P_VALUE_FMT
, C
);
143 en
= barvinok_enumerate(A
, C
, 600);
144 param_name
= Read_ParamNames(stdin
, C
->Dimension
);
145 print_evalue(stdout
, &en
->EP
, param_name
);
146 Enumeration_Free(en
);
150 Polyhedron_Print(stdout
, P_VALUE_FMT
, A
);
151 Polyhedron_Polarize(A
);
153 barvinok_decompose(A
,&B
,&C
);
154 for (D
= B
; D
; D
= D
->next
)
155 Polyhedron_Polarize(D
);
156 for (D
= C
; D
; D
= D
->next
)
157 Polyhedron_Polarize(D
);
159 Polyhedron_Print(stdout
, P_VALUE_FMT
, B
);
161 Polyhedron_Print(stdout
, P_VALUE_FMT
, C
);
168 for (i
= 0; i
< nbVec
; ++i
) {
169 Vector
*V
= Vector_Read();
170 Matrix
*M
= unimodular_complete(V
);
171 Matrix_Print(stdout
, P_VALUE_FMT
, M
);