34 bmap->eq[
a] = bmap->eq[
b];
42 bmap->ineq[
a] = bmap->ineq[
b];
58 for (i = bmap->n_eq - 1; i >= 0; --i) {
80 for (i = bmap->n_ineq - 1; i >= 0; --i) {
143 add_one =
isl_int_gt(shift, bmap->div[div][0]);
172 bmap->div[div][1 +
pos], 2);
191 for (i = 0; i < 1 +
total; ++i) {
219 if (bmap->n_div == 0)
222 for (i = 0; i < bmap->n_div; ++i) {
290 if (bmap->n_div == 0)
293 for (i = 0; i < bmap->n_div; ++i)
303 unsigned pos,
isl_int *eq,
int keep_divs,
int *progress)
312 if (
total < 0 || v_div < 0)
315 for (k = 0; k < bmap->n_eq; ++k) {
316 if (bmap->eq[k] == eq)
326 for (k = 0; k < bmap->n_ineq; ++k) {
337 for (k = 0; k < bmap->n_div; ++k) {
351 if (last_div == -1 || (keep_divs && last_div < k)) {
367 isl_int *eq,
unsigned div,
int keep_divs)
400 if (last_div < 0 || last_div <= div)
403 for (k = 0; k <= last_div; ++k) {
430 for (d = bmap->n_div - 1; d >= 0 ; --d) {
431 for (i = 0; i < bmap->n_eq; ++i) {
471 for (d = bmap->n_div - 1; d >= 0 ; --d) {
472 for (i = 0; i < bmap->n_eq; ++i)
477 for (i = 0; i < bmap->n_ineq; ++i)
480 if (i < bmap->n_ineq)
498 int eq,
unsigned first,
unsigned n)
507 for (i = 0; i <
n; ++i) {
546 int div,
int eq,
int *progress)
570 isl_int_set(bmap->div[div][0], bmap->eq[eq][o_div + div]);
615 total_var =
total - bmap->n_div;
617 last_var =
total - 1;
618 for (done = 0; done < bmap->n_eq; ++done) {
619 for (; last_var >= 0; --last_var) {
620 for (k = done; k < bmap->n_eq; ++k)
637 bmap->eq[done], 1, progress);
639 if (last_var >= total_var)
645 if (done == bmap->n_eq)
647 for (k = done; k < bmap->n_eq; ++k) {
654 n_drop = bmap->n_eq - done;
714 if (bmap->n_ineq == 0)
743 for (h = hash; ci->
index[h]; h = (h+1) % ci->
size)
744 if (ineq != ci->
index[h] &&
779 for (k = 0; k < bset->n_ineq; ++k) {
781 ci->
index[h] = &bset->ineq[k];
830 if (!bmap || bmap->n_div <= 1)
836 total = v_div + bmap->n_div;
839 for (k = bmap->n_div - 1; k >= 0; --k)
849 bits = ffs(
size) - 1;
851 if (!elim_for || !index)
859 for (--k; k >= 0; --k) {
866 for (h = hash; index[h]; h = (h+1) %
size)
868 bmap->div[index[h]-1], 2+
total))
877 for (l = bmap->n_div - 1; l >= 0; --l) {
905 for (i = 0, j = bmap->n_div-1; i < bmap->n_eq; ++i) {
982 if (bmap->n_div == 0)
993 if (v_div < 0 || div_eq < 0)
998 if (div_eq < bmap->n_eq) {
1000 bmap->n_eq - div_eq, 0, 1 + v_div);
1004 if (
C->n_col == 0) {
1015 for (i = 0, j = bmap->n_div-1; i < div_eq; ++i) {
1030 if (T->
n_col == 0) {
1037 for (i = 0; i < T->
n_row - 1; ++i) {
1049 for (j = bmap->n_div - 1; j >= 0; --j) {
1050 for (i = 0; i < bmap->n_eq; ++i)
1053 if (i < bmap->n_eq) {
1062 for (i = 1; i < T->
n_row; ++i) {
1068 if (needed > dropped) {
1073 for (i = 1; i < T->
n_row; ++i) {
1077 pos[i] = 1 + v_div + k;
1078 isl_seq_clr(bmap->div[k] + 1, 1 + v_div + bmap->n_div);
1084 for (j = 0; j < i; ++j) {
1089 C2->
row[
pos[j]], 1 + v_div);
1095 isl_seq_neg(bmap->eq[j], bmap->div[k]+1, 1+v_div+bmap->n_div);
1124 isl_int_add(bmap->div[div][1], bmap->div[div][1], bmap->div[div][0]);
1144 for (j = 0; j < bmap->n_div; ++j) {
1154 for (j = 0; j < bmap->n_div; ++j) {
1185 bmap->n_div - (div + 1)) >= 0)
1190 total + bmap->n_div);
1192 return last_ineq < last_div;
1214 for (i = 0; i < bmap->n_div; ++i) {
1247 if (total < 0 || bmap->n_ineq <= 1)
1254 ci.
index[h] = &bmap->ineq[0];
1255 for (k = 1; k < bmap->n_ineq; ++k) {
1258 ci.
index[h] = &bmap->ineq[k];
1263 l = ci.
index[h] - &bmap->ineq[0];
1264 if (
isl_int_lt(bmap->ineq[k][0], bmap->ineq[l][0]))
1270 for (k = 0; bmap && k < bmap->n_ineq-1; ++k) {
1276 l = ci.
index[h] - &bmap->ineq[0];
1277 isl_int_add(sum, bmap->ineq[k][0], bmap->ineq[l][0]);
1318 if (progress && duplicate)
1320 }
while (duplicate);
1369 if (v_div < 0 || dim < 0)
1374 for (j = 0; j < bmap->n_ineq; ++j) {
1388 ctx->
negone, bmap->div[div] + 1,
1389 bmap->div[div][0], bmap->ineq[j], 1 + dim);
1392 ctx->
one, bmap->div[div] + 1,
1393 bmap->div[div][0], bmap->ineq[j], 1 + dim);
1396 bmap->ineq[j][0], bmap->div[div][0]);
1398 bmap->ineq[j][0], 1);
1432 for (i = 0; i < bmap->n_div; ++i) {
1439 selected = select(bmap, i);
1483 if (v_div < 0 || n_ineq < 0)
1486 for (i = 0; i < n_ineq; ++i) {
1492 bmap->ineq[i], div);
1542 if (bmap && progress)
1556 isl_int *constraint,
unsigned div)
1568 bmap->div[div][1], bmap->div[div][0]);
1573 bmap->div[div][1], bmap->div[div][0]);
1577 bmap->n_div-div-1) != -1)
1583 bmap->n_div-div-1) != -1)
1603 unsigned pos = 1 + v_div + div;
1608 for (i = 0; i < bmap->n_eq; ++i)
1612 for (i = 0; i < bmap->n_ineq; ++i) {
1618 if (red < 0 || !red)
1622 for (i = 0; i < bmap->n_div; ++i) {
1648 for (i = bmap->n_div-1; i >= 0; --i) {
1703 for (i = 0; i < bmap->n_div; ++i) {
1733 for (d =
pos +
n - 1; d >= 0 && d >=
pos; --d)
1738 for (d =
pos +
n - 1;
1739 d >= 0 && d >=
total - bmap->n_div && d >=
pos; --d)
1741 for (d =
pos +
n - 1; d >= 0 && d >=
pos; --d) {
1742 int n_lower, n_upper;
1745 for (i = 0; i < bmap->n_eq; ++i) {
1749 bmap->eq[i], 0, NULL);
1759 for (i = 0; i < bmap->n_ineq; ++i) {
1766 0, n_lower * n_upper);
1769 for (i = bmap->n_ineq - 1; i >= 0; --i) {
1774 for (j = 0; j < i; ++j) {
1787 1+d, 1+
total, NULL);
1792 if (n_lower > 0 && n_upper > 0) {
1888 for (i = 0; i < n_div; ++i) {
1941 for (i = 0; i <
map->n; ++i) {
1963 for (d = 0; d < len; ++d)
1965 for (i = 0; i < bmap->n_eq; ++i) {
1966 for (d = len - 1; d >= 0; --d) {
1976 int *elim,
unsigned len)
1987 for (d =
total - 1; d >= 0; --d) {
2032 for (i = 0; i < bset->n_eq; ++i)
2035 for (i = 0; i < bset->n_ineq; ++i)
2072 if (n_ineq < 0 || cols < 0)
2075 for (k = 0; k < n_ineq; ++k) {
2112 for (k = 0; k < bset->n_ineq; ++k) {
2147 if (bmap->n_ineq == 0 ||
context->n_ineq == 0) {
2177 for (i = 0; i < len; ++i) {
2199 for (i = 0; i < dim; ++i)
2205 for (i = bmap->n_eq - 1; i >= 0; --i)
2206 if (!
is_related(bmap->eq[i] + 1, dim, relevant)) {
2212 for (i = bmap->n_ineq - 1; i >= 0; --i)
2213 if (!
is_related(bmap->ineq[i] + 1, dim, relevant)) {
2239 for (j = 0; j < dim; ++j) {
2242 while (group[j] >= 0 && group[group[j]] != group[j])
2243 group[j] = group[group[j]];
2244 if (group[j] == min)
2246 if (group[j] < min) {
2247 if (min >= 0 && min < dim)
2248 group[min] = group[j];
2251 group[group[j]] = min;
2302 for (i = 0; i < dim; ++i)
2304 last = group[i] = i;
2310 for (i = 0; i < bmap->n_eq; ++i)
2312 for (i = 0; i < bmap->n_ineq; ++i)
2315 for (i = 0; i < dim; ++i)
2317 group[i] = group[group[i]];
2319 for (i = 0; i < dim; ++i)
2320 group[i] = group[i] == -1;
2354 for (i = 0; i < dim; ++i) {
2355 for (j = 0; j < bset->n_eq; ++j)
2358 if (j < bset->n_eq) {
2362 for (j = 0; j < bset->n_ineq; ++j)
2365 if (j < bset->n_ineq)
2394 if (dim < 0 ||
n < 0)
2402 for (i = 0; i < dim; ++i) {
2403 for (j = 0; j <
n; ++j) {
2422 for (i = 0; i <
n; ++i)
2448 int found_equality = 0;
2452 if (tab && tab->
empty)
2455 n_ineq = bset->n_ineq;
2456 for (i = n_ineq - 1; i >= 0; --i) {
2538 unsigned n_eq, context_ineq;
2540 if (!bset || !ineq || !
context)
2556 if (
all_neg(row, bset->n_ineq))
2566 context_ineq =
context->n_ineq;
2570 for (i = 0; i < context_ineq; ++i)
2576 for (i = 0; i < bset->n_ineq; ++i) {
2588 for (i = bset->n_ineq - 1; i >= 0; --i) {
2727 for (i = 0; i <
n_row; ++i) {
2743 isl_int_sub(bset->ineq[i][0], bset->ineq[i][0], rem);
2764 if (
n < 0 || !
template)
2767 for (i = 0; i <
n; ++i) {
2837 if (
aff->n_eq == 0) {
2845 if (T && T->
n_col == 0) {
2909 if (
total < 0 || !eq)
2912 if (1 +
total != eq->n_col)
2914 "unexpected number of columns",
goto error);
2918 for (i = 0; i < eq->n_row; ++i) {
2964 if (bmap1->n_eq == n1) {
2966 n2, bmap2->n_eq - n2, 0, 1 +
total);
2969 if (bmap2->n_eq == n2) {
2971 n1, bmap1->n_eq - n1, 0, 1 +
total);
2975 n1, bmap1->n_eq - n1, 0, 1 +
total);
2977 n2, bmap2->n_eq - n2, 0, 1 +
total);
3168 for (i = 0; i <
n; ++i) {
3174 "equality constraints modified unexpectedly",
3177 n_div - div - 1) != -1)
3217 int bmap_n_eq, context_n_eq;
3226 if (bmap_n_eq < 0 || context_n_eq < 0)
3228 if (bmap_n_eq == 0 || context_n_eq == 0)
3266 unsigned extra,
n_eq, n_ineq;
3294 if (
n_div < 0 ||
total < 0 || n_div_bmap < 0)
3296 extra =
n_div - n_div_bmap;
3304 if (!bset || bset->n_eq == 0 ||
n_div == 0 ||
3311 n_ineq = bset->n_ineq;
3356 for (i =
map->n - 1; i >= 0; --i) {
3363 if (i !=
map->n - 1)
3399 if (
total < 0 || bmap_total < 0)
3402 extra = bmap_total -
total;
3406 while (
bmap && i1 >= 0 && i2 >= 0) {
3456 if (
total < 0 || bmap_total < 0)
3459 extra = bmap_total -
total;
3464 while (
bmap && i1 >= 0 && i2 >= 0) {
3472 if (last1 > last2) {
3476 if (last1 < last2) {
3523 "context has unknown divs",
goto error);
3580 "context has unknown divs",
goto error);
3585 for (i = 0; i <
map->n; ++i) {
3591 if (univ &&
map->n > 1)
3677 isl_size n_disjunct_map, n_disjunct_context;
3682 if (is_universe >= 0 && !is_universe)
3684 if (is_universe < 0)
3700 if (n_disjunct_map < 0 || n_disjunct_context < 0)
3702 if (n_disjunct_map != 1 || n_disjunct_context != 1) {
3713 if (n_disjunct_context == 1) {
3720 list = isl_map_list_alloc(ctx, 2);
3820 if (bmap1->n_div || bmap2->n_div)
3822 if (!bmap1->n_eq && !bmap2->n_eq)
3837 for (i = 0; i < bmap2->n_eq; ++i) {
3840 bmap1, elim,
total);
3845 for (i = 0; i < bmap2->n_ineq; ++i) {
3848 bmap2->ineq[i], bmap1, elim,
total);
3854 for (i = 0; i < bmap1->n_ineq; ++i) {
3857 bmap1->ineq[i], bmap2, elim,
total);
3893 for (i = 0; i <
map1->n; ++i) {
3894 for (j = 0; j <
map2->n; ++j) {
3920 if (disjoint < 0 || disjoint)
3924 if (disjoint < 0 || disjoint)
3960 if (disjoint < 0 || disjoint)
4000 if (disjoint < 0 || disjoint)
4004 if (disjoint < 0 || disjoint)
4008 if (disjoint < 0 || disjoint)
4042 if (disjoint < 0 || disjoint)
4046 if (disjoint < 0 || disjoint)
4050 if (disjoint < 0 || disjoint)
4103 return isl_seq_is_neg(bmap->ineq[i] + first, bmap->ineq[j] + first,
n);
4151 unsigned div,
unsigned l,
unsigned u)
4168 n_div - div - 1) != -1)
4171 if (opp < 0 || !opp)
4172 return opp < 0 ? -1 : n_div;
4174 for (i = 0; i < n_div; ++i) {
4181 isl_int_add(bmap->ineq[l][0], bmap->ineq[l][0], bmap->ineq[u][0]);
4184 bmap->ineq[l][0], bmap->ineq[u][0]);
4192 for (i = 0; i < n_div; ++i) {
4197 for (j = 0; j < n_div; ++j) {
4205 for (j = 0; j < bmap->n_ineq; ++j) {
4207 if (j == l || j == u)
4217 bmap->ineq[j][1 + v_div + div],
4219 valid =
isl_int_eq(bmap->ineq[j][1 + v_div + div],
4220 bmap->ineq[j][1 + v_div + i]);
4222 bmap->ineq[j][1 + v_div + div],
4227 if (j < bmap->n_ineq)
4233 isl_int_sub(bmap->ineq[l][0], bmap->ineq[l][0], bmap->ineq[u][0]);
4419 for (i = 0; i < n_div; ++i) {
4422 if (best >= 0 && pairs[best] <= pairs[i])
4428 for (l = 0; l < bmap->n_ineq; ++l) {
4433 for (u = 0; u < bmap->n_ineq; ++u) {
4447 if (u < bmap->n_ineq)
4454 if (l == bmap->n_ineq) {
4528 unsigned div1,
unsigned div2,
unsigned l,
unsigned u)
4541 total = 1 + v_div + bmap->n_div;
4547 for (i = 0; i < bmap->n_ineq; ++i) {
4548 if (i == l || i == u)
4561 bmap->ineq[i][1 + v_div + div1]);
4595 if (v_div < 0 || n_div < 0)
4598 for (i = 0; i < n_div; ++i) {
4601 for (l = 0; l < bmap->n_ineq; ++l) {
4604 for (u = 0; u < bmap->n_ineq; ++u) {
4639 return isl_seq_eq(bmap->ineq[i] + first, bmap->ineq[j] + first,
n);
4699 if (known < 0 || known)
4707 for (i = 0; i < n_div; ++i) {
4715 if (known < 0 || !known)
4759 if (ineq1 > ineq2) {
4848 int lower = -1, upper = -1;
4854 for (i = 0; i < bmap->n_ineq && (lower < 0 || upper < 0); ++i) {
4879 if (lower < 0 || upper < 0)
4880 return bmap->n_ineq;
4893 return equal ? lower : bmap->n_ineq;
4916 int div,
int ineq,
int lower,
int *pairs)
4945 if (v_div < 0 || n_div < 0)
4948 for (i = div + 1; i < n_div; ++i) {
5016 if (bmap->n_div == 0)
5029 for (i = 0; i < bmap->n_div; ++i) {
5031 int last_pos, last_neg;
5042 for (j = 0; j < bmap->n_eq; ++j)
5049 for (j = 0; j < bmap->n_ineq; ++j) {
5060 if (pairs[i] == 0) {
5061 for (j = bmap->n_ineq - 1; j >= 0; --j)
5100 bmap->ineq[last_pos][0], bmap->ineq[last_neg][0]);
5102 bmap->ineq[last_pos][0], 1);
5103 redundant =
isl_int_ge(bmap->ineq[last_pos][0],
5104 bmap->ineq[last_pos][1+off+i]);
5106 bmap->ineq[last_pos][0], 1);
5108 bmap->ineq[last_pos][0], bmap->ineq[last_neg][0]);
5111 last_pos, last_neg, pairs);
5177 if (!bmap || n_row < 0 || n_col < 0)
5182 "expecting square matrix",
goto error);
5187 for (i = 0; i < bmap->n_eq; ++i)
5190 for (i = 0; i < bmap->n_ineq; ++i)
5193 for (i = 0; i < bmap->n_div; ++i) {
5264 if (bmap->n_eq == 0)
5279 for (i = 0; i < bmap->n_eq; ++i) {
5286 n_div - (l + 1)) == -1)
5290 if (i >= bmap->n_eq)
5302 for (i = l; i < n_div; ++i)
5322 for (i = 0; i < bmap->n_eq; ++i) {
5426 if (bmap->n_eq == 0)
5446 if (T->
n_col == 0) {
5458 for (i = 0; i < bmap->n_ineq; ++i) {
5517 if (
total < 0 || n_div < 0)
5522 for (i = 0; i < bmap->n_eq; ++i) {
5526 shift, bmap->eq[i][1 +
total + div]);
5528 for (i = 0; i < bmap->n_ineq; ++i) {
5532 shift, bmap->ineq[i][1 +
total + div]);
5534 for (i = 0; i < bmap->n_div; ++i) {
5540 shift, bmap->div[i][1 + 1 +
total + div]);
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_alloc_array(ctx, type, n)
#define isl_calloc_array(ctx, type, n)
#define ISL_F_ISSET(p, f)
isl_bool isl_bool_not(isl_bool b)
isl_stat isl_stat(*) void user)
isl_bool isl_bool(* test)(__isl_keep ISL_KEY *key, __isl_keep ISL_VAL *val, void *user)
void GMPZAPI() neg(mp_int rop, mp_int op)
void GMPZAPI() gcd(mp_int rop, mp_int op1, mp_int op2)
int GMPQAPI() cmp(mp_rat op1, mp_rat op2)
void GMPZAPI() swap(mp_int rop1, mp_int rop2)
__isl_give isl_basic_set * isl_basic_set_plain_affine_hull(__isl_take isl_basic_set *bset)
int isl_blk_is_error(struct isl_blk block)
void isl_blk_free(struct isl_ctx *ctx, struct isl_blk block)
struct isl_blk isl_blk_alloc(struct isl_ctx *ctx, size_t n)
static int coalesce(isl_ctx *ctx, int n, struct isl_coalesce_info *info)
static void drop(struct isl_coalesce_info *info)
__isl_give isl_mat * isl_mat_parameter_compression(__isl_take isl_mat *B, __isl_take isl_vec *d)
__isl_give isl_mat * isl_mat_parameter_compression_ext(__isl_take isl_mat *B, __isl_take isl_mat *A)
__isl_give isl_mat * isl_mat_variable_compression(__isl_take isl_mat *B, __isl_give isl_mat **T2)
#define isl_int_is_nonneg(i)
#define isl_int_is_zero(i)
#define isl_int_is_one(i)
#define isl_int_is_pos(i)
#define isl_int_is_negone(i)
#define isl_int_is_neg(i)
#define isl_int_divexact_ui(r, i, j)
#define isl_int_gcd(r, i, j)
#define isl_int_neg(r, i)
#define isl_int_abs_eq(i, j)
#define isl_int_add_ui(r, i, j)
#define isl_int_add(r, i, j)
#define isl_int_abs_ge(i, j)
#define isl_int_addmul(r, i, j)
#define isl_int_is_divisible_by(i, j)
#define isl_int_fdiv_r(r, i, j)
#define isl_int_abs_gt(i, j)
#define isl_int_set(r, i)
#define isl_int_cdiv_q(r, i, j)
#define isl_int_mul_ui(r, i, j)
#define isl_int_divexact(r, i, j)
#define isl_int_mul(r, i, j)
#define isl_int_set_si(r, i)
#define isl_int_sub_ui(r, i, j)
#define isl_int_fdiv_q(r, i, j)
#define isl_int_sub(r, i, j)
#define isl_int_submul(r, i, j)
__isl_give isl_basic_map * isl_basic_map_sort_divs(__isl_take isl_basic_map *bmap)
isl_size isl_basic_map_var_offset(__isl_keep isl_basic_map *bmap, enum isl_dim_type type)
__isl_give isl_basic_map * isl_basic_map_order_divs(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_drop_constraints_involving(__isl_take isl_basic_map *bmap, unsigned first, unsigned n)
__isl_give isl_basic_set * isl_basic_set_set_to_empty(__isl_take isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_dup(__isl_keep isl_basic_set *bset)
void isl_basic_map_inequality_to_equality(__isl_keep isl_basic_map *bmap, unsigned pos)
isl_size isl_basic_map_n_inequality(__isl_keep isl_basic_map *bmap)
int isl_basic_map_drop_equality(__isl_keep isl_basic_map *bmap, unsigned pos)
__isl_give isl_basic_map * isl_inequality_negate(__isl_take isl_basic_map *bmap, unsigned pos)
isl_bool isl_basic_map_div_is_known(__isl_keep isl_basic_map *bmap, int div)
unsigned isl_basic_map_offset(__isl_keep isl_basic_map *bmap, enum isl_dim_type type)
__isl_give isl_basic_set * isl_basic_set_add_ineq(__isl_take isl_basic_set *bset, isl_int *ineq)
__isl_give isl_basic_set * isl_basic_set_extend_constraints(__isl_take isl_basic_set *base, unsigned n_eq, unsigned n_ineq)
__isl_give isl_basic_map * isl_basic_map_fix(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, isl_int value)
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
int isl_basic_map_constraint_cmp(__isl_keep isl_basic_map *bmap, isl_int *c1, isl_int *c2)
int isl_basic_map_alloc_div(__isl_keep isl_basic_map *bmap)
isl_bool isl_basic_map_div_is_marked_unknown(__isl_keep isl_basic_map *bmap, int div)
__isl_give isl_basic_map * isl_basic_map_set_to_empty(__isl_take isl_basic_map *bmap)
int isl_basic_map_first_unknown_div(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_free_inequality(__isl_take isl_basic_set *bset, unsigned n)
__isl_give isl_basic_map * isl_basic_map_free_equality(__isl_take isl_basic_map *bmap, unsigned n)
int isl_basic_map_drop_inequality(__isl_keep isl_basic_map *bmap, unsigned pos)
int isl_basic_map_alloc_inequality(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_add_div_constraint(__isl_take isl_basic_map *bmap, unsigned div, int sign)
isl_bool isl_map_has_equal_params(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__isl_give isl_map * isl_map_cow(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_mark_div_unknown(__isl_take isl_basic_map *bmap, int div)
__isl_give isl_basic_set * isl_basic_map_underlying_set(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_free_equality(__isl_take isl_basic_set *bset, unsigned n)
__isl_give isl_basic_map * isl_basic_map_cow(__isl_take isl_basic_map *bmap)
isl_bool isl_map_align_params_map_map_and_test(__isl_keep isl_map *map1, __isl_keep isl_map *map2, isl_bool(*fn)(__isl_keep isl_map *map1, __isl_keep isl_map *map2))
__isl_give isl_basic_set * isl_basic_set_cow(__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_map * isl_basic_map_drop_div(__isl_take isl_basic_map *bmap, unsigned div)
int isl_basic_set_drop_inequality(__isl_keep isl_basic_set *bset, unsigned pos)
int isl_basic_map_alloc_equality(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_extend_constraints(__isl_take isl_basic_map *base, unsigned n_eq, unsigned n_ineq)
isl_bool isl_basic_map_divs_known(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_reset_space(__isl_take isl_basic_map *bmap, __isl_take isl_space *space)
__isl_give isl_basic_map * isl_basic_map_extend(__isl_take isl_basic_map *base, unsigned extra, unsigned n_eq, unsigned n_ineq)
__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_bool isl_map_divs_known(__isl_keep isl_map *map)
isl_bool isl_map_tuple_is_equal(__isl_keep isl_map *map1, enum isl_dim_type type1, __isl_keep isl_map *map2, enum isl_dim_type type2)
__isl_give isl_basic_set * isl_basic_set_sort_constraints(__isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_alloc_space(__isl_take isl_space *space, unsigned extra, unsigned n_eq, unsigned n_ineq)
#define ISL_BASIC_MAP_SORTED
#define ISL_BASIC_MAP_NO_REDUNDANT
isl_stat isl_map_align_params_bin(__isl_keep isl_map **map1, __isl_keep isl_map **map2)
#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)
isl_stat isl_basic_map_check_equal_space(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
#define ISL_BASIC_MAP_REDUCED_COEFFICIENTS
#define ISL_BASIC_SET_NO_IMPLICIT
#define ISL_BASIC_SET_FINAL
isl_stat isl_map_basic_map_check_equal_space(__isl_keep isl_map *map, __isl_keep isl_basic_map *bmap)
#define ISL_BASIC_MAP_RATIONAL
#define ISL_BASIC_MAP_NORMALIZED_DIVS
#define ISL_MAP_NORMALIZED
isl_stat isl_basic_map_check_range(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
static __isl_give isl_basic_map * isl_basic_map_preimage_vars(__isl_take isl_basic_map *bmap, unsigned pos, __isl_take isl_mat *T)
static int div_find_coalesce(__isl_keep isl_basic_map *bmap, int *pairs, unsigned div, unsigned l, unsigned u)
static __isl_give isl_map * replace_by_disjunct(__isl_take isl_map *map, int pos, __isl_take isl_basic_map *context)
static isl_bool is_pure_unit_div(__isl_keep isl_basic_map *bmap, int div)
static __isl_give isl_basic_set * drop_irrelevant_constraints(__isl_take isl_basic_set *context, __isl_keep isl_basic_set *bset)
static __isl_give isl_basic_map * eliminate_div(__isl_take isl_basic_map *bmap, isl_int *eq, unsigned div, int keep_divs)
static __isl_give isl_mat * combined_variable_compression(__isl_keep isl_basic_map *bmap1, int n1, __isl_keep isl_basic_map *bmap2, int n2, int total)
static __isl_give isl_basic_map * drop_more_redundant_divs(__isl_take isl_basic_map *bmap, __isl_take int *pairs, int n)
static __isl_give isl_basic_map * set_eq_and_try_again(__isl_take isl_basic_map *bmap, int ineq, __isl_take int *pairs)
static int set_hash_index(struct isl_constraint_index *ci, __isl_keep isl_basic_set *bset, int k)
__isl_give isl_basic_map * isl_basic_map_remove_duplicate_constraints(__isl_take isl_basic_map *bmap, int *progress, int detect_divs)
static isl_bool isl_map_plain_is_disjoint_global(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
static isl_stat mark_shifted_constraints(__isl_keep isl_mat *ineq, __isl_keep isl_basic_set *context, int *row)
static isl_bool has_multiple_var_equality(__isl_keep isl_basic_map *bmap)
static isl_bool all_pairs(__isl_keep isl_map *map1, __isl_keep isl_map *map2, isl_bool(*test)(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2))
__isl_give isl_basic_map * isl_basic_map_eliminate_vars(__isl_take isl_basic_map *bmap, unsigned pos, unsigned n)
__isl_give isl_set * isl_set_plain_gist_basic_set(__isl_take isl_set *set, __isl_take isl_basic_set *context)
static __isl_give isl_basic_map * set_div_from_lower_bound(__isl_take isl_basic_map *bmap, int div, int ineq)
static __isl_give isl_basic_set * isl_basic_set_reduce_using_equalities(__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context)
__isl_give isl_basic_map * isl_basic_map_simplify(__isl_take isl_basic_map *bmap)
static void set_compute_elimination_index(__isl_keep isl_basic_set *bset, int *elim, unsigned len)
static void constraint_index_free(struct isl_constraint_index *ci)
static __isl_give isl_basic_set * drop_irrelevant_constraints_marked(__isl_take isl_basic_set *context, __isl_keep isl_mat *ineq, int *row)
static __isl_give isl_basic_map * drop_div_and_try_again(__isl_take isl_basic_map *bmap, int div, int ineq1, int ineq2, __isl_take int *pairs)
static void test_ineq_data_clear(struct test_ineq_data *data)
static __isl_give isl_basic_map * gist_strides(__isl_take isl_basic_map *bmap, __isl_keep isl_basic_map *context)
__isl_give isl_basic_map * isl_basic_map_gist_domain(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *context)
static __isl_give isl_basic_map * coalesce_divs(__isl_take isl_basic_map *bmap, unsigned div1, unsigned div2, unsigned l, unsigned u)
static isl_bool better_div_constraint(__isl_keep isl_basic_map *bmap, int div, int ineq)
static __isl_give isl_basic_map * isl_basic_map_drop_redundant_divs_ineq(__isl_take isl_basic_map *bmap)
static unsigned int round_up(unsigned int v)
static isl_bool is_opposite(__isl_keep isl_basic_map *bmap, int i, int j)
static isl_bool div_is_redundant(__isl_keep isl_basic_map *bmap, int div)
static __isl_give isl_basic_map * normalize_div_expression(__isl_take isl_basic_map *bmap, int div)
static int hash_index_ineq(struct isl_constraint_index *ci, isl_int **ineq)
__isl_give isl_basic_set * isl_basic_set_drop_constraints_involving_unknown_divs(__isl_take isl_basic_set *bset)
static __isl_give isl_basic_map * normalize_div_expressions(__isl_take isl_basic_map *bmap)
isl_bool isl_basic_map_is_disjoint(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
static __isl_give isl_basic_set * uset_gist_uncompressed(__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context)
static __isl_give isl_mat * extract_ineq(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_finalize(__isl_take isl_basic_map *bmap)
static isl_bool ok_to_eliminate_div(__isl_keep isl_basic_map *bmap, isl_int *eq, unsigned div)
static __isl_give isl_basic_set * project_onto_involved(__isl_take isl_basic_set *bset, __isl_keep isl_basic_set *template)
__isl_give isl_basic_map * isl_basic_map_gauss(__isl_take isl_basic_map *bmap, int *progress)
static __isl_give isl_basic_map * drop_equalities(__isl_take isl_basic_map *bmap, __isl_keep isl_basic_map *context)
static __isl_give isl_basic_map * isl_basic_map_remove_shifted_constraints(__isl_take isl_basic_map *bmap, __isl_take isl_basic_map *context)
int isl_basic_set_plain_is_disjoint(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
static __isl_give isl_basic_map * eliminate_unit_div(__isl_take isl_basic_map *bmap, int div, int *progress)
__isl_give isl_basic_map * isl_basic_map_gist(__isl_take isl_basic_map *bmap, __isl_take isl_basic_map *context)
__isl_give isl_map * isl_map_gist(__isl_take isl_map *map, __isl_take isl_map *context)
static isl_stat create_constraint_index(struct isl_constraint_index *ci, __isl_keep isl_basic_map *bmap)
static __isl_give isl_basic_map * set_div_from_eq(__isl_take isl_basic_map *bmap, int div, int eq, int *progress)
__isl_give isl_basic_set * isl_basic_set_gist(__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context)
__isl_give isl_basic_map * isl_basic_map_eliminate(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
static __isl_give isl_basic_map * coalesce_or_drop_more_redundant_divs(__isl_take isl_basic_map *bmap, int *pairs, int n)
__isl_give isl_basic_map * isl_basic_map_detect_inequality_pairs(__isl_take isl_basic_map *bmap, int *progress)
static __isl_give isl_mat * extract_compressed_stride_constraints(__isl_keep isl_basic_map *bmap, int bmap_n_eq, __isl_keep isl_basic_map *context, int context_n_eq)
__isl_give isl_basic_map * isl_basic_map_reduce_coefficients(__isl_take isl_basic_map *bmap)
static isl_bool is_any_div(__isl_keep isl_basic_map *bmap, int div)
isl_bool isl_basic_set_is_disjoint(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
static int is_opposite_part(__isl_keep isl_basic_map *bmap, int i, int j, int first, int n)
isl_bool isl_basic_map_is_div_constraint(__isl_keep isl_basic_map *bmap, isl_int *constraint, unsigned div)
__isl_give isl_basic_map * isl_basic_map_shift_div(__isl_take isl_basic_map *bmap, int div, int pos, isl_int shift)
static __isl_give isl_basic_map * drop_redundant_divs_again(__isl_take isl_basic_map *bmap, __isl_take int *pairs, int simplify)
__isl_give isl_map * isl_map_gist_params(__isl_take isl_map *map, __isl_take isl_set *context)
static isl_bool ok_to_set_div_from_bound(__isl_keep isl_basic_map *bmap, int div, int ineq)
static int is_related(isl_int *c, int len, int *relevant)
__isl_give isl_map * isl_map_plain_gist_basic_map(__isl_take isl_map *map, __isl_take isl_basic_map *context)
static __isl_give isl_basic_map * remove_dependent_vars(__isl_take isl_basic_map *bmap, int pos)
static __isl_give isl_basic_set * uset_gist_compressed(__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context, __isl_take isl_mat *T)
isl_bool isl_map_is_disjoint(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
static int n_pure_div_eq(__isl_keep isl_basic_map *bmap)
static isl_bool isl_map_is_disjoint_aligned(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
static __isl_give isl_basic_set * replace_by_empty(__isl_take isl_basic_set *bset)
static __isl_give isl_basic_map * reduce_stride_constraints(__isl_take isl_basic_map *bmap, int n, __isl_keep isl_mat *A)
static __isl_give isl_map * replace_by_universe(__isl_take isl_map *map, __isl_take isl_map *drop)
static __isl_give isl_basic_map * reduce_coefficient_in_div(__isl_take isl_basic_map *bmap, int div, int pos)
static void lower_bound_from_parallel(__isl_keep isl_basic_map *bmap, int ineq, int lower, int pos, isl_int *l)
__isl_give isl_basic_set * isl_basic_set_simplify(__isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_gauss5(__isl_take isl_basic_map *bmap, int *progress, isl_stat(*swap)(unsigned a, unsigned b, void *user), isl_stat(*drop)(unsigned n, void *user), void *user)
__isl_give isl_basic_map * isl_basic_map_plain_gist(__isl_take isl_basic_map *bmap, __isl_take isl_basic_map *context)
__isl_give isl_basic_map * isl_basic_map_drop_redundant_divs(__isl_take isl_basic_map *bmap)
static void swap_inequality(__isl_keep isl_basic_map *bmap, int a, int b)
static __isl_give isl_basic_map * eliminate_divs_eq(__isl_take isl_basic_map *bmap, int *progress)
__isl_give isl_set * isl_set_gist(__isl_take isl_set *set, __isl_take isl_set *context)
__isl_give isl_basic_map * isl_basic_map_eliminate_pure_unit_divs(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_drop_constraints_involving_unknown_divs(__isl_take isl_basic_map *bmap)
static isl_bool int_between_bounds(__isl_keep isl_basic_map *bmap, int i, int l, int u, struct test_ineq_data *data)
static __isl_give isl_basic_map * remove_redundant_divs(__isl_take isl_basic_map *bmap)
static int hash_index(struct isl_constraint_index *ci, __isl_keep isl_basic_map *bmap, int k)
static int set_reduced_using_equalities(isl_int *dst, isl_int *src, __isl_keep isl_basic_set *bset, int *elim, unsigned total)
isl_bool isl_map_plain_is_disjoint(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
static isl_bool constraint_index_is_redundant(struct isl_constraint_index *ci, isl_int *ineq)
static isl_bool needs_reduction(__isl_keep isl_basic_map *bmap, int div, int pos)
static __isl_give isl_basic_map * eliminate_divs_ineq(__isl_take isl_basic_map *bmap, int *progress)
__isl_give isl_map * isl_map_drop_constraints_involving_unknown_divs(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_mark_final(__isl_take isl_basic_map *bmap)
__isl_give isl_map * isl_map_plain_gist(__isl_take isl_map *map, __isl_take isl_map *context)
static __isl_give isl_basic_map * reduce_div_coefficients(__isl_take isl_basic_map *bmap)
static isl_bool single_unknown(__isl_keep isl_basic_map *bmap, int ineq, int div)
__isl_give isl_basic_set * isl_basic_set_eliminate(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
static void swap_equality(__isl_keep isl_basic_map *bmap, int a, int b)
__isl_give isl_basic_set * isl_basic_set_gauss(__isl_take isl_basic_set *bset, int *progress)
static __isl_give isl_basic_map * basic_map_from_equalities(__isl_take isl_space *space, __isl_take isl_mat *eq)
__isl_give isl_basic_set * isl_basic_set_eliminate_vars(__isl_take isl_basic_set *bset, unsigned pos, unsigned n)
__isl_give isl_basic_set * isl_basic_set_finalize(__isl_take isl_basic_set *bset)
__isl_give isl_map * isl_map_gist_domain(__isl_take isl_map *map, __isl_take isl_set *context)
static void update_groups(int dim, int *group, isl_int *c)
static isl_bool is_parallel_except(__isl_keep isl_basic_map *bmap, int i, int j, int pos)
__isl_give isl_map * isl_map_gist_basic_map(__isl_take isl_map *map, __isl_take isl_basic_map *context)
static __isl_give isl_basic_map * eliminate_var_using_equality(__isl_take isl_basic_map *bmap, unsigned pos, isl_int *eq, int keep_divs, int *progress)
static isl_bool test_ineq_is_satisfied(__isl_keep isl_basic_map *bmap, struct test_ineq_data *data)
static int all_neg(int *row, int n)
__isl_give isl_set * isl_set_gist_basic_set(__isl_take isl_set *set, __isl_take isl_basic_set *context)
static int lower_bound_is_cst(__isl_keep isl_basic_map *bmap, int div, int ineq)
static __isl_give isl_basic_map * drop_unrelated_constraints(__isl_take isl_basic_map *bmap, int *relevant)
__isl_give isl_basic_map * isl_basic_map_drop_unrelated_constraints(__isl_take isl_basic_map *bmap, __isl_take int *group)
static __isl_give isl_basic_map * remove_duplicate_divs(__isl_take isl_basic_map *bmap, int *progress)
__isl_give isl_map * isl_map_gist_range(__isl_take isl_map *map, __isl_take isl_set *context)
static int is_zero_or_one(isl_int v)
isl_bool isl_basic_map_plain_is_disjoint(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
static __isl_give isl_basic_map * drop_inequalities(__isl_take isl_basic_map *bmap, __isl_keep isl_basic_map *context)
static void remove_incomplete_powers(isl_int *g, isl_int c)
__isl_give isl_basic_map * isl_basic_map_normalize_constraints(__isl_take isl_basic_map *bmap)
static int * alloc_groups(__isl_keep isl_basic_set *context)
static void compute_elimination_index(__isl_keep isl_basic_map *bmap, int *elim, unsigned len)
static __isl_give isl_basic_set * uset_gist_full(__isl_take isl_basic_set *bset, __isl_take isl_mat *ineq, __isl_take isl_basic_set *context)
__isl_give isl_set * isl_set_gist_params(__isl_take isl_set *set, __isl_take isl_set *context)
static isl_bool has_coef_one(__isl_keep isl_basic_map *bmap, int div, int ineq)
isl_bool isl_set_is_disjoint(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
static __isl_give isl_basic_set * remove_shifted_constraints(__isl_take isl_basic_set *bset, __isl_keep isl_basic_set *context)
static isl_stat preimage(isl_int *c, __isl_keep isl_mat *T)
static __isl_give isl_vec * normalize_constraint(__isl_take isl_vec *v, int *tightened)
__isl_give isl_set * isl_set_gist_params_basic_set(__isl_take isl_set *set, __isl_take isl_basic_set *context)
static __isl_give isl_basic_set * update_ineq_free(__isl_take isl_basic_set *bset, __isl_take isl_mat *ineq, __isl_take isl_basic_set *context, __isl_take int *row, struct isl_tab *tab)
static __isl_give isl_basic_map * reduce_div_coefficients_of_div(__isl_take isl_basic_map *bmap, int div)
static isl_bool any_div_involves_div(__isl_keep isl_basic_map *bmap, int div)
static isl_bool is_opposite_except(__isl_keep isl_basic_map *bmap, int i, int j, int pos)
static int n_div_eq(__isl_keep isl_basic_map *bmap)
static int reduced_using_equalities(isl_int *dst, isl_int *src, __isl_keep isl_basic_map *bmap, int *elim, unsigned total)
static __isl_give isl_basic_map * eliminate_unit_divs(__isl_take isl_basic_map *bmap, int *progress)
static __isl_give isl_basic_map * check_for_div_constraints(__isl_take isl_basic_map *bmap, int k, int l, isl_int sum, int *progress)
__isl_give isl_basic_set * isl_basic_set_normalize_constraints(__isl_take isl_basic_set *bset)
static __isl_give isl_basic_set * update_ineq(__isl_take isl_basic_set *bset, __isl_keep int *row, struct isl_tab *tab)
static isl_bool bmap_eq_involves_unknown_divs(__isl_keep isl_basic_map *bmap, int eq, unsigned first, unsigned n)
static void lower_bound_from_opposite(__isl_keep isl_basic_map *bmap, int ineq, int upper, int pos, isl_int *u)
static __isl_give isl_basic_set * uset_gist(__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context)
static __isl_give isl_basic_map * eliminate_selected_unit_divs(__isl_take isl_basic_map *bmap, isl_bool(*select)(__isl_keep isl_basic_map *bmap, int div), int *progress)
static int is_parallel_part(__isl_keep isl_basic_map *bmap, int i, int j, int first, int n)
isl_bool isl_set_plain_is_disjoint(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
static isl_stat setup_constraint_index(struct isl_constraint_index *ci, __isl_keep isl_basic_set *bset)
static __isl_give isl_basic_map * fix_cst_lower(__isl_take isl_basic_map *bmap, int div, int ineq, int lower, int *pairs)
static __isl_give isl_basic_map * normalize_divs(__isl_take isl_basic_map *bmap, int *progress)
__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)
isl_stat isl_mat_row_gcd(__isl_keep isl_mat *mat, int row, isl_int *gcd)
void isl_mat_col_submul(__isl_keep isl_mat *mat, int dst_col, isl_int f, int src_col)
static isl_stat set_div(__isl_take isl_set *set, __isl_take isl_qpolynomial *qp, int div, isl_int v, struct isl_split_periods_data *data)
void isl_seq_submul(isl_int *dst, isl_int f, isl_int *src, unsigned len)
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_scale_down(isl_int *dst, isl_int *src, isl_int m, unsigned len)
void isl_seq_swp_or_cpy(isl_int *dst, isl_int *src, unsigned len)
void isl_seq_gcd(isl_int *p, unsigned len, isl_int *gcd)
void isl_seq_clr(isl_int *p, unsigned len)
void isl_seq_elim(isl_int *dst, isl_int *src, unsigned pos, unsigned len, isl_int *m)
void isl_seq_cpy(isl_int *dst, isl_int *src, unsigned len)
int isl_seq_eq(isl_int *p1, isl_int *p2, unsigned len)
uint32_t isl_seq_get_hash_bits(isl_int *p, unsigned len, unsigned bits)
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)
static isl_bool match(__isl_keep isl_space *space1, enum isl_dim_type type1, __isl_keep isl_space *space2, enum isl_dim_type type2)
int isl_tab_detect_redundant(struct isl_tab *tab)
void isl_tab_free(struct isl_tab *tab)
int isl_tab_is_redundant(struct isl_tab *tab, int con)
int isl_tab_is_equality(struct isl_tab *tab, int con)
__isl_give isl_basic_set * isl_basic_set_update_from_tab(__isl_take isl_basic_set *bset, struct isl_tab *tab)
isl_stat isl_tab_add_ineq(struct isl_tab *tab, isl_int *ineq)
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)
int isl_tab_freeze_constraint(struct isl_tab *tab, int con)
int isl_tab_extend_cons(struct isl_tab *tab, unsigned n_new)
static __isl_give isl_union_map * total(__isl_take isl_union_map *umap, __isl_give isl_map *(*fn)(__isl_take isl_map *))
__isl_give isl_vec * isl_vec_cow(__isl_take isl_vec *vec)
__isl_export __isl_give isl_map * isl_map_intersect_range(__isl_take isl_map *map, __isl_take isl_set *set)
__isl_export isl_bool isl_basic_map_is_empty(__isl_keep isl_basic_map *bmap)
__isl_give isl_space * isl_basic_map_get_space(__isl_keep isl_basic_map *bmap)
isl_bool isl_basic_map_plain_is_universe(__isl_keep isl_basic_map *bmap)
__isl_export isl_size isl_map_n_basic_map(__isl_keep isl_map *map)
__isl_export __isl_give isl_map * isl_map_intersect_params(__isl_take isl_map *map, __isl_take isl_set *params)
__isl_give isl_basic_map * isl_basic_map_project_out(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__isl_export isl_bool isl_map_is_empty(__isl_keep isl_map *map)
__isl_export __isl_give isl_map * isl_map_universe(__isl_take isl_space *space)
__isl_give isl_basic_map * isl_basic_map_insert_dims(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, unsigned n)
isl_bool isl_basic_map_plain_is_empty(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_drop_constraints_involving_dims(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__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_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_ctx * isl_basic_map_get_ctx(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_remove_dims(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__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_ctx * isl_map_get_ctx(__isl_keep isl_map *map)
__isl_export __isl_give isl_map * isl_map_intersect_domain(__isl_take isl_map *map, __isl_take isl_set *set)
isl_bool isl_map_plain_is_empty(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_remove_redundancies(__isl_take isl_basic_map *bmap)
__isl_export __isl_give isl_basic_map * isl_basic_map_intersect_domain(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *bset)
__isl_export __isl_give isl_basic_map * isl_map_unshifted_simple_hull(__isl_take isl_map *map)
isl_bool isl_basic_map_is_rational(__isl_keep isl_basic_map *bmap)
__isl_null isl_map * isl_map_free(__isl_take isl_map *map)
__isl_constructor __isl_give isl_map * isl_map_from_basic_map(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_copy(__isl_keep isl_basic_map *bmap)
isl_bool isl_map_plain_is_equal(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__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_map_simple_hull(__isl_take isl_map *map)
__isl_export isl_bool isl_map_is_subset(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__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_normalize_row(__isl_take isl_mat *mat, int row)
__isl_give isl_mat * isl_mat_product(__isl_take isl_mat *left, __isl_take isl_mat *right)
isl_size isl_mat_cols(__isl_keep isl_mat *mat)
isl_size isl_mat_rows(__isl_keep isl_mat *mat)
__isl_give isl_mat * isl_mat_identity(isl_ctx *ctx, unsigned n_row)
__isl_give isl_mat * isl_mat_diagonal(__isl_take isl_mat *mat1, __isl_take isl_mat *mat2)
__isl_give isl_mat * isl_mat_right_inverse(__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_ctx * isl_mat_get_ctx(__isl_keep isl_mat *mat)
__isl_give isl_mat * isl_mat_concat(__isl_take isl_mat *top, __isl_take isl_mat *bot)
__isl_give isl_mat * isl_mat_unimodular_complete(__isl_take isl_mat *M, int row)
__isl_give isl_vec * isl_vec_mat_product(__isl_take isl_vec *vec, __isl_take isl_mat *mat)
static bool any(const std::vector< bool > &vector)
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_export __isl_give isl_basic_set * isl_basic_set_detect_equalities(__isl_take isl_basic_set *bset)
isl_bool isl_basic_set_involves_dims(__isl_keep isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__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_project_out(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_export __isl_give isl_basic_set * isl_basic_set_intersect_params(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
__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_give isl_basic_set * isl_basic_set_add_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned n)
__isl_give isl_basic_set * isl_basic_set_empty(__isl_take isl_space *space)
__isl_export isl_bool isl_basic_set_is_empty(__isl_keep isl_basic_set *bset)
__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)
static __isl_give isl_set * set_from_map(__isl_take isl_map *map)
__isl_null isl_space * isl_space_free(__isl_take isl_space *space)
isl_ctx * isl_space_get_ctx(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_copy(__isl_keep isl_space *space)
isl_size isl_space_dim(__isl_keep isl_space *space, enum isl_dim_type type)
struct isl_basic_map * bmap
static Signature set_to_map
static std::vector< std::string > intersect(const std::vector< std::string > &v1, const std::vector< std::string > &v2)
isl_ctx * isl_vec_get_ctx(__isl_keep isl_vec *vec)
__isl_null isl_vec * isl_vec_free(__isl_take isl_vec *vec)
__isl_give isl_vec * isl_vec_alloc(isl_ctx *ctx, unsigned size)