126 for (j = 0; j <
set->n; ++j) {
133 0, c,
set->ctx->one, &opt, &opt_denom, NULL);
168 for (i = 0; i <
set->n; ++i) {
211 for (i = 0; i <
set->n; ++i) {
212 n_eq +=
set->p[i]->n_eq;
213 n_ineq +=
set->p[i]->n_ineq;
224 for (i = 0; i <
set->n; ++i) {
229 for (i = 0; i <
set->n; ++i) {
234 for (j = 0; j <
set->p[i]->n_eq; ++j) {
241 for (j = 0; j <
set->p[i]->n_ineq; ++j) {
345 for (i = 0; i <
set->n; ++i) {
353 obj->block.data,
ctx->
one, &num, &den, NULL);
420 if (face->n_eq == 1) {
424 for (i = 0; i < face->n_eq; ++i)
427 face->eq[i], 1 + dim))
508 if (facet && facet->n_eq != 0)
549 if (dim < 0 || !
hull)
554 for (i = 0; i <
hull->n_ineq; ++i) {
563 if (!facet || !hull_facet)
569 for (j = 0; j < facet->n_ineq; ++j) {
570 for (
f = 0;
f < hull_facet->n_ineq; ++
f)
572 hull_facet->ineq[
f], 1 + dim))
574 if (f < hull_facet->n_ineq)
609 for (i = 0; i <
set->n; ++i) {
622 if (
set->p[0]->n_eq > 0) {
634 for (j = 0; j <
set->p[0]->n_ineq; ++j) {
647 for (i = 0; i <
set->n; ++i) {
652 for (j = 0; j < bset->n_eq; ++j) {
672 for (j = 0; j < bset->n_ineq; ++j) {
753 if (dim < 0 || !bset2)
757 1 + dim + bset1->n_eq + bset2->n_eq,
758 2 + bset1->n_ineq + bset2->n_ineq);
761 for (i = 0; i < 2; ++i) {
762 for (j = 0; j < bset[i]->n_eq; ++j) {
771 for (j = 0; j < bset[i]->n_ineq; ++j) {
778 bset[i]->ineq[j], 1+dim);
786 for (j = 0; j < 1+dim; ++j) {
835 if (nparam < 0 || n_in < 0)
857 for (i = 0; i <
set->n; ++i) {
859 if (!bounded || bounded < 0)
879 if (dim < 0 || !bset2)
883 bset1->n_eq + bset2->n_eq,
884 bset1->n_ineq + bset2->n_ineq);
888 for (i = 0; i < bset1->n_eq; ++i) {
893 isl_seq_cpy(lin->eq[k] + 1, bset1->eq[i] + 1, dim);
895 for (i = 0; i < bset1->n_ineq; ++i) {
900 isl_seq_cpy(lin->ineq[k] + 1, bset1->ineq[i] + 1, dim);
902 for (i = 0; i < bset2->n_eq; ++i) {
907 isl_seq_neg(lin->eq[k] + 1, bset2->eq[i] + 1, dim);
909 for (i = 0; i < bset2->n_ineq; ++i) {
914 isl_seq_neg(lin->ineq[k] + 1, bset2->ineq[i] + 1, dim);
959 lin_dim =
total - lin->n_eq;
1004 if (
total < 0 || !bset2)
1008 2 * bset1->n_eq + bset1->n_ineq + 2 * bset2->n_eq + bset2->n_ineq;
1013 for (i = 0; i <
n; ++i) {
1021 for (i = 0; i < d; ++i) {
1029 for (j = 0; j < bset1->n_eq; ++j) {
1033 for (j = 0; j < bset1->n_ineq; ++j) {
1038 for (j = 0; j < bset2->n_eq; ++j) {
1042 for (j = 0; j < bset2->n_ineq; ++j) {
1081 struct isl_vec *sample = NULL;
1087 if (!bset1 || !bset2)
1107 for (i = 0; i < bset1->n_eq; ++i) {
1116 for (i = 0; i < bset1->n_ineq; ++i)
1119 sample->
block.
data[
n++], bset1->ineq[i], 1 + d);
1233 if (!bset1 || !bset2)
1303 if (bounded1 < 0 || bounded2 < 0)
1306 if (bounded1 && bounded2)
1309 if (bounded1 || bounded2)
1322 if (lin->n_eq <
total) {
1356 if (n_div < 0 || dim < 0)
1361 for (i = 0; i < n_div; ++i)
1366 for (i = 0; i < bset->n_eq; ++i) {
1371 isl_seq_cpy(lin->eq[k] + 1, bset->eq[i] + 1, dim);
1376 for (i = 0; i < bset->n_ineq && lin->n_eq < dim; ++i) {
1381 isl_seq_cpy(lin->eq[k] + 1, bset->ineq[i] + 1, dim);
1412 for (i = 0; i <
set->n; ++i)
1440 n = isl_basic_set_list_n_basic_set(list);
1444 isl_die(isl_basic_set_list_get_ctx(list),
1446 "expecting at least two elements",
goto error);
1447 bset1 = isl_basic_set_list_get_basic_set(list,
n - 1);
1448 bset2 = isl_basic_set_list_get_basic_set(list,
n - 2);
1451 isl_basic_set_list_free(list);
1455 list = isl_basic_set_list_drop(list,
n - 2, 2);
1456 list = isl_basic_set_list_add(list, bset1);
1458 t = isl_basic_set_list_get_basic_set(list,
n - 2);
1463 isl_basic_set_list_free(list);
1478 isl_basic_set_list_free(list);
1489 struct isl_mat *bounds = NULL;
1619 int min_constraints;
1627 for (i = 0; i <
set->n; ++i) {
1636 min_constraints =
set->p[i]->n_ineq;
1638 for (i = best + 1; i <
set->n; ++i) {
1644 if (
set->p[i]->n_ineq >= min_constraints)
1646 min_constraints =
set->p[i]->n_ineq;
1660 for (i = 0; i <
set->p[best]->n_ineq; ++i) {
1662 set->p[best]->ineq + i, 0, 1, 0, 1 +
total);
1663 if (!constraints[i].c)
1665 constraints[i].
ineq = 1;
1667 for (i = 0; i < min_constraints; ++i) {
1676 entry->
data = &constraints[i];
1680 for (s = 0; s <
set->n; ++s) {
1684 for (i = 0; i <
set->p[s]->n_eq; ++i) {
1686 for (j = 0; j < 2; ++j) {
1693 for (i = 0; i <
set->p[s]->n_ineq; ++i) {
1696 set->p[s]->n_eq == 0) < 0)
1702 for (i = 0; i < min_constraints; ++i) {
1703 if (constraints[i].
count <
n)
1705 if (!constraints[i].ineq)
1713 for (s = 0; s <
set->n; ++s) {
1714 if (
set->p[s]->n_eq)
1716 if (
set->p[s]->n_ineq !=
hull->n_ineq)
1718 for (i = 0; i <
set->p[s]->n_ineq; ++i) {
1727 if (i ==
set->p[s]->n_ineq)
1732 for (i = 0; i < min_constraints; ++i)
1741 for (i = 0; i < min_constraints; ++i)
1759 for (i = 0; i <
set->n; ++i) {
1760 n_ineq +=
set->p[i]->n_eq;
1761 n_ineq +=
set->p[i]->n_ineq;
1776 if (
hull && !is_hull) {
1777 if (
hull->n_ineq == 0)
1831 if (lin->n_eq < dim)
2021 for (i = 0; i < data->
n; ++i) {
2071 for (i = 0; i < bset->n_eq; ++i) {
2072 for (j = 0; j < 2; ++j) {
2074 if (
hash_ineq(bset->ctx, table, bset->eq[i], dim) < 0)
2078 for (i = 0; i < bset->n_ineq; ++i) {
2079 if (
hash_ineq(bset->ctx, table, bset->ineq[i], dim) < 0)
2100 for (i = 0; i <
set->n; ++i) {
2102 2 *
set->p[i]->n_eq +
set->p[i]->n_ineq);
2130 if (!data->
p[j].
tab) {
2132 if (!data->
p[j].
tab)
2175 for (j = i + 1; j <
set->n; ++j) {
2186 ineq_j = entry->
data;
2245 for (j = 0; j < i; ++j) {
2263 for (j = 0; j < i; ++j) {
2274 for (j = i + 1; j <
set->n; ++j) {
2316 for (j = 0; j <
set->p[i]->n_eq; ++j) {
2317 for (k = 0; k < 2; ++k) {
2323 for (j = 0; j <
set->p[i]->n_ineq; ++j)
2344 for (i = 0; i <
set->n; ++i) {
2347 n_ineq += 2 *
set->p[i]->n_eq +
set->p[i]->n_ineq;
2358 for (i = 0; i <
set->n; ++i)
2438 if (
map->cached_simple_hull[shift])
2521 if (!bmap1 || !bmap2)
2524 i1 = bmap1->n_ineq - 1;
2525 i2 = bmap2->n_ineq - 1;
2526 while (bmap1 && i1 >= 0 && i2 >= 0) {
2541 if (
isl_int_lt(bmap1->ineq[i1][0], bmap2->ineq[i2][0]))
2542 isl_int_set(bmap1->ineq[i1][0], bmap2->ineq[i2][0]);
2546 for (; i1 >= 0; --i1)
2569 if (
total < 0 || !bmap2)
2572 i1 = bmap1->n_eq - 1;
2573 i2 = bmap2->n_eq - 1;
2574 while (bmap1 && i1 >= 0 && i2 >= 0) {
2579 if (last1 > last2) {
2583 if (last1 < last2) {
2596 for (; i1 >= 0; --i1)
2663 for (i = 1; i <
map->n; ++i) {
2713 for (i = 0; i <
set->n; ++i) {
2723 int neg, more_relaxed;
2728 more_relaxed =
isl_int_gt(ineq_i[0], ineq[0]);
2791 for (i = 0; i < n_ineq; ++i) {
2792 int hull_n_ineq =
hull->n_ineq;
2795 parallel = i > 0 &&
isl_seq_eq(ineq[i - 1] + 1, ineq[i] + 1,
2798 (last_added ||
isl_int_eq(ineq[i - 1][0], ineq[i][0])))
2803 last_added =
hull->n_ineq > hull_n_ineq;
2826 int i, j, n_eq, n_ineq;
2829 n = isl_basic_set_list_n_basic_set(list);
2835 for (i = 0; i <
n; ++i) {
2837 bset = isl_basic_set_list_get_basic_set(list, i);
2840 for (j = 0; j < bset->n_eq; ++j) {
2841 ineq[n_ineq++] = mat->row[n_eq];
2842 ineq[n_ineq++] = bset->eq[j];
2843 isl_seq_neg(mat->row[n_eq++], bset->eq[j], mat->n_col);
2845 for (j = 0; j < bset->n_ineq; ++j)
2846 ineq[n_ineq++] = bset->ineq[j];
2861 unsigned dim = *(
unsigned *)
arg;
2884 int i, n_eq, n_ineq;
2892 n = isl_basic_set_list_n_basic_set(list);
2899 for (i = 0; i <
n; ++i) {
2901 bset = isl_basic_set_list_get_basic_set(list, i);
2905 n_ineq += 2 * bset->n_eq + bset->n_ineq;
2910 if (n_ineq > 0 && !ineq)
2928 isl_basic_set_list_free(list);
2934 isl_basic_set_list_free(list);
2958 n = isl_basic_map_list_n_basic_map(list);
2967 isl_basic_map_list_free(list);
2980 model = isl_basic_map_list_get_basic_map(list, 0);
2991 isl_basic_map_list_free(list);
3003 isl_basic_map_list *bmap_list;
3007 n = isl_map_list_n_map(list);
3008 ctx = isl_map_list_get_ctx(list);
3009 bmap_list = isl_basic_map_list_alloc(
ctx, 0);
3011 bmap_list = isl_basic_map_list_free(bmap_list);
3013 for (i = 0; i <
n; ++i) {
3015 isl_basic_map_list *list_i;
3017 map = isl_map_list_get_map(list, i);
3021 bmap_list = isl_basic_map_list_concat(bmap_list, list_i);
3024 isl_map_list_free(list);
3040 isl_basic_map_list *bmap_list;
3044 if (is_universe < 0)
3046 if (is_universe < 0 || is_universe) {
3047 isl_map_list_free(list);
3087 int removed_divs = 0;
3093 if (nparam < 0 || dim < 0 ||
total < 0)
3096 for (i = 0; i < dim; ++i) {
3097 int lower = 0, upper = 0;
3100 left =
total - nparam - i - 1;
3101 for (j = 0; j <
hull->n_eq; ++j) {
3111 for (j = 0; j <
hull->n_ineq; ++j) {
3130 if (!removed_divs) {
static RegisterPass< ScopPrinterWrapperPass > M("dot-scops", "Polly - Print Scops of function")
static __isl_give isl_basic_set * bset_from_bmap(__isl_take isl_basic_map *bmap)
static __isl_give isl_basic_map * bset_to_bmap(__isl_take isl_basic_set *bset)
#define isl_die(ctx, errno, msg, code)
#define isl_assert(ctx, test, code)
isl_bool isl_bool_ok(int b)
#define isl_alloc_array(ctx, type, n)
#define isl_calloc_array(ctx, type, n)
#define ISL_F_ISSET(p, f)
#define isl_calloc(ctx, type, size)
#define isl_alloc_type(ctx, type)
void isl_hash_table_clear(struct isl_hash_table *table)
struct isl_hash_table_entry * isl_hash_table_entry_none
int isl_hash_table_init(struct isl_ctx *ctx, struct isl_hash_table *table, int min_size)
void isl_hash_table_remove(struct isl_ctx *ctx, struct isl_hash_table *table, struct isl_hash_table_entry *entry)
void isl_hash_table_free(struct isl_ctx *ctx, struct isl_hash_table *table)
struct isl_hash_table_entry * isl_hash_table_find(struct isl_ctx *ctx, struct isl_hash_table *table, uint32_t key_hash, isl_bool(*eq)(const void *entry, const void *val), const void *val, int reserve)
struct isl_hash_table * isl_hash_table_alloc(struct isl_ctx *ctx, int min_size)
__isl_export __isl_give ISL_HMAP __isl_take ISL_KEY __isl_take ISL_VAL * val
void GMPZAPI() neg(mp_int rop, mp_int op)
int GMPQAPI() cmp(mp_rat op1, mp_rat op2)
static __isl_give isl_basic_set * affine_hull(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
static int count(int *con, unsigned len, int status)
__isl_give isl_basic_set * isl_set_unshifted_simple_hull_from_set_list(__isl_take isl_set *set, __isl_take isl_set_list *list)
static __isl_give isl_basic_set * set_bounds(__isl_keep isl_set *set, int dim)
static __isl_give isl_basic_set * uset_simple_hull(__isl_take isl_set *set, int shift)
__isl_give isl_basic_map * isl_map_plain_unshifted_simple_hull(__isl_take isl_map *map)
__isl_give isl_basic_set * isl_set_unshifted_simple_hull(__isl_take isl_set *set)
static __isl_give isl_basic_set * initial_hull(__isl_take isl_basic_set *hull, __isl_keep isl_set *set)
static __isl_give isl_basic_map * replace_map_by_empty_basic_map(__isl_take isl_map *map)
static __isl_give isl_basic_map * select_shared_equalities(__isl_take isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
__isl_give isl_basic_set * isl_set_convex_hull(__isl_take isl_set *set)
static isl_bool uset_is_bound(__isl_keep isl_set *set, isl_int *c, unsigned len)
static __isl_give isl_basic_set * uset_convex_hull_unbounded(__isl_take isl_set *set)
static isl_stat update_constraint(struct isl_ctx *ctx, struct isl_hash_table *table, isl_int *con, unsigned len, int n, int ineq)
static struct sh_data * sh_data_alloc(__isl_keep isl_set *set, unsigned n_ineq)
static __isl_give isl_basic_set * modulo_lineality(__isl_take isl_set *set, __isl_take isl_basic_set *lin)
static __isl_give isl_basic_set * homogeneous_map(__isl_take isl_basic_set *bset, __isl_take isl_mat *T)
static __isl_give isl_basic_set * add_bound_from_constraint(__isl_take isl_basic_set *hull, struct sh_data *data, __isl_keep isl_set *set, isl_int *ineq)
static __isl_give isl_basic_set * uset_convex_hull_wrap(__isl_take isl_set *set)
__isl_give isl_basic_map * isl_map_unshifted_simple_hull_from_map_list(__isl_take isl_map *map, __isl_take isl_map_list *list)
__isl_give isl_set * isl_set_remove_redundancies(__isl_take isl_set *set)
static isl_stat set_max_constant_term(struct sh_data *data, __isl_keep isl_set *set, int i, isl_int *ineq, uint32_t c_hash, struct ineq_cmp_data *v)
static int hash_ineq(struct isl_ctx *ctx, struct isl_hash_table *table, isl_int *ineq, unsigned len)
static __isl_give isl_set * isl_set_add_basic_set_equality(__isl_take isl_set *set, isl_int *c)
__isl_give isl_basic_set * isl_set_combined_lineality_space(__isl_take isl_set *set)
static __isl_give isl_basic_map_list * collect_basic_maps(__isl_take isl_map_list *list)
static __isl_give isl_basic_map * map_unshifted_simple_hull_from_basic_map_list(__isl_take isl_map *map, __isl_take isl_basic_map_list *list)
__isl_give isl_basic_set * isl_set_simple_hull(__isl_take isl_set *set)
static __isl_give isl_basic_map * select_shared_inequalities(__isl_take isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
static __isl_give isl_basic_set * valid_direction_lp(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
static __isl_give isl_mat * collect_inequalities(__isl_take isl_mat *mat, __isl_keep isl_basic_set_list *list, isl_int **ineq)
isl_int * isl_set_wrap_facet(__isl_keep isl_set *set, isl_int *facet, isl_int *ridge)
isl_bool isl_basic_set_is_bounded(__isl_keep isl_basic_set *bset)
static __isl_give isl_basic_map * cached_simple_hull(__isl_take isl_map *map, int shift)
static __isl_give isl_basic_set * convex_hull_0d(__isl_take isl_set *set)
static __isl_give isl_basic_set * common_constraints(__isl_take isl_basic_set *hull, __isl_keep isl_set *set, int *is_hull)
static __isl_give isl_basic_map * map_simple_hull(__isl_take isl_map *map, int shift)
static isl_bool has_ineq(const void *entry, const void *val)
static isl_bool has_constraint(struct isl_ctx *ctx, struct isl_hash_table *table, isl_int *con, unsigned len, int n)
static __isl_give isl_basic_set * uset_unshifted_simple_hull_from_constraints(__isl_take isl_set *set, int n_ineq, isl_int **ineq)
static __isl_give isl_basic_set * uset_convex_hull_wrap_bounded(__isl_take isl_set *set)
static __isl_give isl_mat * initial_facet_constraint(__isl_keep isl_set *set)
static __isl_give isl_basic_set * compute_facet(__isl_keep isl_set *set, isl_int *c)
static __isl_give isl_basic_set * convex_hull_pair_pointed(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
static void sh_data_free(struct sh_data *data)
__isl_give isl_basic_set * isl_basic_set_remove_redundancies(__isl_take isl_basic_set *bset)
static __isl_give isl_basic_set * induced_lineality_space(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
static __isl_give isl_basic_set * add_bound(__isl_take isl_basic_set *hull, struct sh_data *data, __isl_keep isl_set *set, int i, isl_int *ineq, int shift)
__isl_give isl_basic_set * isl_basic_set_lineality_space(__isl_take isl_basic_set *bset)
static __isl_give isl_basic_set * modulo_affine_hull(__isl_take isl_set *set, __isl_take isl_basic_set *affine_hull)
__isl_give isl_basic_map * isl_basic_map_remove_redundancies(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_plain_unshifted_simple_hull(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
__isl_give isl_basic_map * isl_map_unshifted_simple_hull(__isl_take isl_map *map)
static __isl_give isl_basic_set * uset_convex_hull(__isl_take isl_set *set)
__isl_give isl_basic_map * isl_map_polyhedral_hull(__isl_take isl_map *map)
static __isl_give isl_basic_set * proto_hull(__isl_keep isl_set *set, int *is_hull)
__isl_give isl_basic_set * isl_set_plain_unshifted_simple_hull(__isl_take isl_set *set)
static __isl_give isl_basic_set * extend(__isl_take isl_basic_set *hull, __isl_keep isl_set *set)
__isl_give isl_basic_set * isl_set_bounded_simple_hull(__isl_take isl_set *set)
static __isl_give isl_basic_set * convex_hull_pair_elim(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
static int cmp_ineq(const void *a, const void *b, void *arg)
isl_bool isl_set_is_bounded(__isl_keep isl_set *set)
static isl_bool max_constraint_equal(const void *entry, const void *val)
static __isl_give isl_basic_set * wrap_constraints(__isl_keep isl_set *set)
static __isl_give isl_basic_set * add_bounds(__isl_take isl_basic_set *bset, struct sh_data *data, __isl_keep isl_set *set, int i, int shift)
static isl_bool has_facets(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_set_polyhedral_hull(__isl_take isl_set *set)
__isl_give isl_map * isl_map_remove_redundancies(__isl_take isl_map *map)
static __isl_give isl_basic_set * uset_unshifted_simple_hull_from_basic_set_list(__isl_take isl_set *set, __isl_take isl_basic_set_list *list)
__isl_give isl_basic_map * isl_map_convex_hull(__isl_take isl_map *map)
static isl_stat hash_basic_set(struct isl_hash_table *table, __isl_keep isl_basic_set *bset)
isl_bool isl_basic_map_image_is_bounded(__isl_keep isl_basic_map *bmap)
static __isl_give isl_vec * valid_direction(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
static __isl_give isl_basic_map * map_simple_hull_trivial(__isl_take isl_map *map)
static __isl_give isl_basic_set * convex_hull_1d(__isl_take isl_set *set)
__isl_give isl_basic_map * isl_map_simple_hull(__isl_take isl_map *map)
static int is_bound(struct sh_data *data, __isl_keep isl_set *set, int j, isl_int *ineq, int shift)
static __isl_give isl_basic_set * convex_hull_pair(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
__isl_give isl_basic_set * isl_basic_set_remove_equalities(__isl_take isl_basic_set *bset, __isl_give isl_mat **T, __isl_give isl_mat **T2)
#define isl_int_is_zero(i)
#define isl_int_is_one(i)
#define isl_int_is_pos(i)
#define isl_int_is_neg(i)
#define isl_int_neg(r, i)
#define isl_int_cmp(i, j)
#define isl_int_set(r, i)
#define isl_int_mul(r, i, j)
#define isl_int_set_si(r, i)
#define isl_int_sub(r, i, j)
enum isl_lp_result isl_basic_set_solve_lp(__isl_keep isl_basic_set *bset, int max, isl_int *f, isl_int d, isl_int *opt, isl_int *opt_denom, __isl_give isl_vec **sol)
__isl_give isl_basic_set * isl_basic_set_alloc_space(__isl_take isl_space *space, unsigned extra, unsigned n_eq, unsigned n_ineq)
__isl_give isl_basic_map_list * isl_basic_map_list_align_divs_to_basic_map(__isl_take isl_basic_map_list *list, __isl_keep isl_basic_map *bmap)
isl_size isl_basic_set_n_equality(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_order_divs(__isl_take isl_basic_map *bmap)
__isl_give isl_set * isl_set_alloc_space(__isl_take isl_space *space, int n, unsigned flags)
int isl_basic_set_alloc_div(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_set_to_empty(__isl_take isl_basic_set *bset)
__isl_give isl_set * isl_map_underlying_set(__isl_take isl_map *map)
__isl_give isl_map * isl_map_inline_foreach_basic_map(__isl_take isl_map *map, __isl_give isl_basic_map *(*fn)(__isl_take isl_basic_map *bmap))
__isl_give isl_set * isl_set_add_basic_set(__isl_take isl_set *set, __isl_take isl_basic_set *bset)
__isl_give isl_map * isl_map_align_divs_internal(__isl_take isl_map *map)
int isl_basic_map_drop_equality(__isl_keep isl_basic_map *bmap, unsigned pos)
__isl_give isl_set * isl_set_cow(__isl_take isl_set *set)
__isl_give isl_basic_set * isl_basic_set_extend_constraints(__isl_take isl_basic_set *base, unsigned n_eq, unsigned n_ineq)
int isl_basic_set_alloc_equality(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_extend(__isl_take isl_basic_set *base, unsigned extra, unsigned n_eq, unsigned n_ineq)
int isl_basic_map_constraint_cmp(__isl_keep isl_basic_map *bmap, isl_int *c1, isl_int *c2)
__isl_give isl_basic_set_list * isl_basic_map_list_underlying_set(__isl_take isl_basic_map_list *list)
__isl_give isl_basic_set * isl_basic_set_free_inequality(__isl_take isl_basic_set *bset, unsigned n)
int isl_basic_map_drop_inequality(__isl_keep isl_basic_map *bmap, unsigned pos)
__isl_give isl_basic_set * isl_basic_set_add_eq(__isl_take isl_basic_set *bset, isl_int *eq)
__isl_give isl_basic_map * isl_basic_map_cow(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_cow(__isl_take isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_set_rational(__isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_sort_constraints(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_underlying_set(__isl_take isl_basic_set *bset)
__isl_give isl_map * isl_map_align_divs_to_basic_map_list(__isl_take isl_map *map, __isl_keep isl_basic_map_list *list)
__isl_give isl_set * isl_basic_set_list_union(__isl_take isl_basic_set_list *list)
__isl_give isl_basic_map * isl_basic_map_overlying_set(__isl_take isl_basic_set *bset, __isl_take isl_basic_map *like)
__isl_give isl_basic_map * isl_basic_map_align_divs(__isl_take isl_basic_map *dst, __isl_keep isl_basic_map *src)
__isl_give isl_basic_set * isl_basic_set_alloc(isl_ctx *ctx, unsigned nparam, unsigned dim, unsigned extra, unsigned n_eq, unsigned n_ineq)
__isl_give isl_set * isl_set_set_rational(__isl_take isl_set *set)
__isl_give isl_set * isl_set_remove_empty_parts(__isl_take isl_set *set)
int isl_basic_set_alloc_inequality(__isl_keep isl_basic_set *bset)
#define ISL_BASIC_MAP_NO_REDUNDANT
#define ISL_BASIC_SET_NO_REDUNDANT
#define ISL_BASIC_MAP_EMPTY
__isl_give isl_basic_set * isl_basic_set_preimage(__isl_take isl_basic_set *bset, __isl_take isl_mat *mat)
#define isl_basic_set_list
__isl_give isl_basic_map * isl_basic_map_finalize(__isl_take isl_basic_map *bmap)
isl_stat isl_basic_map_check_equal_space(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
__isl_give isl_basic_map * isl_basic_map_gauss(__isl_take isl_basic_map *bmap, int *progress)
#define ISL_BASIC_MAP_ALL_EQUALITIES
#define ISL_BASIC_MAP_RATIONAL
__isl_give isl_basic_set * isl_basic_set_simplify(__isl_take isl_basic_set *bset)
#define ISL_BASIC_SET_EMPTY
__isl_give isl_basic_map * isl_basic_map_drop_constraints_involving_unknown_divs(__isl_take isl_basic_map *bmap)
#define ISL_BASIC_MAP_NO_IMPLICIT
__isl_give isl_map * isl_map_drop_constraints_involving_unknown_divs(__isl_take isl_map *map)
__isl_give isl_basic_set * isl_basic_set_gauss(__isl_take isl_basic_set *bset, int *progress)
__isl_give isl_basic_set * isl_basic_set_finalize(__isl_take isl_basic_set *bset)
__isl_give isl_set * isl_set_preimage(__isl_take isl_set *set, __isl_take isl_mat *mat)
__isl_give isl_basic_set * isl_basic_set_normalize_constraints(__isl_take isl_basic_set *bset)
__isl_give isl_mat * isl_mat_cow(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_sub_alloc6(isl_ctx *ctx, isl_int **row, unsigned first_row, unsigned n_row, unsigned first_col, unsigned n_col)
static struct isl_arg_choice bound[]
#define ISL_CONVEX_HULL_FM
#define ISL_CONVEX_HULL_WRAP
void isl_seq_combine(isl_int *dst, isl_int m1, isl_int *src1, isl_int m2, isl_int *src2, unsigned len)
int isl_seq_last_non_zero(isl_int *p, unsigned len)
int isl_seq_is_neg(isl_int *p1, isl_int *p2, unsigned len)
int isl_seq_first_non_zero(isl_int *p, unsigned len)
void isl_seq_clr(isl_int *p, unsigned len)
void isl_seq_scale(isl_int *dst, isl_int *src, isl_int m, unsigned len)
int isl_seq_cmp(isl_int *p1, isl_int *p2, unsigned len)
void isl_seq_cpy(isl_int *dst, isl_int *src, unsigned len)
uint32_t isl_seq_get_hash(isl_int *p, unsigned len)
int isl_seq_eq(isl_int *p1, isl_int *p2, unsigned len)
void isl_seq_normalize(struct isl_ctx *ctx, isl_int *p, unsigned len)
void isl_seq_neg(isl_int *dst, isl_int *src, unsigned len)
int isl_sort(void *const pbase, size_t total_elems, size_t size, int(*cmp)(const void *, const void *, void *arg), void *arg)
int isl_tab_detect_redundant(struct isl_tab *tab)
void isl_tab_free(struct isl_tab *tab)
isl_stat isl_tab_restore_redundant(struct isl_tab *tab)
struct isl_tab * isl_tab_from_recession_cone(__isl_keep isl_basic_set *bset, int parametric)
__isl_give isl_vec * isl_tab_get_sample_value(struct isl_tab *tab)
isl_bool isl_tab_cone_is_bounded(struct isl_tab *tab)
enum isl_lp_result isl_tab_min(struct isl_tab *tab, isl_int *f, isl_int denom, isl_int *opt, isl_int *opt_denom, unsigned flags)
int isl_tab_detect_implicit_equalities(struct isl_tab *tab)
__isl_give struct isl_tab * isl_tab_from_basic_map(__isl_keep isl_basic_map *bmap, int track)
__isl_give struct isl_tab * isl_tab_from_basic_set(__isl_keep isl_basic_set *bset, int track)
__isl_give isl_basic_map * isl_basic_map_update_from_tab(__isl_take isl_basic_map *bmap, struct isl_tab *tab)
static __isl_give isl_union_map * total(__isl_take isl_union_map *umap, __isl_give isl_map *(*fn)(__isl_take isl_map *))
__isl_export __isl_give isl_map * isl_map_detect_equalities(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_list_intersect(__isl_take isl_basic_map_list *list)
__isl_give isl_map * isl_map_copy(__isl_keep isl_map *map)
__isl_null isl_basic_map * isl_basic_map_free(__isl_take isl_basic_map *bmap)
__isl_export __isl_give isl_space * isl_map_get_space(__isl_keep isl_map *map)
isl_size isl_basic_map_dim(__isl_keep isl_basic_map *bmap, enum isl_dim_type type)
isl_bool isl_map_plain_is_universe(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_remove_divs(__isl_take isl_basic_map *bmap)
isl_bool isl_map_plain_is_empty(__isl_keep isl_map *map)
__isl_export __isl_give isl_basic_map * isl_map_affine_hull(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_move_dims(__isl_take isl_basic_map *bmap, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
__isl_give isl_basic_map * isl_basic_map_empty(__isl_take isl_space *space)
__isl_null isl_map * isl_map_free(__isl_take isl_map *map)
__isl_give isl_basic_map_list * isl_map_get_basic_map_list(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_copy(__isl_keep isl_basic_map *bmap)
__isl_give isl_map * isl_map_compute_divs(__isl_take isl_map *map)
__isl_export __isl_give isl_basic_map * isl_basic_map_intersect(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
__isl_give isl_basic_map * isl_basic_map_universe(__isl_take isl_space *space)
struct isl_basic_set isl_basic_set
__isl_give isl_mat * isl_mat_copy(__isl_keep isl_mat *mat)
__isl_give isl_mat * isl_mat_left_hermite(__isl_take isl_mat *M, int neg, __isl_give isl_mat **U, __isl_give isl_mat **Q)
__isl_give isl_mat * isl_mat_drop_rows(__isl_take isl_mat *mat, unsigned row, unsigned n)
__isl_give isl_mat * isl_mat_right_inverse(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_lin_to_aff(__isl_take isl_mat *mat)
__isl_null isl_mat * isl_mat_free(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_alloc(isl_ctx *ctx, unsigned n_row, unsigned n_col)
__isl_give isl_mat * isl_mat_drop_cols(__isl_take isl_mat *mat, unsigned col, unsigned n)
__isl_give isl_mat * isl_mat_unimodular_complete(__isl_take isl_mat *M, int row)
__isl_export __isl_give isl_set * isl_set_coalesce(__isl_take isl_set *set)
isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
isl_bool isl_basic_set_plain_is_universe(__isl_keep isl_basic_set *bset)
__isl_give isl_set * isl_set_remove_divs(__isl_take isl_set *set)
__isl_export __isl_give isl_set * isl_basic_set_union(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
isl_ctx * isl_set_get_ctx(__isl_keep isl_set *set)
__isl_export __isl_give isl_space * isl_set_get_space(__isl_keep isl_set *set)
__isl_give isl_space * isl_basic_set_get_space(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_remove_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
isl_bool isl_basic_set_plain_is_empty(__isl_keep isl_basic_set *bset)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
__isl_give isl_set * isl_set_eliminate_dims(__isl_take isl_set *set, unsigned first, unsigned n)
__isl_give isl_set * isl_set_copy(__isl_keep isl_set *set)
__isl_give isl_basic_set_list * isl_set_get_basic_set_list(__isl_keep isl_set *set)
__isl_give isl_set * isl_set_remove_dims(__isl_take isl_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_set * isl_basic_set_empty(__isl_take isl_space *space)
isl_size isl_set_dim(__isl_keep isl_set *set, enum isl_dim_type type)
__isl_export __isl_give isl_basic_set * isl_basic_set_affine_hull(__isl_take isl_basic_set *bset)
isl_ctx * isl_basic_set_get_ctx(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
__isl_export __isl_give isl_basic_set * isl_basic_set_intersect(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
__isl_give isl_basic_set * isl_basic_set_universe(__isl_take isl_space *space)
__isl_export __isl_give isl_basic_set * isl_set_affine_hull(__isl_take isl_set *set)
__isl_export isl_bool isl_set_is_empty(__isl_keep isl_set *set)
__isl_give isl_space * isl_space_copy(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_set_alloc(isl_ctx *ctx, unsigned nparam, unsigned dim)
isl_basic_map * cached_simple_hull[2]
struct isl_basic_map * bmap
struct isl_hash_table * table
struct sh_data_entry p[1]
struct isl_hash_table * hull_table
static Signature set_to_map
__isl_null isl_vec * isl_vec_free(__isl_take isl_vec *vec)
__isl_give isl_vec * isl_vec_alloc(isl_ctx *ctx, unsigned size)