strict inequality should be enforced *prior* to simplification
[barvinok.git] / util.h
blob67f40096e616c2d17a3aaee6d6ae42b80679930e
1 #ifndef UTIL_H
2 #define UTIL_H
4 #if defined(__cplusplus)
5 extern "C" {
6 #endif
8 #include <polylib/polylibgmp.h>
10 void value_lcm(Value i, Value j, Value* lcm);
11 int random_int(int max);
12 Polyhedron* Polyhedron_Polar(Polyhedron *P, unsigned NbMaxRays);
13 void Polyhedron_Polarize(Polyhedron *P);
14 Polyhedron* supporting_cone(Polyhedron *P, int v);
15 Polyhedron* supporting_cone_p(Polyhedron *P, Param_Vertices *v);
16 Polyhedron* triangularize_cone(Polyhedron *P, unsigned NbMaxCons);
17 void check_triangulization(Polyhedron *P, Polyhedron *T);
18 Polyhedron *remove_equalities(Polyhedron *P);
19 Polyhedron *remove_equalities_p(Polyhedron *P, unsigned nvar, Matrix **factor);
20 void manual_count(Polyhedron *P, Value* result);
21 Polyhedron* Polyhedron_Reduce(Polyhedron *P, Value* factor);
22 Matrix * unimodular_complete(Vector *row);
23 Bool isIdentity(Matrix *M);
24 void Param_Polyhedron_Print(FILE* DST, Param_Polyhedron *PP, char **param_names);
25 void Enumeration_Print(FILE *Dst, Enumeration *en, char **params);
26 void Enumeration_mod2table(Enumeration *en, unsigned nparam);
27 void Free_ParamNames(char **params, int m);
28 int DomainIncludes(Polyhedron *Pol1, Polyhedron *Pol2);
29 int ConstraintSimplify(Value *old, Value *n, int len, Value* v);
30 Polyhedron *DomainConstraintSimplify(Polyhedron *P, unsigned MaxRays);
32 #include "ev_operations.h"
34 Polyhedron* ParamPolyhedron_Reduce(Polyhedron *P, unsigned nvar,
35 evalue* factor);
37 #if defined(__cplusplus)
39 #endif
41 #endif