00001 // Tools to compute the ranking function of an iteration J : the number of integer points in P that are lexicographically inferior to J 00002 // (C) B. Meister 6/2005 00003 // LSIIT, UMR 7005 CNRS Université Louis Pasteur 00004 // HiPEAC Network 00005 // ICPS 00006 00007 #ifndef __BM_POLYLIB_RANKING_H__ 00008 #define __BM_POLYLIB_RANKING_H__ 00009 #include <polylib/polylib.h> 00010 00011 /* 00012 * Returns a list of polytopes needed to compute 00013 * the number of points in P that are lexicographically 00014 * smaller than a given point in D. 00015 * Only the first dim dimensions are taken into account 00016 * for computing the lexsmaller relation. 00017 * The remaining variables are assumed to be extra 00018 * existential/control variables. 00019 * When P == D, this is the conventional ranking function. 00020 * P and D are assumed to have the same parameter domain C. 00021 * 00022 * The first polyhedron in the list returned is the 00023 * updated context: a combination of D and C or an extended C. 00024 * 00025 * The order of the variables in the remaining polyhedra is 00026 * - first dim variables of P 00027 * - existential variables of P 00028 * - existential variables of D 00029 * - first dim variables of D 00030 * - the parameters 00031 */ 00032 Polyhedron *LexSmaller(Polyhedron *P, Polyhedron *D, unsigned dim, 00033 Polyhedron *C, unsigned MAXRAYS); 00034 00035 /* 00036 * Returns the number of points in P that are lexicographically 00037 * smaller than a given point in D. 00038 * Only the first dim dimensions are taken into account 00039 * for computing the lexsmaller relation. 00040 * The remaining variables are assumed to be extra 00041 * existential/control variables. 00042 * When P == D, this is the conventional ranking function. 00043 * P and D are assumed to have the same parameter domain C. 00044 * The variables in the Enumeration correspond to the first dim variables 00045 * in D followed by the parameters of D (the variables of C). 00046 */ 00047 Enumeration *Polyhedron_LexSmallerEnumerate(Polyhedron *P, Polyhedron *D, 00048 unsigned dim, 00049 Polyhedron *C, unsigned MAXRAYS); 00050 00051 /* 00052 * Returns a function that assigns a unique number to each point in the 00053 * polytope P ranging from zero to (number of points in P)-1. 00054 * The order of the numbers corresponds to the lexicographical order. 00055 * 00056 * C is the parameter context of the polytope 00057 */ 00058 Enumeration *Polyhedron_Ranking(Polyhedron *P, Polyhedron *C, unsigned MAXRAYS); 00059 00060 #endif // __BM_POLYLIB_RANKING_H__