70#define TYPE isl_basic_map
78 case isl_dim_out:
return 1 + space->nparam + space->n_in;
103 return map ?
map->dim : NULL;
242 return dim + bmap->n_div;
384 return bmap ? bmap->ctx : NULL;
389 return bset ? bset->ctx : NULL;
394 return map ?
map->ctx : NULL;
399 return set ?
set->ctx : NULL;
407 return bmap ? bmap->dim : NULL;
461 if (bmap->dim == space) {
494 cols = 1 + 1 + v_div + bmap->n_div;
499 for (i = 0; i < bmap->n_div; ++i)
552 for (i = 0; i < n_div; ++i) {
575 n_div, 0, 2 * n_div);
577 for (i = 0; i < n_div; ++i)
581 for (i = 0; i < n_div; ++i)
644 if (
map->dim == space) {
696 for (i = 0; i <
map->n; ++i) {
941 for (i = 0; i <
map->n; ++i) {
1086 if (nparam < 0 || d < 0 || n_div < 0)
1161 for (i = 1; i <
map->n; ++i) {
1167 if (rational != rational_i)
1169 "mixed rational and integer basic maps "
1214 if (bmap->n_eq ==
total) {
1216 for (i = 0; i < bmap->n_eq; ++i) {
1227 if (i == bmap->n_eq)
1232 return has_rational;
1244 for (i = 0; i <
map->n; ++i) {
1246 if (has_rational < 0 || has_rational)
1247 return has_rational;
1290 unsigned n_eq,
unsigned n_ineq)
1295 size_t row_size = 1 + n_var + extra;
1303 bmap->block =
isl_blk_alloc(ctx, (n_ineq + n_eq) * row_size);
1308 if ((n_ineq + n_eq) && !bmap->ineq)
1324 for (i = 0; i < n_ineq + n_eq; ++i)
1325 bmap->ineq[i] = bmap->block.data + i * row_size;
1327 for (i = 0; i < extra; ++i)
1328 bmap->div[i] = bmap->block2.data + i * (1 + row_size);
1332 bmap->c_size = n_eq + n_ineq;
1333 bmap->eq = bmap->ineq + n_ineq;
1334 bmap->extra = extra;
1338 bmap->sample = NULL;
1347 unsigned nparam,
unsigned dim,
unsigned extra,
1348 unsigned n_eq,
unsigned n_ineq)
1367 isl_assert(space->ctx, space->n_in == 0,
goto error);
1394 unsigned nparam,
unsigned in,
unsigned out,
unsigned extra,
1414 if (!dst ||
total < 0)
1417 for (i = 0; i < src->n_eq; ++i) {
1424 for (i = 0; i < src->n_ineq; ++i) {
1431 for (i = 0; i < src->n_div; ++i) {
1448 bmap->n_div, bmap->n_eq, bmap->n_ineq);
1452 dup->flags = bmap->flags;
1508 if (--bmap->ref > 0)
1530 return bmap->n_eq + bmap->n_ineq +
n <= bmap->c_size;
1544 "basic set should not have any parameters",
1560 "basic set should not have any local variables",
1571#define TYPE isl_basic_map
1641 isl_assert(ctx, (bmap->eq - bmap->ineq) + bmap->n_eq <= bmap->c_size,
1647 if ((bmap->eq - bmap->ineq) + bmap->n_eq == bmap->c_size) {
1653 bmap->ineq[j] = bmap->ineq[bmap->n_ineq - 1];
1654 bmap->ineq[bmap->n_ineq - 1] = bmap->eq[-1];
1662 bmap->extra - bmap->n_div);
1663 return bmap->n_eq++;
1678 "invalid number of equalities",
1705 for (r =
pos; r < bmap->n_eq; ++r)
1706 bmap->eq[r] = bmap->eq[r + 1];
1707 bmap->eq[bmap->n_eq] =
t;
1724 t = bmap->ineq[
pos];
1725 bmap->ineq[
pos] = bmap->ineq[bmap->n_ineq - 1];
1726 bmap->ineq[bmap->n_ineq - 1] = bmap->eq[-1];
1739 return bmap->n_ineq +
n <= bmap->eq - bmap->ineq;
1758 bmap->extra - bmap->n_div);
1759 return bmap->n_ineq++;
1772 if (
n > bmap->n_ineq)
1774 "invalid number of inequalities",
1794 if (
pos != bmap->n_ineq - 1) {
1795 t = bmap->ineq[
pos];
1796 bmap->ineq[
pos] = bmap->ineq[bmap->n_ineq - 1];
1797 bmap->ineq[bmap->n_ineq - 1] =
t;
1877 isl_assert(bmap->ctx, bmap->n_div < bmap->extra,
return -1);
1879 bmap->extra - bmap->n_div);
1881 return bmap->n_div++;
1890#define TYPE isl_basic_map
1917 if (
total < 0 || !div)
1920 if (div->size != 1 + 1 +
total)
1933 for (i = k; i >
pos; --i)
1961 unsigned i_pos,
unsigned o_pos)
1964 unsigned o_in, o_out;
1970 if (!bmap1 || !space)
1980 if (
total < 0 || n_param < 0 || n_in < 0 || n_out < 0 || n_div < 0)
1997 unsigned extra,
unsigned n_eq,
unsigned n_ineq)
2007 dims_ok = base->extra >= base->n_div +
extra;
2013 extra += base->extra;
2024 flags = base->flags;
2069 if (bmap->ref > 1) {
2087 map->cached_simple_hull[0] = NULL;
2088 map->cached_simple_hull[1] = NULL;
2119 unsigned a_len,
unsigned b_len)
2135 if (n1 == 0 || n2 == 0)
2146 for (i = 0; i < bmap->n_eq; ++i)
2148 bmap->eq[i] +
pos, n1, n2);
2150 for (i = 0; i < bmap->n_ineq; ++i)
2152 bmap->ineq[i] +
pos, n1, n2);
2154 for (i = 0; i < bmap->n_div; ++i)
2156 bmap->div[i]+1 +
pos, n1, n2);
2187 if (
n < 0 || empty < 0)
2189 if (
n == 0 && empty)
2199 if (bmap->n_eq > 0) {
2212 bmap->sample = NULL;
2274 for (i = 0; i <
map->n; ++i) {
2332 int first,
unsigned len)
2341 return first + 1 + last;
2350 return isl_seq_is_neg(bmap->ineq[i] + 1, bmap->ineq[j] + 1, len);
2371 isl_int_add(*tmp, bmap->ineq[i][0], bmap->ineq[j][0]);
2407 for (j = ineq - 1; j >= 0; --j) {
2409 bmap->ineq[j][1 + last]))
2453 for (j = ineq + 1; j < n_ineq; ++j) {
2455 bmap->ineq[j][1 + last]))
2476 bmap->div[
a] = bmap->div[
b];
2495 for (i = 0; i < bmap->n_eq; ++i)
2498 for (i = 0; i < bmap->n_ineq; ++i)
2501 for (i = 0; i < bmap->n_div; ++i)
2530 unsigned first,
unsigned n)
2535 if (first +
n == bmap->n_div)
2541 for (i = 0; i <
n; ++i)
2542 div[i] = bmap->div[first + i];
2543 for (i = 0; i < bmap->n_div - first -
n; ++i)
2544 bmap->div[first + i] = bmap->div[first +
n + i];
2545 for (i = 0; i <
n; ++i)
2546 bmap->div[bmap->n_div -
n + i] = div[i];
2579 unsigned first,
unsigned n)
2595 for (i = 0; i < bmap->n_eq; ++i)
2598 for (i = 0; i < bmap->n_ineq; ++i)
2601 for (i = 0; i < bmap->n_div; ++i)
2669 if (isl_map_check_range(
map,
type, first,
n) < 0)
2678 for (i = 0; i <
map->n; ++i) {
2725 if (isl_map_check_range(
map,
type, first,
n) < 0)
2732 for (i = 0; i <
map->n; ++i) {
2758 unsigned first,
unsigned n)
2797 for (i = 0; i <
map->n; ++i) {
2815 unsigned first,
unsigned n)
2835 int div,
unsigned first,
unsigned n)
2840 if (unknown < 0 || unknown)
2852 unsigned first,
unsigned n)
2859 if (involves < 0 || involves)
2864 if (n_div < 0 || v_div < 0)
2866 for (i = n_div - 1; i >= 0; --i) {
2872 if (involves < 0 || involves)
2883 unsigned first,
unsigned n)
2892 for (i = 0; i < n_div; ++i) {
2957 for (j = 0; (lb || ub) && j <
total + bmap->n_div; ++j) {
2960 bmap->div[div][1 + 1 + j]);
2965 bmap->div[div][1 + 1 + j]);
2978 for (j = 0; j < 1 +
total + bmap->n_div; ++j) {
2980 bmap->div[div][1 + j]);
2982 bmap->ineq[k][j], bmap->div[div][0]);
2990 for (j = 0; j < 1 +
total + bmap->n_div; ++j) {
2992 bmap->div[div][1 + j]);
2994 bmap->ineq[k][j], bmap->div[div][0]);
3054 int check_lb, check_ub;
3070 for (i = 0; (!check_lb || !check_ub) && i < bmap->n_ineq; ++i) {
3071 int s =
isl_int_sgn(bmap->ineq[i][1 + v_div + div]);
3078 if (!check_lb && !check_ub)
3083 for (i = 0; bmap && i < bmap->n_ineq; ++i) {
3088 check_lb, check_ub);
3104 for (i = bmap->n_div - 1; i >= 0; --i) {
3206 if (n_ineq < 0 || v_div < 0 || n_div < 0 ||
total < 0)
3211 for (i = n_ineq - 1; i >= 1; --i) {
3212 isl_seq_gcd(bmap->ineq[i] + 1 + v_div, n_div, &data->
n);
3217 data->
m, &data->
sum);
3234 for (i = j - 1; i >= 1; --i) {
3241 data->
m, &data->
sum);
3371 ma = isl_space_identity_multi_aff_on_domain(space);
3377 it = isl_multi_aff_get_at(
ma,
pos - v_in);
3379 ma = isl_multi_aff_set_at(
ma,
pos - v_in,
aff);
3454 for (i = 0; i <
map->n; ++i) {
3488 for (i = 0; i < bmap->n_eq; ++i)
3491 for (i = 0; i < bmap->n_ineq; ++i)
3494 for (i = 0; i < bmap->n_div; ++i) {
3509 if (isl_map_check_range(
map,
type, first,
n) < 0)
3512 for (i = 0; i <
map->n; ++i) {
3515 if (involves < 0 || involves)
3584 for (i = bmap->n_eq - 1; i >= 0; --i) {
3591 for (i = bmap->n_ineq - 1; i >= 0; --i) {
3634 for (i = bmap->n_eq - 1; i >= 0; --i) {
3641 for (i = bmap->n_ineq - 1; i >= 0; --i) {
3705 if (isl_map_check_range(
map,
type, first,
n) < 0)
3712 for (i = 0; i <
map->n; ++i) {
3786 if (marked < 0 || marked)
3789 for (i = bmap->n_div - 1; i >= 0; --i) {
3795 if (known < 0 || !known)
3812 for (i = bmap->n_div - 1; i >= 0; --i) {
3845 for (i = 0; i <
map->n; ++i) {
3879 if (isl_map_check_range(
map,
type, first,
n) < 0)
3882 for (i = 0; i <
map->n; ++i) {
3904 unsigned first,
unsigned n)
3910 FILE *out,
int indent)
3915 fprintf(out,
"null basic set\n");
3919 fprintf(out,
"%*s", indent,
"");
3920 fprintf(out,
"ref: %d, nparam: %d, dim: %d, extra: %d, flags: %x\n",
3921 bset->ref, bset->dim->nparam, bset->dim->n_out,
3922 bset->extra, bset->flags);
3934 FILE *out,
int indent)
3939 fprintf(out,
"null basic map\n");
3943 fprintf(out,
"%*s", indent,
"");
3944 fprintf(out,
"ref: %d, nparam: %d, in: %d, out: %d, extra: %d, "
3945 "flags: %x, n_name: %d\n",
3947 bmap->dim->nparam, bmap->dim->n_in, bmap->dim->n_out,
3948 bmap->extra, bmap->flags, bmap->dim->n_id);
3967 if (
pos >= bmap->n_ineq)
4003 for (i = 0; i <
map->n; ++i) {
4065 fprintf(out,
"null set\n");
4069 fprintf(out,
"%*s", indent,
"");
4070 fprintf(out,
"ref: %d, n: %d, nparam: %d, dim: %d, flags: %x\n",
4073 for (i = 0; i <
set->n; ++i) {
4074 fprintf(out,
"%*s", indent,
"");
4075 fprintf(out,
"basic set %d:\n", i);
4085 fprintf(out,
"null map\n");
4089 fprintf(out,
"%*s", indent,
"");
4090 fprintf(out,
"ref: %d, n: %d, nparam: %d, in: %d, out: %d, "
4091 "flags: %x, n_name: %d\n",
4093 map->dim->n_out,
map->flags,
map->dim->n_id);
4094 for (i = 0; i <
map->n; ++i) {
4095 fprintf(out,
"%*s", indent,
"");
4096 fprintf(out,
"basic map %d:\n", i);
4138 bset->n_div, bset->n_eq, bset->n_ineq);
4191 bset->n_div, bset->n_eq, bset->n_ineq);
4211 if (
total < 0 || !vec)
4214 if (1 +
total != vec->size)
4219 for (i = 0; i < bmap->n_eq; ++i) {
4227 for (i = 0; i < bmap->n_ineq; ++i) {
4249 struct isl_vec *sample = NULL;
4251 isl_size dim1, dim2, nparam1, nparam2;
4261 if (dim1 < 0 || dim2 < 0 || nparam1 < 0 || nparam2 < 0)
4263 if (dim1 == nparam1 && dim2 != nparam2)
4266 if (dim2 != nparam2 &&
4279 if (bmap1->sample &&
4283 else if (bmap2->sample &&
4292 bmap2->n_div, bmap2->n_eq, bmap2->n_ineq);
4299 bmap1->sample = sample;
4370 "unexpectedly not convex or involving local variables",
4386 if (
map2->p[0]->n_eq +
map2->p[0]->n_ineq != 1)
4396 if (
map2->p[0]->n_eq == 1)
4400 map2->p[0]->ineq[0]);
4453 (
map1->p[0]->n_eq +
map1->p[0]->n_ineq == 1 ||
4454 map2->p[0]->n_eq +
map2->p[0]->n_ineq == 1))
4467 if (dim2 < 0 || nparam2 < 0)
4469 if (dim2 != nparam2)
4481 for (i = 0; i <
map1->n; ++i)
4482 for (j = 0; j <
map2->n; ++j) {
4559 if (n1 < 0 || n2 < 0)
4578 if (
offset < 0 || n1 < 0 || n2 < 0)
4656 unsigned pos,
unsigned n)
4671 if (is_empty < 0 ||
total < 0)
4706 bmap->n_div, bmap->n_eq, bmap->n_ineq);
4773 for (i = 0; i <
map->n; ++i) {
4841 if (dst_type == src_type && dst_pos == src_pos)
4844 isl_assert(bmap->ctx, dst_type != src_type,
goto error);
4846 if (
pos(bmap->dim, dst_type) + dst_pos ==
4847 pos(bmap->dim, src_type) + src_pos +
4848 ((src_type < dst_type) ?
n : 0)) {
4851 src_type, src_pos,
n);
4869 if (
t == dst_type) {
4877 dst_pos,
size - dst_pos, off);
4878 off +=
size - dst_pos;
4879 }
else if (
t == src_type) {
4884 src_pos +
n,
size - src_pos -
n, off);
4885 off +=
size - src_pos -
n;
4894 bmap->n_div, bmap->n_eq, bmap->n_ineq);
4898 src_type, src_pos,
n);
4919 src_type, src_pos,
n);
4931 dst_type, dst_pos, src_type, src_pos,
n));
4950 if (isl_map_check_range(
map, src_type, src_pos,
n))
4953 if (dst_type == src_type && dst_pos == src_pos)
4962 for (i = 0; i <
map->n; ++i) {
4965 src_type, src_pos,
n);
4972 src_type, src_pos,
n);
5017 first,
n,
total - bmap->n_div -
n);
5019 first +
n,
size - (first +
n), off);
5020 off +=
size - (first +
n);
5029 bmap->n_div, bmap->n_eq, bmap->n_ineq);
5055 old = bmap->block2.data;
5057 (bmap->extra +
n) * (1 + row_size));
5058 if (!bmap->block2.data)
5063 for (i = 0; i <
n; ++i) {
5064 new_div[i] = bmap->block2.data +
5065 (bmap->extra + i) * (1 + row_size);
5068 for (i = 0; i < bmap->extra; ++i)
5069 new_div[
n + i] = bmap->block2.data + (bmap->div[i] - old);
5071 bmap->div = new_div;
5087 unsigned first,
unsigned n)
5108 for (i = 0; i < first; ++i)
5110 for (i = first +
n; i <
dim -
n_div; ++i)
5136 "cannot project out existentially quantified variables",
5172 unsigned first,
unsigned n)
5190 if (isl_map_check_range(
map,
type, first,
n) < 0)
5197 for (i = 0; i <
map->n; ++i) {
5231 if (isl_map_check_range(
map,
type, first,
n) < 0 ||
dim < 0)
5290 "only set dimensions can be projected out",
goto error);
5296 for (i = 0; i <
n; ++i)
5314 for (i = 0; i <
n; ++i) {
5373 if (n_in < 0 || n_out < 0 ||
n < 0 || nparam < 0)
5379 total = nparam + n_in + n_out + bmap1->n_div + bmap2->n_div +
n;
5392 bmap1->n_div + bmap2->n_div +
n,
5393 bmap1->n_eq + bmap2->n_eq,
5394 bmap1->n_ineq + bmap2->n_ineq);
5429 "spaces don't match",
goto error);
5458 if (nparam < 0 || n_in < 0 || n_out < 0)
5461 total = nparam + n_in + n_out + bmap1->n_div + bmap2->n_div + 2 * n_out;
5474 bmap1->n_div + bmap2->n_div + 2 * n_out,
5475 bmap1->n_eq + bmap2->n_eq + n_out,
5476 bmap1->n_ineq + bmap2->n_ineq);
5477 for (i = 0; i < n_out; ++i) {
5515 for (i = 0; i <
map1->n; ++i)
5516 for (j = 0; j <
map2->n; ++j) {
5557 for (i = 0; i < bmap->n_eq; ++i)
5558 for (j = 0; j <
n; ++j)
5559 isl_int_neg(bmap->eq[i][off+j], bmap->eq[i][off+j]);
5560 for (i = 0; i < bmap->n_ineq; ++i)
5561 for (j = 0; j <
n; ++j)
5562 isl_int_neg(bmap->ineq[i][off+j], bmap->ineq[i][off+j]);
5563 for (i = 0; i < bmap->n_div; ++i)
5564 for (j = 0; j <
n; ++j)
5565 isl_int_neg(bmap->div[i][1+off+j], bmap->div[i][1+off+j]);
5585 for (i = 0; i <
map->n; ++i) {
5617 if (nparam < 0 || n_in < 0 || n_out < 0)
5620 total = nparam + n_in + n_out + bmap->n_div + n_out;
5628 bmap->n_div + n_out,
5629 bmap->n_eq, bmap->n_ineq + 2 * n_out);
5632 for (i = 0; i < n_out; ++i) {
5668 for (i = 0; i <
map->n; ++i) {
5691 "expecting integer denominator",
goto error);
5712 if (
total < 0 || nparam < 0 || n_in < 0)
5739 if (
total < 0 || nparam < 0 || n_in < 0)
5767 if (
total < 0 || nparam < 0 || n_in < 0)
5794 if (
total < 0 || nparam < 0 || n_in < 0)
5822 if (
total < 0 || nparam < 0 || n_in < 0)
5844 for (i = 0; i < n_equal && bmap; ++i)
5859 for (i = 0; i <
pos && bmap; ++i)
5875 for (i = 0; i <
pos; ++i)
5891 for (i = 0; i <
pos && bmap; ++i)
5907 for (i = 0; i <
pos; ++i)
5924 for (i = 0; i + 1 <
n; ++i)
5980 for (i = 0; i + 1 <
n; ++i)
6118 if (v_div < 0 || n_div < 0)
6124 isl_seq_cpy(bmap->ineq[i], bmap->div[div] + 1, 1 + v_div + n_div);
6143 if (v_div < 0 || n_div < 0)
6149 isl_seq_neg(bmap->ineq[i], bmap->div[div] + 1, 1 + v_div + n_div);
6151 isl_int_add(bmap->ineq[i][0], bmap->ineq[i][0], bmap->ineq[i][1 +
pos]);
6245 if (bmap->dim->nparam == 0 && bmap->dim->n_in == 0 &&
6258 bmap->extra -= bmap->n_div;
6282 n = isl_basic_map_list_n_basic_map(list);
6286 for (i = 0; i <
n; ++i) {
6290 bmap = isl_basic_map_list_get_basic_map(list, i);
6292 list = isl_basic_set_list_set_basic_set(list, i, bset);
6297 isl_basic_map_list_free(list);
6318 if (dim < 0 || bmap_total < 0)
6321 if (like->n_div == 0) {
6329 total = dim + bset->extra;
6335 bmap->
n_div = like->n_div;
6336 bmap->
extra += like->n_div;
6351 for (i = 0; i < bmap->
extra; ++i)
6353 for (i = 0; i < like->n_div; ++i) {
6387 for (i = 1; i <
map->n; ++i)
6390 for (i = 0; i <
map->n; ++i) {
6459 if (dim1 < 0 || dim2 < 0)
6476 for (i = 0; i <
map->n; ++i) {
6592 if (n_in < 0 || n_out < 0)
6661 if (nparam < 0 || n_in < 0 || n_out < 0)
6672 for (i = 0; i < n_in; ++i)
6691 if (nparam < 0 || n_in < 0 || n_out < 0)
6702 for (i = 0; i < n_out; ++i)
6757 for (i = 0; i <
map->n; ++i) {
6758 map->p[i] = fn_bmap(
map->p[i]);
6765 space = fn_space(space);
6866 "negative number of basic maps",
goto error);
6873 map->ctx = space->ctx;
6928 for (i = 0; i <
total; ++i) {
7011 for (i = 0; i <
map->n; ++i)
7052 for (i = 0; i <
map->n; ++i)
7138 "expecting integer value",
goto error);
7217 for (i =
map->n - 1; i >= 0; --i) {
7241 if (isl_map_check_range(
map,
type,
pos, 1) < 0)
7243 for (i =
map->n - 1; i >= 0; --i) {
7265 if (isl_map_check_range(
map,
type,
pos, 1) < 0)
7267 for (i = 0; i <
map->n; ++i) {
7299 "expecting integer value",
goto error);
7300 if (isl_map_check_range(
map,
type,
pos, 1) < 0)
7302 for (i =
map->n - 1; i >= 0; --i) {
7328 unsigned input,
int value)
7395 if (isl_map_check_range(
map,
type,
pos, 1) < 0)
7397 for (i = 0; i <
map->n; ++i) {
7480 if (isl_map_check_range(
map,
type,
pos, 1) < 0)
7482 for (i =
map->n - 1; i >= 0; --i) {
7526 "expecting integer value",
goto error);
7558 "expecting integer value",
goto error);
7627 map = map_bound_multi_pw_aff(
map,
bound, set_bound);
7773 "expecting integer value",
goto error);
7835#define TYPE isl_pw_multi_aff
7837#define SUFFIX _pw_multi_aff
7839#define EMPTY isl_pw_multi_aff_empty
7841#define ADD isl_pw_multi_aff_union_add
7871 if (!
map || (!full && !dom))
7888 for (i = 1; i <
map->n; ++i) {
7924#define EMPTY isl_map_empty
7926#define ADD isl_map_union_disjoint
7961 if (!
map || (!full && !dom))
8001 return isl_map_partial_lexopt(
map, dom, empty, 0);
8026 return isl_basic_map_lexopt(bset,
flags);
8069 pma = isl_basic_map_lexopt_pw_multi_aff(bmap, max ?
ISL_OPT_MAX : 0);
8106 for (i = 1; i <
map->n; ++i) {
8171 if (nparam < 0 || !mat)
8178 isl_assert(bset->ctx, mat->n_row == 1 + nparam,
goto error);
8180 bset->dim->nparam = 0;
8181 bset->dim->n_out = nparam;
8184 bset->dim->nparam = bset->dim->n_out;
8185 bset->dim->n_out = 0;
8204 if (nparam < 0 || !mat)
8207 if (mat->n_row != 1 + nparam)
8209 "unexpected number of rows",
goto error);
8247 for (i = 0; i < eq->n_row; ++i) {
8252 isl_seq_clr(bset->eq[k] + eq->n_col, len - eq->n_col);
8277 for (i = 0; i <
set->n; ++i) {
8305 if (nparam < 0 || n_div < 0)
8308 for (i = 0, j = n_div - 1; i < bset->n_eq && j >= 0; --j) {
8338 if (bset->n_eq == 0)
8389 if (bset->n_eq == 0)
8399 if (i == bset->n_eq)
8409 if (T && T->
n_col == 0) {
8421 else if (i == bset->n_eq)
8450 old_n_div = bmap->n_div;
8455 for (i = 0; i < n_div; ++i) {
8456 isl_seq_cpy(bmap->div[i], ls->div->row[i], ls->div->n_col);
8457 isl_seq_clr(bmap->div[i] + ls->div->n_col, old_n_div);
8476 if (!bmap || n_div < 0)
8510 for (i = 0; i <
map->n; ++i) {
8563 if (n_known < 0 || nparam < 0 || n_in < 0 || n_out < 0)
8567 nparam + n_in + n_out + n_known, 0);
8573 n_known, bmap->n_div - n_known);
8575 for (i = n_known; i < bmap->n_div; ++i)
8577 bmap->n_div -= n_known;
8578 bmap->extra -= n_known;
8652 for (i = 0; i < bmap->n_div; ++i) {
8679 if (
n < 0 || first < 0)
8694 for (i = 0; i <
map->n; ++i) {
8754 for (i = 1 ; i <
map->n; ++i) {
8823 if (is_universe < 0)
8831 if (is_universe < 0)
8846 for (i = 0; i <
map1->n; ++i) {
8852 for (i = 0; i <
map2->n; ++i) {
8959 for (i = 0; result && i <
map->n; ++i)
8960 for (j = 0; j <
set->n; ++j) {
8985 "incompatible spaces",
goto error);
9013 "incompatible spaces",
goto error);
9080 product = control->
product(factor, other);
9083 product = isl_map_copy_tuple_id(product, control->
preserve_type,
9293 for (i = 0; i <
map1->n; ++i)
9294 for (j = 0; j <
map2->n; ++j) {
9304 if (result && result->
n <= 1)
9357 if (dim < 0 || nparam < 0)
9366 for (i = 0; i < dim; ++i) {
9455 for (i = 0; i <
map->n; ++i)
9482 if (nparam < 0 ||
n < 0)
9497 for (i = 0; i <
n; ++i) {
9546 if (n_in < 0 || n_out < 0)
9550 "number of input and output dimensions needs to be "
9551 "the same",
goto error);
9586 if (nparam < 0 || dim < 0 ||
total < 0)
9591 for (i = 0; i < dim; ++i) {
9670 for (i = 0; i <
n; ++i) {
9735 if (nparam < 0 || nvar < 0)
9760 if (!bmap1 || !bmap2)
9785 if (!bmap1 || !bmap2)
9808 for (i = 0; i <
map->n; ++i) {
9834#define TYPE isl_basic_map
9864#define TYPE1 isl_map
9866#define TYPE2 isl_basic_map
9868#define TYPE_PAIR isl_map_basic_map
9917 if (!bmap1 || !bmap2)
9954 return bmap->n_eq == 0 && bmap->n_ineq == 0;
9977 if (*univ < 0 || !*univ)
9997 if (univ < 0 || univ)
10008 if (univ < 0 || !univ)
10030 for (i = 0; i <
map->n; ++i) {
10047 struct isl_vec *sample = NULL;
10073 bmap->sample = NULL;
10118 if (bmap->sample->size != 1 +
total)
10166 for (i = 0; i < bmap->n_div; ++i) {
10176 "integer division depends on itself",
10193 for (i = 0; i <
map->n; ++i) {
10233 if (div->n_row < bmap->n_div)
10235 "not an expansion",
goto error);
10237 n_div = bmap->n_div;
10239 2 * (div->n_row - n_div));
10241 for (i = n_div; i < div->n_row; ++i)
10245 for (j = n_div - 1; j >= 0; --j) {
10253 for (i = 0; i < div->n_row; ++i) {
10254 if (j < n_div && exp[j] == i) {
10257 isl_seq_cpy(bmap->div[i], div->row[i], div->n_col);
10300 if (n_div < 0 || v_div < 0)
10303 for (i = div; i < n_div; ++i)
10304 if (
isl_seq_eq(dst->div[i], src->div[div], 1+1+v_div+div) &&
10343 if (!dst || src_n_div < 0)
10346 if (src_n_div == 0)
10357 for (i = 0; i < src_n_div; ++i) {
10364 j = known ?
find_div(dst, src, i) : dst_n_div;
10367 if (j == dst_n_div) {
10369 int extra = src_n_div - i;
10374 extra, 0, 2 * extra);
10383 isl_seq_cpy(dst->div[j], src->div[i], 1+1+v_div+i);
10384 isl_seq_clr(dst->div[j]+1+1+v_div+i, dst_n_div - i);
10411 for (i = 1; i <
map->n; ++i)
10413 for (i = 1; i <
map->n; ++i) {
10443 n = isl_basic_map_list_n_basic_map(list);
10451 for (i = 0; i <
n; ++i) {
10454 bmap = isl_basic_map_list_get_basic_map(list, i);
10474 n = isl_basic_map_list_n_basic_map(list);
10475 if (
n < 0 || !bmap)
10476 return isl_basic_map_list_free(list);
10478 for (i = 0; i <
n; ++i) {
10481 bmap_i = isl_basic_map_list_get_basic_map(list, i);
10483 list = isl_basic_map_list_set_basic_map(list, i, bmap_i);
10500 "incompatible spaces",
goto error);
10520 for (i =
map->n - 1; i >= 0; --i)
10567 if (nparam < 0 || dim1 < 0 || !bset2)
10693 for (i = 0; i <
set1->n; ++i)
10694 for (j = 0; j <
set2->n; ++j) {
10697 if (
f == 1 ||
f == -2)
10716 for (i = 0, d =
total-1; i < bmap->n_eq && d+1 >
pos; ++i) {
10717 for (; d+1 >
pos; --d)
10812 if (isl_map_check_range(
map,
type,
pos, 1) < 0)
10871 mv = isl_multi_val_alloc(space);
10872 n = isl_multi_val_size(mv);
10874 return isl_multi_val_free(mv);
10876 for (i = 0; i <
n; ++i) {
10880 mv = isl_multi_val_set_val(mv, i, v);
10923 unsigned size = *(
unsigned *)
arg;
10967 if (bmap->n_ineq == 0)
11003 if (!bmap1 || !bmap2)
11006 if (bmap1 == bmap2)
11023 if (bmap1->n_eq != bmap2->n_eq)
11024 return bmap1->n_eq - bmap2->n_eq;
11025 if (bmap1->n_ineq != bmap2->n_ineq)
11026 return bmap1->n_ineq - bmap2->n_ineq;
11027 if (bmap1->n_div != bmap2->n_div)
11028 return bmap1->n_div - bmap2->n_div;
11032 for (i = 0; i < bmap1->n_eq; ++i) {
11037 for (i = 0; i < bmap1->n_ineq; ++i) {
11042 for (i = 0; i < bmap1->n_div; ++i) {
11047 if (unknown1 < 0 || unknown2 < 0)
11049 if (unknown1 && unknown2)
11077 for (i = 0; i <
set1->n; ++i) {
11089 if (!bmap1 || !bmap2)
11123 for (i =
map->n - 1; i >= 1; --i) {
11127 for (j = i; j <
map->n; ++j)
11128 map->p[j - 1] =
map->p[j];
11156 for (i = 0; i <
map->n; ++i) {
11182 for (i = 0; i <
map->n; ++i) {
11226 for (i = 0;
equal && i <
map1->n; ++i) {
11253 isl_basic_map_list *list;
11258 list = isl_basic_map_list_alloc(
ctx,
map->n);
11260 for (i = 0; i <
map->n; ++i) {
11264 list = isl_basic_map_list_add(list, bmap);
11280 n = isl_basic_map_list_n_basic_map(list);
11285 "expecting non-empty list",
goto error);
11287 bmap = isl_basic_map_list_get_basic_map(list, 0);
11288 for (i = 1; i <
n; ++i) {
11291 bmap_i = isl_basic_map_list_get_basic_map(list, i);
11295 isl_basic_map_list_free(list);
11298 isl_basic_map_list_free(list);
11323 n = isl_basic_set_list_n_basic_set(list);
11328 "expecting non-empty list",
goto error);
11330 bset = isl_basic_set_list_get_basic_set(list, 0);
11335 for (i = 0; i <
n; ++i) {
11336 bset = isl_basic_set_list_get_basic_set(list, i);
11340 isl_basic_set_list_free(list);
11343 isl_basic_set_list_free(list);
11356 n = isl_set_list_n_set(list);
11361 "expecting non-empty list",
goto error);
11363 set = isl_set_list_get_set(list, 0);
11364 for (i = 1; i <
n; ++i) {
11367 set_i = isl_set_list_get_set(list, i);
11371 isl_set_list_free(list);
11374 isl_set_list_free(list);
11383 unsigned in1, in2, out1, out2, nparam,
total,
pos;
11397 total = nparam + in1 + in2 + out1 + out2 + bmap1->n_div + bmap2->n_div;
11410 bmap1->n_div + bmap2->n_div,
11411 bmap1->n_eq + bmap2->n_eq,
11412 bmap1->n_ineq + bmap2->n_ineq);
11453 if (in1 < 0 || in2 < 0 || out < 0 || nparam < 0)
11460 total = nparam + in1 + in2 + out + bmap1->n_div + bmap2->n_div;
11473 bmap1->n_div + bmap2->n_div,
11474 bmap1->n_eq + bmap2->n_eq,
11475 bmap1->n_ineq + bmap2->n_ineq);
11497 if (rational >= 0 && rational)
11503 if (in < 0 || out1 < 0 || out2 < 0 || nparam < 0 || rational < 0)
11512 total = nparam + in + out1 + out2 + bmap1->n_div + bmap2->n_div;
11525 bmap1->n_div + bmap2->n_div,
11526 bmap1->n_eq + bmap2->n_eq,
11527 bmap1->n_ineq + bmap2->n_ineq);
11565 int remove_duplicates)
11567 unsigned flags = 0;
11577 "parameters don't match",
goto error);
11588 for (i = 0; i <
map1->n; ++i)
11589 for (j = 0; j <
map2->n; ++j) {
11600 if (remove_duplicates)
11672 isl_size total1, keep1, total2, keep2;
11676 if (total1 < 0 || total2 < 0)
11687 if (keep1 < 0 || keep2 < 0)
11701 isl_size total1, keep1, total2, keep2;
11705 if (total1 < 0 || total2 < 0)
11716 if (keep1 < 0 || keep2 < 0)
11863 for (i = 0; i < bmap->n_eq; ++i) {
11869 for (i = 0; i < bmap->n_ineq; ++i) {
11875 for (i = 0; i < bmap->n_div; ++i) {
11905 for (i = 0; i <
map->n; ++i) {
11906 uint32_t bmap_hash;
11941 for (i = 0; i <
map->n; ++i)
11956 for (i = 0; i <
set->n; ++i)
11974 for (i = 0; i <
set->n; ++i) {
11997 for (i = 0; i <
set->n; ++i) {
12001 list = isl_basic_set_list_add(list, bset);
12024 bset->extra -= bset->n_div;
12058 for (i = 0; i <
set->n; ++i) {
12078 size += bset->n_eq * (1 +
dim);
12079 size += bset->n_ineq * (1 +
dim);
12080 size += bset->n_div * (2 +
dim);
12093 for (i = 0; i <
set->n; ++i)
12116 if (involves < 0 || involves)
12119 for (i = 0; i < bmap->n_eq; ++i)
12123 for (i = 0; i < bmap->n_ineq; ++i) {
12131 return lower && upper;
12160 for (i = 0; i <
map->n; ++i) {
12163 if (bounded < 0 || !bounded)
12191 for (i = 0; i <
map->n; ++i) {
12194 if (bounded < 0 || bounded)
12231 for (i = 0; i <
map->n; ++i) {
12234 if (bounded < 0 || !bounded)
12266 unsigned first,
unsigned n,
int *signs)
12275 if (
total < 0 || !signs)
12280 if (!
bound || !tab)
12287 for (i = 0; i <
n; ++i) {
12293 empty = tab->
empty;
12306 empty = tab->
empty;
12311 signs[i] = empty ? -1 : 0;
12326 if (!bset || !signs)
12331 first +=
pos(bset->dim,
type) - 1;
12347 unsigned o_out, o_div;
12365 for (i = 0; i < n_div; ++i) {
12371 if (may_involve < 0 || may_involve)
12372 return may_involve;
12391 for (k = first; k < first +
n; ++k) {
12397 if (may_involve < 0)
12428 unsigned o_div, o_out;
12434 if (
total < 0 || n_out < 0 || n_div < 0)
12440 for (i = 0; i < bmap->n_ineq; ++i) {
12444 n_out - (
pos + 1)))
12449 for (j = i + 1; j < bmap->n_ineq; ++j) {
12454 bmap->ineq[j] + 1,
total))
12458 if (j >= bmap->n_ineq)
12461 bmap->ineq[i][0], bmap->ineq[j][0]);
12464 bmap->ineq[i][0], bmap->ineq[j][0]);
12473 return bmap->n_ineq;
12500 int pos,
int *div,
int *ineq)
12504 unsigned o_div, o_out;
12508 if (n_out < 0 || n_div < 0)
12515 *ineq = bmap->n_ineq;
12518 for (j = 0; j < bmap->n_eq; ++j) {
12522 n_out - (
pos + 1)))
12532 k + 1, n_div - (k+1)) < n_div)
12535 bmap->eq[j][o_div + k]);
12538 if (l >= bmap->n_ineq)
12564 for (i = 0; i < n_out; ++i) {
12571 if (eq >= bmap->n_eq)
12719 return is_identity;
12756 if (nvar < 0 || ovar < 0)
12758 for (j = 0; j < nvar; ++j) {
12759 int lower = 0, upper = 0;
12760 for (i = 0; i < bset->n_eq; ++i) {
12763 if (!
unique(bset->eq[i] + 1 + ovar, j, nvar))
12767 if (i < bset->n_eq)
12769 for (i = 0; i < bset->n_ineq; ++i) {
12772 if (!
unique(bset->ineq[i] + 1 + ovar, j, nvar))
12779 if (!lower || !upper)
12819 const char *cannot_change,
12945 for (i = 0; i <
map->n; ++i) {
13014 if (!
map->dim->nested[0] && !
map->dim->nested[1])
13046 if (!
map->dim->nested[0])
13059 if (!
map->dim->nested[1])
13077 if (n_div < 0 || !space || !dim_map)
13080 flags = bmap->flags;
13087 res->flags = flags;
13108 if (!
map || !r || !dim_map)
13111 for (i = 0; i <
map->n; ++i) {
13149 if (!
map || !model)
13155 "model has unnamed parameters",
goto error);
13194 if (!bmap || !model)
13200 "model has unnamed parameters",
goto error);
13201 if (isl_basic_map_check_named_params(bmap) < 0)
13205 if (equal_params < 0)
13207 if (!equal_params) {
13268#define TYPE isl_map
13269#define isl_map_drop_dims isl_map_drop
13281#define TYPE isl_basic_map
13282#define isl_basic_map_drop_dims isl_basic_map_drop
13308 tuple_space = isl_multi_id_peek_space(
tuple);
13311 n = isl_multi_id_size(
tuple);
13314 for (i = 0; i <
n; ++i) {
13318 id = isl_multi_id_get_at(
tuple, i);
13347 isl_multi_id_free(
tuple);
13367 tuple_space = isl_multi_id_peek_space(
tuple);
13370 n = isl_multi_id_size(
tuple);
13373 for (i = 0; i <
n; ++i) {
13377 id = isl_multi_id_get_at(
tuple, i);
13407 isl_multi_id_free(
tuple);
13440 isl_multi_id_free(
tuple);
13457 else if (!is_params)
13472 else if (is_params)
13533 for (i = 0; i < bmap->n_eq; ++i)
13534 for (j = 0,
pos = 0; j < 5; ++j) {
13539 for (k = 0; k < dim; ++k) {
13541 bmap->eq[i][off + k]);
13566 for (i = 0; i < bmap->n_ineq; ++i)
13567 for (j = 0,
pos = 0; j < 5; ++j) {
13572 for (k = 0; k < dim; ++k) {
13574 bmap->ineq[i][off + k]);
13597 if (dim < 0 || !eq || !ineq)
13600 if (eq->n_col != ineq->n_col)
13602 "equalities and inequalities matrices should have "
13603 "same number of columns",
goto error);
13607 if (eq->n_col <
total)
13609 "number of columns too small",
goto error);
13611 extra = eq->n_col -
total;
13614 eq->n_row, ineq->n_row);
13617 for (i = 0; i < extra; ++i) {
13623 for (i = 0; i < eq->n_row; ++i) {
13627 for (j = 0,
pos = 0; j < 5; ++j) {
13632 for (k = 0; k < dim; ++k) {
13639 for (i = 0; i < ineq->n_row; ++i) {
13643 for (j = 0,
pos = 0; j < 5; ++j) {
13648 for (k = 0; k < dim; ++k) {
13650 ineq->row[i][
pos]);
13728 "basic map cannot be zipped",
goto error);
13732 if (n_in < 0 || n1 < 0 || n2 < 0)
13800 "basic map cannot be curried",
goto error);
13841 "map range cannot be curried",
13878 "basic map cannot be uncurried",
13920 if (type1 == type2 && pos1 == pos2)
13978 if (isl_map_check_range(
map, type1, pos1, 1) < 0)
13980 if (isl_map_check_range(
map, type2, pos2, 1) < 0)
14023 if (type1 == type2 && pos1 == pos2)
14041 if (type1 == type2 && pos1 == pos2)
14059 if (type1 == type2 && pos1 == pos2)
14091 if (type1 == type2 && pos1 == pos2)
14097 if (
total < 0 || i < 0)
14164 "some divs are unknown",
return NULL);
14204 ma_space = isl_multi_aff_get_space(
ma);
14211 "parameters don't match",
goto error);
14217 "spaces don't match",
goto error);
14245 if (n_param < 0 || n_set < 0)
14248 for (i = 0; i < n_div; ++i) {
14249 int o_bmap = 0, o_ls = 0;
14252 o_bmap += 1 + 1 + n_param;
14253 o_ls += 1 + 1 + n_param;
14255 o_bmap += n_before;
14257 ls->
div->
row[i] + o_ls, n_set);
14263 ls->
div->
row[i] + o_ls, n_div);
14266 isl_seq_clr(bmap->div[i] + o_bmap, bmap->n_div - n_div);
14288 for (i = 0; i <
ma->n; ++i)
14315 int n_before,
int n_after,
int n_div_ma)
14326 if (
total < 0 || n_param < 0 || n_in < 0)
14328 for (i = 0; i <
ma->n; ++i) {
14329 int o_bmap = 0, o_ma = 1;
14335 if (div < 0 || k < 0)
14339 ma->u.p[i]->v->el + o_ma, 1 + n_param);
14340 o_bmap += 1 + n_param;
14341 o_ma += 1 + n_param;
14343 o_bmap += n_before;
14345 ma->u.p[i]->v->el + o_ma, n_in);
14351 ma->u.p[i]->v->el + o_ma, n_div_ma);
14352 o_bmap += n_div_ma;
14434 isl_size n_before, n_after, n_div_bmap, n_div_ma;
14459 if (n_before < 0 || n_after < 0 || n_div_bmap < 0 || n_div_ma < 0)
14462 space = isl_multi_aff_get_domain_space(
ma);
14467 bmap->n_eq + strides, bmap->n_ineq + 2 * n_div_ma);
14471 for (i = 0; i < n_div_ma + n_div_bmap; ++i)
14479 for (i = 0; i < bmap->n_eq; ++i) {
14484 n_after, n_div_ma, n_div_bmap,
14485 f,
c1,
c2, g, 0) < 0)
14489 for (i = 0; i < bmap->n_ineq; ++i) {
14494 n_after, n_div_ma, n_div_bmap,
14495 f,
c1,
c2, g, 0) < 0)
14499 for (i = 0; i < bmap->n_div; ++i) {
14505 n_before, n_after, n_div_ma, n_div_bmap,
14506 f,
c1,
c2, g, 1) < 0)
14518 isl_multi_aff_free(
ma);
14527 isl_multi_aff_free(
ma);
14577 ma_space = isl_multi_aff_get_space(
ma);
14610 for (i = 0; i <
map->n; ++i) {
14612 isl_multi_aff_copy(
ma));
14617 space = isl_multi_aff_get_domain_space(
ma);
14625 isl_multi_aff_free(
ma);
14631 isl_multi_aff_free(
ma);
14661 "unaligned unnamed parameters",
goto error);
14667 isl_multi_aff_free(
ma);
14734 isl_multi_aff_copy(
pma->p[0].maff));
14742 for (i = 1; i <
pma->n; ++i) {
14746 isl_multi_aff_copy(
pma->p[i].maff));
14859 if (full >= 0 && !full)
14867 space = isl_multi_pw_aff_get_space(mpa);
14868 isl_multi_pw_aff_free(mpa);
14869 ma = isl_multi_aff_zero(space);
14877 isl_multi_pw_aff_free(mpa);
14923 if (v_out < 0 ||
total < 0)
14965 for (i = 0; v_div + i <
total; ++i) {
14971 if (known < 0 || !known)
14974 if (involves < 0 || involves)
15020 if (
total < 0 || v_out < 0 || v_div < 0 || n_ineq < 0)
15024 for (i = 0; i < n_ineq; ++i) {
15035 bmap->ineq[i][1 + v_out +
pos], &sum);
15082 if (n_ineq < 0 || v_out < 0 || n_out < 0 || v_div < 0 || n_div < 0)
15086 for (i = n_ineq - 1; i >= 0; --i) {
15095 n_out - (
pos + 1)))
15286 if (n_eq < 0 || n_ineq < 0 ||
15287 v_out < 0 || n_out < 0 || v_div < 0 || n_div < 0)
15289 if (n_eq == 0 || n_ineq < 2 || n_out == 1)
15293 for (i = 0; i < n_eq; ++i) {
15297 for (j = 0; j < n_out; ++j) {
15309 if (lower >= n_ineq)
15445 int ineq,
int n_ineq,
int v_div,
int e)
15455 bmap->ineq[ineq][1 + v_out +
pos]);
15464 if (lower < n_ineq) {
15571 if (n_ineq < 0 || v_out < 0 || n_out < 0 || v_div < 0 || n_div < 0)
15573 if (n_div < 1 || n_ineq < 4)
15576 for (i = 0; i < n_ineq; ++i) {
15595 bmap->ineq[i][1 + v_out +
pos]))
15600 if (!
isl_seq_eq(bmap->ineq[i] + 1, bmap->div[e] + 2, v_div + e))
15622 isl_maybe_isl_aff mod;
15625 if (mod.valid < 0 || mod.valid)
15647 if (n_div < 0 || v_div < 0 || !v)
15649 for (i = n_div - 1; i >= 0; --i) {
15764 isl_maybe_isl_aff div;
15767 if (div.valid < 0 || div.valid)
15790 if (
res.valid < 0 ||
res.valid)
15824 unsigned first,
unsigned n)
15831 bmap2->div[pos2] + first,
n);
15847 if (
total < 0 || total2 < 0)
15849 if (
total != total2)
15893 if (!inner || !bset)
15934 for (j = 0; j < bset->n_ineq; ++j) {
15961 if (!bmap || !trans)
15964 if (trans->n_row != trans->n_col)
15966 "expecting square transformation matrix",
goto error);
__isl_give isl_pw_aff * isl_pw_aff_var_on_domain(__isl_take isl_local_space *ls, enum isl_dim_type type, unsigned pos)
__isl_export __isl_give isl_space * isl_pw_multi_aff_get_space(__isl_keep isl_pw_multi_aff *pma)
__isl_give isl_aff * isl_aff_project_domain_on_params(__isl_take isl_aff *aff)
__isl_give isl_map * isl_pw_aff_le_map(__isl_take isl_pw_aff *pa1, __isl_take isl_pw_aff *pa2)
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_align_params(__isl_take isl_pw_multi_aff *pma, __isl_take isl_space *model)
__isl_give isl_local_space * isl_aff_get_domain_local_space(__isl_keep isl_aff *aff)
__isl_give isl_map * isl_pw_aff_ge_map(__isl_take isl_pw_aff *pa1, __isl_take isl_pw_aff *pa2)
__isl_export __isl_give isl_aff * isl_aff_neg(__isl_take isl_aff *aff)
__isl_overload __isl_give isl_aff * isl_aff_add_constant_val(__isl_take isl_aff *aff, __isl_take isl_val *v)
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_union_lexmax(__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2)
__isl_give isl_basic_set * isl_aff_eq_basic_set(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
__isl_give isl_pw_aff * isl_pw_aff_empty(__isl_take isl_space *space)
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_union_lexmin(__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2)
__isl_give isl_aff * isl_aff_copy(__isl_keep isl_aff *aff)
__isl_export __isl_give isl_aff * isl_aff_floor(__isl_take isl_aff *aff)
__isl_give isl_space * isl_pw_multi_aff_get_domain_space(__isl_keep isl_pw_multi_aff *pma)
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa)
isl_size isl_aff_dim(__isl_keep isl_aff *aff, enum isl_dim_type type)
__isl_export __isl_give isl_aff * isl_aff_sub(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
__isl_overload __isl_give isl_aff * isl_aff_mod_val(__isl_take isl_aff *aff, __isl_take isl_val *mod)
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_from_map(__isl_take isl_map *map)
__isl_export __isl_give isl_aff * isl_aff_add(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
__isl_null isl_pw_multi_aff * isl_pw_multi_aff_free(__isl_take isl_pw_multi_aff *pma)
__isl_give isl_pw_aff * isl_pw_multi_aff_get_pw_aff(__isl_keep isl_pw_multi_aff *pma, int pos)
struct isl_multi_aff isl_multi_aff
struct isl_multi_pw_aff isl_multi_pw_aff
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)
isl_size isl_constraint_dim(__isl_keep isl_constraint *constraint, enum isl_dim_type type)
__isl_give isl_map * isl_map_add_constraint(__isl_take isl_map *map, __isl_take isl_constraint *constraint)
isl_size isl_basic_map_n_constraint(__isl_keep isl_basic_map *bmap)
__isl_null isl_constraint * isl_constraint_free(__isl_take isl_constraint *c)
__isl_give isl_basic_map * isl_basic_map_add_constraint(__isl_take isl_basic_map *bmap, __isl_take isl_constraint *constraint)
isl_bool isl_constraint_involves_dims(__isl_keep isl_constraint *constraint, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_constraint * isl_constraint_alloc_inequality(__isl_take isl_local_space *ls)
isl_stat isl_basic_map_foreach_constraint(__isl_keep isl_basic_map *bmap, isl_stat(*fn)(__isl_take isl_constraint *c, void *user), void *user)
__isl_give isl_constraint * isl_constraint_set_coefficient_si(__isl_take isl_constraint *constraint, enum isl_dim_type type, int pos, int v)
#define isl_calloc_type(ctx, type)
#define ISL_FL_ISSET(l, f)
#define isl_die(ctx, errno, msg, code)
void isl_ctx_deref(struct isl_ctx *ctx)
#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_realloc_array(ctx, ptr, type, n)
void isl_ctx_ref(struct isl_ctx *ctx)
isl_bool isl_bool_not(isl_bool b)
#define isl_hash_hash(h, h2)
#define isl_hash_byte(h, b)
__isl_export __isl_give ISL_HMAP __isl_take ISL_KEY __isl_take ISL_VAL * val
isl_stat isl_stat(* fn)(__isl_take ISL_KEY *key, __isl_take ISL_VAL *val, void *user)
isl_stat isl_stat void * user
isl_bool isl_bool(* test)(__isl_keep ISL_KEY *key, __isl_keep ISL_VAL *val, void *user)
__isl_null isl_id * isl_id_free(__isl_take isl_id *id)
struct isl_multi_id isl_multi_id
int GMPQAPI cmp(mp_rat op1, mp_rat op2)
int GMPQAPI sgn(mp_rat op)
void GMPZAPI neg(mp_int rop, mp_int op)
void GMPZAPI gcd(mp_int rop, mp_int op1, mp_int op2)
__isl_give isl_pw_aff * isl_pw_aff_union_opt(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2, int max)
isl_stat isl_seq_preimage(isl_int *dst, isl_int *src, __isl_keep isl_multi_aff *ma, int n_before, int n_after, int n_div_ma, int n_div_bmap, isl_int f, isl_int c1, isl_int c2, isl_int g, int has_denom)
isl_bool isl_multi_pw_aff_has_non_trivial_domain(__isl_keep isl_multi_pw_aff *mpa)
__isl_give isl_multi_aff * isl_multi_aff_align_divs(__isl_take isl_multi_aff *maff)
__isl_give isl_aff * isl_aff_alloc_vec(__isl_take isl_local_space *ls, __isl_take isl_vec *v)
static __isl_give isl_set * less(__isl_keep isl_pw_aff_list *list, int pos1, int pos2)
__isl_give isl_map * isl_map_from_pw_multi_aff_internal(__isl_take isl_pw_multi_aff *pma)
isl_stat isl_pw_multi_aff_check_named_params(__isl_keep isl_pw_multi_aff *pma)
__isl_give isl_aff * isl_aff_domain_factor_domain(__isl_take isl_aff *aff)
__isl_give isl_basic_map * isl_basic_map_implicit_equalities(__isl_take isl_basic_map *bmap)
static __isl_give isl_ast_expr * var(struct isl_ast_add_term_data *data, enum isl_dim_type type, int pos)
struct isl_blk isl_blk_extend(struct isl_ctx *ctx, struct isl_blk block, size_t new_n)
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)
struct isl_blk isl_blk_empty()
static void drop(struct isl_coalesce_info *info)
void isl_dim_map_dim_range(__isl_keep isl_dim_map *dim_map, __isl_keep isl_space *space, enum isl_dim_type type, unsigned first, unsigned n, unsigned dst_pos)
__isl_give isl_basic_map * isl_basic_map_add_constraints_dim_map(__isl_take isl_basic_map *dst, __isl_take isl_basic_map *src, __isl_take isl_dim_map *dim_map)
__isl_null isl_dim_map * isl_dim_map_free(__isl_take isl_dim_map *dim_map)
__isl_give isl_dim_map * isl_dim_map_extend(__isl_keep isl_dim_map *dim_map, __isl_keep isl_basic_map *bmap)
__isl_give isl_dim_map * isl_dim_map_from_reordering(__isl_keep isl_reordering *exp)
void isl_dim_map_dim(__isl_keep isl_dim_map *dim_map, __isl_keep isl_space *space, enum isl_dim_type type, unsigned dst_pos)
__isl_give isl_dim_map * isl_dim_map_alloc(isl_ctx *ctx, unsigned len)
void isl_dim_map_div(__isl_keep isl_dim_map *dim_map, __isl_keep isl_basic_map *bmap, unsigned dst_pos)
__isl_give isl_mat * isl_mat_variable_compression(__isl_take isl_mat *B, __isl_give isl_mat **T2)
static isl_bool no(const void *entry, const void *val)
#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_gcd(r, i, j)
#define isl_int_neg(r, i)
#define isl_int_abs_eq(i, j)
#define isl_int_add(r, i, j)
#define isl_int_cmp(i, j)
#define isl_int_is_divisible_by(i, j)
#define isl_int_abs_lt(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_abs_cmp(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_swap(i, j)
#define isl_int_sub(r, i, j)
#define isl_int_abs(r, i)
__isl_give dup(__isl_keep LIST(EL) *list)
__isl_give isl_local_space * isl_local_space_alloc_div(__isl_take isl_space *space, __isl_take isl_mat *div)
isl_bool isl_local_space_involves_dims(__isl_keep isl_local_space *ls, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_map * isl_basic_map_sort_divs(__isl_take isl_basic_map *bmap)
isl_size isl_local_space_var_offset(__isl_keep isl_local_space *ls, enum isl_dim_type type)
enum isl_lp_result isl_basic_map_solve_lp(__isl_keep isl_basic_map *bmap, 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_map_domain(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_drop_constraints_not_involving_dims(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_set * isl_basic_set_alloc_space(__isl_take isl_space *space, unsigned extra, unsigned n_eq, unsigned n_ineq)
isl_bool isl_basic_set_contains(__isl_keep isl_basic_set *bset, __isl_keep isl_vec *vec)
__isl_give isl_map * isl_map_preimage_range_pw_multi_aff(__isl_take isl_map *map, __isl_take isl_pw_multi_aff *pma)
static __isl_give isl_map * map_union_disjoint(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_basic_map * isl_basic_map_flat_product(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
__isl_give isl_map * isl_map_flat_domain_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
static isl_stat isl_set_check_is_set(__isl_keep isl_set *set)
isl_bool isl_set_has_equal_space(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_basic_set * isl_basic_set_drop(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_map * isl_basic_map_nat_universe(__isl_take isl_space *space)
isl_bool isl_basic_set_plain_dim_is_fixed(__isl_keep isl_basic_set *bset, unsigned dim, isl_int *val)
__isl_give isl_basic_map * isl_basic_map_apply_range(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
isl_size isl_basic_map_var_offset(__isl_keep isl_basic_map *bmap, enum isl_dim_type type)
isl_size isl_basic_map_total_dim(__isl_keep const isl_basic_map *bmap)
static __isl_give isl_basic_map * add_upper_div_constraint(__isl_take isl_basic_map *bmap, unsigned div)
__isl_give isl_map * isl_map_drop(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__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)
static __isl_give isl_basic_map * add_lower_div_constraint(__isl_take isl_basic_map *bmap, unsigned div)
static __isl_give isl_map * compute_divs(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_free_inequality(__isl_take isl_basic_map *bmap, unsigned n)
__isl_give isl_basic_map * isl_basic_map_add_ineq(__isl_take isl_basic_map *bmap, isl_int *ineq)
isl_size isl_basic_set_n_equality(__isl_keep isl_basic_set *bset)
__isl_give isl_space * isl_set_get_space(__isl_keep isl_set *set)
__isl_give isl_basic_set * isl_basic_set_from_params(__isl_take isl_basic_set *bset)
static __isl_give isl_basic_map * var_more_or_equal(__isl_take isl_basic_map *bmap, unsigned pos)
static isl_bool detect_mod(__isl_keep isl_basic_map *bmap, struct isl_detect_mod_data *data)
__isl_give isl_map * isl_map_nat_universe(__isl_take isl_space *space)
__isl_give isl_basic_map * isl_basic_map_drop_core(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_set * isl_set_lower_bound(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, isl_int value)
static isl_stat check_map_space_equal_total_dim(__isl_keep isl_map *map, __isl_keep isl_space *space)
__isl_give isl_basic_map * isl_basic_map_order_divs(__isl_take isl_basic_map *bmap)
__isl_give isl_set * isl_set_upper_bound(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, isl_int value)
isl_bool isl_set_dim_is_bounded(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
__isl_give isl_basic_map * isl_basic_map_deltas_map(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_drop_constraints_involving(__isl_take isl_basic_set *bset, unsigned first, unsigned n)
__isl_give isl_basic_set * isl_basic_set_drop_constraints_not_involving_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_set * isl_set_union(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_basic_map * isl_basic_map_list_intersect(__isl_take isl_basic_map_list *list)
static __isl_give isl_map * map_lex_lte_first(__isl_take isl_space *space, unsigned n, int equal)
__isl_give isl_map * isl_map_order_ge(__isl_take isl_map *map, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
static __isl_give isl_map * replace_space_by_local_space(__isl_take isl_map *map, __isl_take isl_local_space *ls)
isl_bool isl_basic_map_any_div_involves_vars(__isl_keep isl_basic_map *bmap, unsigned first, unsigned n)
isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
__isl_give isl_set * isl_set_from_basic_set(__isl_take isl_basic_set *bset)
__isl_give isl_map * isl_map_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
isl_bool isl_map_is_identity(__isl_keep isl_map *map)
static __isl_give isl_basic_set * wrap_for_plug_in(__isl_take isl_basic_map *bmap, int is_set)
static __isl_give isl_map * drop_constraints(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n, __isl_give isl_basic_map *(*drop)(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n))
static isl_bool basic_set_no_locals(__isl_keep isl_basic_set *bset, void *user)
isl_bool isl_basic_set_plain_is_universe(__isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_sum(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_set * isl_set_preimage_pw_multi_aff(__isl_take isl_set *set, __isl_take isl_pw_multi_aff *pma)
__isl_give isl_set * isl_set_alloc_space(__isl_take isl_space *space, int n, unsigned flags)
__isl_give isl_basic_map * isl_basic_map_equate(__isl_take isl_basic_map *bmap, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
isl_bool isl_basic_map_div_expr_involves_vars(__isl_keep isl_basic_map *bmap, int div, unsigned first, unsigned n)
__isl_give isl_basic_map * isl_basic_map_drop_constraints_involving(__isl_take isl_basic_map *bmap, unsigned first, unsigned n)
isl_bool isl_basic_map_may_be_set(__isl_keep isl_basic_map *bmap)
isl_size isl_set_n_basic_set(__isl_keep isl_set *set)
int isl_basic_set_alloc_div(__isl_keep isl_basic_set *bset)
__isl_give isl_mat * isl_basic_set_equalities_matrix(__isl_keep isl_basic_set *bset, enum isl_dim_type c1, enum isl_dim_type c2, enum isl_dim_type c3, enum isl_dim_type c4)
__isl_give isl_basic_set * isl_basic_set_set_to_empty(__isl_take isl_basic_set *bset)
isl_bool isl_set_is_strict_subset(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_map * isl_set_lex_lt_set(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_basic_map * isl_basic_map_more_or_equal_at(__isl_take isl_space *space, unsigned pos)
static __isl_keep const isl_basic_map * const_bset_to_bmap(__isl_keep const isl_basic_set *bset)
__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_bool isl_map_plain_is_single_valued(__isl_keep isl_map *map)
__isl_give isl_map * isl_map_intersect_domain_factor_domain(__isl_take isl_map *map, __isl_take isl_map *factor)
static isl_bool isl_basic_map_set_tuple_is_equal(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, __isl_keep isl_basic_set *bset)
static isl_stat foreach_orthant(__isl_take isl_set *set, int *signs, int first, int len, isl_stat(*fn)(__isl_take isl_set *orthant, int *signs, void *user), void *user)
static __isl_give isl_set * parameter_compute_divs(__isl_take isl_basic_set *bset)
static __isl_give isl_map * clear_caches(__isl_take isl_map *map)
static __isl_give isl_set * set_append_equalities(__isl_take isl_set *set, __isl_take isl_mat *eq)
__isl_give isl_mat * isl_basic_map_equalities_matrix(__isl_keep isl_basic_map *bmap, enum isl_dim_type c1, enum isl_dim_type c2, enum isl_dim_type c3, enum isl_dim_type c4, enum isl_dim_type c5)
__isl_give isl_basic_set * isl_basic_set_dup(__isl_keep isl_basic_set *bset)
isl_bool isl_set_involves_locals(__isl_keep isl_set *set)
__isl_give isl_basic_map * isl_basic_map_remove_divs_involving_dims(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_map * isl_basic_map_zip(__isl_take isl_basic_map *bmap)
__isl_give isl_pw_aff * isl_map_dim_min(__isl_take isl_map *map, int pos)
static __isl_give isl_map * isl_map_intersect_multi_val_explicit_domain(__isl_take isl_map *map, __isl_keep isl_multi_val *mv)
__isl_give isl_basic_map * isl_basic_map_equal(__isl_take isl_space *space, unsigned n_equal)
static __isl_give isl_map * sort_and_remove_duplicates(__isl_take isl_map *map)
static __isl_give isl_basic_map * equator(__isl_take isl_space *space, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
isl_bool isl_map_dim_is_bounded(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos)
__isl_give isl_map * isl_map_lower_bound_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *lower)
isl_bool isl_map_has_dim_id(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos)
const char * isl_map_get_dim_name(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos)
__isl_give isl_basic_map * isl_basic_map_alloc(isl_ctx *ctx, unsigned nparam, unsigned in, unsigned out, unsigned extra, unsigned n_eq, unsigned n_ineq)
static __isl_give isl_space * isl_basic_map_take_space(__isl_keep isl_basic_map *bmap)
__isl_give isl_set * isl_map_range(__isl_take isl_map *map)
isl_bool isl_basic_map_is_empty(__isl_keep isl_basic_map *bmap)
static __isl_give isl_basic_set * isl_basic_set_bound_val(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, __isl_take isl_val *value, int upper)
isl_bool isl_basic_set_involves_dims(__isl_keep isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_map * isl_set_lex_le_set(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_set * isl_set_set_dim_name(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, const char *s)
__isl_give isl_set * isl_set_remove_divs(__isl_take isl_set *set)
static __isl_give isl_map * map_lex_lte(__isl_take isl_space *space, int equal)
isl_bool isl_map_involves_dims(__isl_keep isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_set * isl_set_preimage_multi_pw_aff(__isl_take isl_set *set, __isl_take isl_multi_pw_aff *mpa)
static __isl_give isl_basic_set * basic_set_parameter_preimage(__isl_take isl_basic_set *bset, __isl_take isl_mat *mat)
__isl_give isl_set * isl_map_underlying_set(__isl_take isl_map *map)
static __isl_give isl_basic_map * var_less(__isl_take isl_basic_map *bmap, unsigned pos)
__isl_give isl_map * isl_set_insert_domain(__isl_take isl_set *set, __isl_take isl_space *domain)
static __isl_give isl_set * set_bound_multi_val(__isl_take isl_set *set, __isl_take isl_multi_val *bound, __isl_give isl_map *map_bound(__isl_take isl_map *map, unsigned pos, __isl_take isl_val *value))
__isl_give isl_basic_set * isl_basic_set_set_tuple_name(__isl_take isl_basic_set *bset, const char *s)
__isl_give isl_map * isl_map_upper_bound_val(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, __isl_take isl_val *value)
__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_list_union(__isl_take isl_set_list *list)
__isl_give isl_map * isl_map_intersect_domain_factor_range(__isl_take isl_map *map, __isl_take isl_map *factor)
isl_bool isl_set_has_dim_name(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
isl_bool isl_basic_map_plain_is_equal(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
const char * isl_map_get_tuple_name(__isl_keep isl_map *map, enum isl_dim_type type)
__isl_give isl_set * isl_set_lift(__isl_take isl_set *set)
__isl_give isl_map * isl_map_apply_range(__isl_take isl_map *map1, __isl_take isl_map *map2)
isl_bool isl_basic_map_is_equal(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
__isl_give isl_map * isl_map_uncurry(__isl_take isl_map *map)
__isl_give isl_map * isl_basic_map_lexmax(__isl_take isl_basic_map *bmap)
__isl_give isl_map * isl_map_eliminate(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_set * isl_set_set_tuple_name(__isl_take isl_set *set, const char *s)
isl_bool isl_set_dim_has_upper_bound(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
isl_ctx * isl_set_get_ctx(__isl_keep isl_set *set)
isl_bool isl_basic_map_applies_range(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
__isl_give isl_basic_set * isl_basic_set_drop_dims(__isl_take isl_basic_set *bset, unsigned first, unsigned n)
__isl_give isl_map * isl_map_domain_factor_range(__isl_take isl_map *map)
__isl_give isl_map * isl_map_preimage_range_multi_aff(__isl_take isl_map *map, __isl_take isl_multi_aff *ma)
__isl_give isl_set * isl_set_add_basic_set(__isl_take isl_set *set, __isl_take isl_basic_set *bset)
void isl_basic_map_inequality_to_equality(__isl_keep isl_basic_map *bmap, unsigned pos)
isl_size isl_map_n_basic_map(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_normalize(__isl_take isl_basic_map *bmap)
__isl_give isl_map * isl_map_floordiv(__isl_take isl_map *map, isl_int d)
__isl_give isl_set * isl_set_lower_bound_si(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, int value)
__isl_give isl_map * isl_map_union_disjoint(__isl_take isl_map *map1, __isl_take isl_map *map2)
__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_give isl_basic_set * isl_basic_set_intersect(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
__isl_give isl_map * isl_map_align_divs_internal(__isl_take isl_map *map)
isl_bool isl_set_plain_is_empty(__isl_keep isl_set *set)
__isl_give isl_set * isl_set_reset_space(__isl_take isl_set *set, __isl_take isl_space *space)
static __isl_give isl_aff * extract_aff(__isl_keep isl_basic_set *bset, isl_int *aff, int pos)
__isl_give isl_vec * isl_basic_map_inequality_extract_output_upper_bound(__isl_keep isl_basic_map *bmap, int ineq, int pos)
isl_size isl_basic_map_n_equality(__isl_keep isl_basic_map *bmap)
__isl_give isl_set * isl_set_lower_bound_val(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, __isl_take isl_val *value)
static isl_stat involves_divs(__isl_take isl_constraint *c, void *user)
isl_size isl_basic_set_n_dim(__isl_keep isl_basic_set *bset)
isl_size isl_basic_map_n_inequality(__isl_keep isl_basic_map *bmap)
static __isl_give isl_basic_map * isl_basic_map_fix_pos(__isl_take isl_basic_map *bmap, unsigned pos, isl_int value)
__isl_give isl_basic_set * isl_basic_set_insert_div(__isl_take isl_basic_set *bset, int pos, __isl_keep isl_vec *div)
isl_bool isl_basic_set_is_empty(__isl_keep isl_basic_set *bset)
__isl_give isl_set * isl_basic_set_compute_divs(__isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_from_constraint_matrices(__isl_take isl_space *space, __isl_take isl_mat *eq, __isl_take isl_mat *ineq, enum isl_dim_type c1, enum isl_dim_type c2, enum isl_dim_type c3, enum isl_dim_type c4, enum isl_dim_type c5)
static isl_bool isl_basic_set_involves_locals(__isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_empty(__isl_take isl_space *space)
int isl_basic_map_drop_equality(__isl_keep isl_basic_map *bmap, unsigned pos)
__isl_give isl_mat * isl_basic_set_inequalities_matrix(__isl_keep isl_basic_set *bset, enum isl_dim_type c1, enum isl_dim_type c2, enum isl_dim_type c3, enum isl_dim_type c4)
__isl_give isl_basic_map * isl_inequality_negate(__isl_take isl_basic_map *bmap, unsigned pos)
static __isl_give isl_map * map_bound_pw_aff(__isl_take isl_map *map, unsigned pos, __isl_take isl_pw_aff *bound, __isl_give isl_map *(*order)(__isl_take isl_pw_aff *pa1, __isl_take isl_pw_aff *pa2))
__isl_give isl_set * isl_set_set_dim_id(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id)
isl_bool isl_basic_map_div_is_known(__isl_keep isl_basic_map *bmap, int div)
void isl_map_print_internal(__isl_keep isl_map *map, FILE *out, int indent)
__isl_give isl_basic_set * isl_basic_set_expand_divs(__isl_take isl_basic_set *bset, __isl_take isl_mat *div, int *exp)
static __isl_give isl_vec * extract_bound_from_constraint(isl_ctx *ctx, isl_int *c, int len, int pos)
isl_bool isl_set_is_singleton(__isl_keep isl_set *set)
__isl_give isl_space * isl_map_get_space(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_add_div_constraints(__isl_take isl_basic_map *bmap, unsigned pos)
__isl_give isl_map * isl_map_lex_gt_map(__isl_take isl_map *map1, __isl_take isl_map *map2)
isl_bool isl_basic_map_dim_is_bounded(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos)
__isl_give isl_set * isl_map_domain(__isl_take isl_map *map)
__isl_give isl_val * isl_set_plain_get_val_if_fixed(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
__isl_give isl_set * isl_set_sum(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_map * isl_map_reverse(__isl_take isl_map *map)
isl_size isl_basic_set_n_param(__isl_keep isl_basic_set *bset)
int isl_basic_set_plain_cmp(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
static __isl_give isl_aff * construct_mod(__isl_keep isl_basic_map *bmap, int pos, int eq, int lower, isl_int n)
isl_bool isl_basic_map_can_curry(__isl_keep isl_basic_map *bmap)
isl_bool isl_set_dim_has_any_lower_bound(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
__isl_give isl_multi_val * isl_set_get_plain_multi_val_if_fixed(__isl_keep isl_set *set)
static __isl_give isl_map * unbind_params_insert_domain(__isl_take isl_set *set, __isl_take isl_multi_id *tuple)
__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_give isl_set * isl_set_normalize(__isl_take isl_set *set)
__isl_give isl_set * isl_set_fix(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, isl_int value)
__isl_give isl_map * isl_map_reset(__isl_take isl_map *map, enum isl_dim_type type)
__isl_give isl_set * isl_map_bind_domain(__isl_take isl_map *map, __isl_take isl_multi_id *tuple)
unsigned isl_basic_map_offset(__isl_keep isl_basic_map *bmap, enum isl_dim_type type)
__isl_give isl_basic_map * isl_basic_map_floordiv(__isl_take isl_basic_map *bmap, isl_int d)
static __isl_give isl_map * isl_map_partial_lexopt_aligned(__isl_take isl_map *map, __isl_take isl_set *dom, __isl_give isl_set **empty, unsigned flags)
isl_bool isl_map_is_empty(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_dup(__isl_keep isl_basic_map *bmap)
static void swap_div(__isl_keep isl_basic_map *bmap, int a, int b)
isl_bool isl_map_is_equal(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__isl_give isl_map * isl_map_flat_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_map * isl_map_project_onto(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, 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_map * isl_map_fix(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, isl_int value)
int isl_basic_set_is_rational(__isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_remove_inputs(__isl_take isl_map *map, unsigned first, unsigned n)
__isl_give isl_basic_map * isl_basic_map_from_range(__isl_take isl_basic_set *bset)
__isl_give isl_set * isl_set_fix_val(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, __isl_take isl_val *v)
isl_bool isl_set_dim_has_lower_bound(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
isl_bool isl_set_has_rational(__isl_keep isl_set *set)
static isl_bool map_is_equal(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__isl_give isl_set * isl_set_cow(__isl_take isl_set *set)
__isl_give isl_basic_map * isl_basic_map_realign(__isl_take isl_basic_map *bmap, __isl_take isl_space *space, __isl_take struct isl_dim_map *dim_map)
isl_bool isl_basic_set_space_has_equal_params(__isl_keep isl_basic_set *bset, __isl_keep isl_space *space)
__isl_give isl_set * isl_map_wrap(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_neg(__isl_take isl_basic_map *bmap)
static isl_stat isl_basic_map_check_compatible_range(__isl_keep isl_basic_map *bmap, __isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_lex_ge_first(__isl_take isl_space *space, unsigned n)
__isl_give isl_space * isl_basic_set_get_space(__isl_keep isl_basic_set *bset)
static __isl_give isl_basic_map * move_divs_last(__isl_take isl_basic_map *bmap, unsigned first, unsigned n)
isl_bool isl_set_every_basic_set(__isl_keep isl_set *set, isl_bool(*test)(__isl_keep isl_basic_set *bset, void *user), void *user)
__isl_give isl_map * isl_map_copy(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_add_known_div_constraints(__isl_take isl_basic_map *bmap)
static __isl_give isl_map * map_upper_bound_val(__isl_take isl_map *map, unsigned pos, __isl_take isl_val *v)
static __isl_give isl_map * isl_map_intersect_factor(__isl_take isl_map *map, __isl_take isl_map *factor, struct isl_intersect_factor_control *control)
__isl_give isl_basic_set * isl_basic_set_add_ineq(__isl_take isl_basic_set *bset, isl_int *ineq)
__isl_give isl_basic_map * isl_basic_map_from_local_space(__isl_take isl_local_space *ls)
__isl_give isl_map * isl_map_move_dims(__isl_take isl_map *map, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
__isl_give isl_set * isl_set_unbind_params(__isl_take isl_set *set, __isl_take isl_multi_id *tuple)
__isl_give isl_basic_map * isl_basic_map_add_eq(__isl_take isl_basic_map *bmap, isl_int *eq)
static __isl_give isl_basic_map * isl_basic_map_restore_space(__isl_take isl_basic_map *bmap, __isl_take isl_space *space)
__isl_give isl_set * isl_set_upper_bound_multi_pw_aff(__isl_take isl_set *set, __isl_take isl_multi_pw_aff *upper)
isl_bool isl_basic_map_dim_has_lower_bound(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos)
__isl_give isl_set * isl_set_reset_user(__isl_take isl_set *set)
const char * isl_set_get_tuple_name(__isl_keep isl_set *set)
static __isl_give isl_basic_map * add_constraints(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2, unsigned i_pos, unsigned o_pos)
static void constraint_drop_vars(isl_int *c, unsigned n, unsigned rem)
__isl_give isl_map * isl_map_flatten_domain(__isl_take isl_map *map)
__isl_give isl_map * isl_basic_map_union(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
static __isl_give isl_map * map_bound(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, isl_int value, int upper)
__isl_give isl_set * isl_set_empty(__isl_take isl_space *space)
__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_set * isl_basic_set_remove_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_set * isl_basic_set_fix_val(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, __isl_take isl_val *v)
static __isl_give isl_map * isl_map_intersect_domain_wrapped_domain(__isl_take isl_map *map, __isl_take isl_set *domain)
int isl_basic_set_first_unknown_div(__isl_keep isl_basic_set *bset)
static isl_bool is_internal(__isl_keep isl_vec *inner, __isl_keep isl_basic_set *bset, int ineq)
isl_stat isl_basic_set_check_range(__isl_keep isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_map * isl_map_lower_bound_si(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, int value)
__isl_give isl_aff * isl_basic_map_get_div(__isl_keep isl_basic_map *bmap, int pos)
static isl_bool is_convex_no_locals(__isl_keep isl_map *map)
__isl_give isl_map * isl_map_partial_lexmin(__isl_take isl_map *map, __isl_take isl_set *dom, __isl_give isl_set **empty)
__isl_give isl_map * isl_map_factor_range(__isl_take isl_map *map)
static __isl_give isl_map * map_lower_bound_val(__isl_take isl_map *map, unsigned pos, __isl_take isl_val *v)
__isl_give isl_map * isl_map_lex_gt(__isl_take isl_space *set_space)
__isl_give isl_map * isl_map_reset_space(__isl_take isl_map *map, __isl_take isl_space *space)
__isl_give isl_map * isl_map_flatten_range(__isl_take isl_map *map)
__isl_give isl_basic_set * isl_basic_set_preimage_multi_aff(__isl_take isl_basic_set *bset, __isl_take isl_multi_aff *ma)
__isl_give isl_set * isl_set_set_tuple_id(__isl_take isl_set *set, __isl_take isl_id *id)
static __isl_give isl_pw_aff * map_dim_opt(__isl_take isl_map *map, int pos, int max)
static __isl_give isl_basic_map * move_last(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
int isl_basic_set_alloc_equality(__isl_keep isl_basic_set *bset)
__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)
unsigned isl_basic_set_offset(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
isl_bool isl_basic_set_is_wrapping(__isl_keep isl_basic_set *bset)
static __isl_give isl_map * map_lower_bound_pw_aff(__isl_take isl_map *map, unsigned pos, __isl_take isl_pw_aff *lower)
static __isl_give isl_aff * extract_div_expr_aff(__isl_keep isl_basic_set *bset, int div, int pos)
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
isl_bool isl_set_is_rational(__isl_keep isl_set *set)
static __isl_give isl_map * isl_map_reverse_range_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
static __isl_give isl_map * remove_if_empty(__isl_take isl_map *map, int i)
__isl_give isl_map * isl_map_union(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_null isl_basic_map * isl_basic_map_free(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_drop(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__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_give isl_basic_set * isl_basic_set_extend(__isl_take isl_basic_set *base, unsigned extra, unsigned n_eq, unsigned n_ineq)
isl_bool isl_basic_map_equal_div_expr_part(__isl_keep isl_basic_map *bmap1, int pos1, __isl_keep isl_basic_map *bmap2, int pos2, unsigned first, unsigned n)
__isl_give isl_basic_map * isl_basic_map_domain_map(__isl_take isl_basic_map *bmap)
static __isl_give isl_space * isl_space_set(__isl_take isl_space *space, enum isl_dim_type type, __isl_take isl_space *set)
static __isl_give isl_map * map_intersect_internal(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_basic_set * isl_basic_set_fix_si(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, int value)
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_give isl_basic_map * isl_basic_map_range_product(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
isl_size isl_basic_set_total_dim(__isl_keep const isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_set_div_expr_constant_num_si_inplace(__isl_take isl_basic_map *bmap, int div, int value)
__isl_give isl_set * isl_set_reset_tuple_id(__isl_take isl_set *set)
int isl_basic_map_constraint_cmp(__isl_keep isl_basic_map *bmap, isl_int *c1, isl_int *c2)
static __isl_give isl_basic_map * basic_map_space_reset(__isl_take isl_basic_map *bmap, enum isl_dim_type type)
__isl_give isl_map * isl_map_normalize(__isl_take isl_map *map)
__isl_give isl_map * isl_set_identity(__isl_take isl_set *set)
int isl_basic_map_alloc_div(__isl_keep isl_basic_map *bmap)
__isl_give isl_map * isl_map_set_tuple_name(__isl_take isl_map *map, enum isl_dim_type type, const char *s)
isl_bool isl_basic_map_div_is_marked_unknown(__isl_keep isl_basic_map *bmap, int div)
__isl_give isl_map * isl_map_order_divs(__isl_take isl_map *map)
static __isl_give isl_map * map_lex_gte(__isl_take isl_space *space, int equal)
isl_bool isl_map_has_space_tuples(__isl_keep isl_map *map, __isl_keep isl_space *space)
static __isl_give isl_maybe_isl_aff isl_basic_map_try_find_output_mod_eq(__isl_keep isl_basic_map *bmap, int pos)
__isl_give isl_map * isl_map_from_domain_and_range(__isl_take isl_set *domain, __isl_take isl_set *range)
__isl_give isl_map * isl_map_drop_constraints_involving_dims(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_map * isl_map_order_gt(__isl_take isl_map *map, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
static __isl_give isl_basic_map * var_more(__isl_take isl_basic_map *bmap, unsigned pos)
__isl_give isl_set * isl_set_eliminate(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
isl_bool isl_map_is_strict_subset(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
isl_size isl_set_n_param(__isl_keep isl_set *set)
__isl_give isl_basic_set * isl_basic_set_tighten_outward(__isl_take isl_basic_set *bset, __isl_keep isl_vec *vec)
isl_size isl_basic_set_n_inequality(__isl_keep isl_basic_set *bset)
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
isl_stat isl_basic_set_check_no_locals(__isl_keep isl_basic_set *bset)
isl_stat isl_basic_set_vars_get_sign(__isl_keep isl_basic_set *bset, unsigned first, unsigned n, int *signs)
__isl_give isl_set * isl_set_align_divs(__isl_take isl_set *set)
__isl_give isl_map * isl_map_fix_val(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, __isl_take isl_val *v)
__isl_give isl_val * isl_map_plain_get_val_if_fixed(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos)
static int constraint_pair_has_bound(__isl_keep isl_basic_map *bmap, int i, int j, isl_int bound, isl_int *tmp)
int isl_basic_set_compare_at(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2, int pos)
static isl_bool isl_basic_set_plain_has_fixed_var(__isl_keep isl_basic_set *bset, unsigned pos, isl_int *val)
__isl_give isl_map * isl_map_upper_bound_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *upper)
__isl_give isl_map * isl_space_universe_map(__isl_take isl_space *space)
__isl_give isl_basic_set * isl_basic_set_fix(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, isl_int value)
__isl_give isl_map * isl_map_upper_bound(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, isl_int value)
__isl_give isl_basic_map * isl_basic_map_set_dim_name(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, const char *s)
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_bool isl_set_is_box(__isl_keep isl_set *set)
__isl_give isl_set * isl_set_equate(__isl_take isl_set *set, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
__isl_give isl_map * isl_map_flatten(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_set_to_empty(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_remove_unknown_divs(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_intersect_params(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_less_at(__isl_take isl_space *space, unsigned pos)
static isl_stat isl_set_check_range(__isl_keep isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_map * isl_map_preimage_multi_pw_aff(__isl_take isl_map *map, enum isl_dim_type type, __isl_take isl_multi_pw_aff *mpa)
__isl_give isl_maybe_isl_aff isl_basic_map_try_find_any_output_div_mod(__isl_keep isl_basic_map *bmap, int *pos)
static __isl_give isl_map * map_equate_params(__isl_take isl_map *map, __isl_keep isl_multi_id *tuple)
static isl_bool isl_map_plain_has_fixed_var(__isl_keep isl_map *map, unsigned pos, isl_int *val)
__isl_give isl_map * isl_map_domain_factor_domain(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_more_at(__isl_take isl_space *space, unsigned pos)
static __isl_give isl_basic_map * insert_bounds_on_div_from_ineq(__isl_take isl_basic_map *bmap, int div, int i, unsigned total, isl_int v, int lb, int ub)
isl_bool isl_basic_set_is_equal(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
static isl_stat check_map_compatible_range_multi_aff(__isl_keep isl_map *map, enum isl_dim_type type, __isl_keep isl_multi_aff *ma)
__isl_give isl_basic_map * isl_basic_map_preimage_range_multi_aff(__isl_take isl_basic_map *bmap, __isl_take isl_multi_aff *ma)
static __isl_give isl_map * isl_map_transform(__isl_take isl_map *map, __isl_give isl_space *(*fn_space)(__isl_take isl_space *space), __isl_give isl_basic_map *(*fn_bmap)(__isl_take isl_basic_map *bmap))
static int sort_constraint_cmp(const void *p1, const void *p2, void *arg)
isl_bool isl_basic_map_has_dim_id(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos)
__isl_give isl_id * isl_map_get_domain_tuple_id(__isl_keep isl_map *map)
__isl_give isl_pw_aff * isl_set_dim_min(__isl_take isl_set *set, int pos)
static __isl_give isl_basic_map * var_equal(__isl_take isl_basic_map *bmap, unsigned pos)
__isl_give isl_set * isl_set_drop_unused_params(__isl_take isl_set *set)
int isl_basic_map_first_unknown_div(__isl_keep isl_basic_map *bmap)
int isl_set_find_dim_by_name(__isl_keep isl_set *set, enum isl_dim_type type, const char *name)
__isl_give isl_map * isl_map_apply_domain(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_map * isl_map_lex_le_map(__isl_take isl_map *map1, __isl_take isl_map *map2)
__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)
isl_bool isl_set_is_equal(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
static __isl_give isl_map * map_intersect(__isl_take isl_map *map1, __isl_take isl_map *map2)
isl_bool isl_map_plain_is_injective(__isl_keep isl_map *map)
__isl_give isl_map * isl_map_set_dim_name(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, const char *s)
__isl_give isl_basic_set * isl_basic_set_insert_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, unsigned n)
static __isl_give isl_map * map_intersect_set(__isl_take isl_map *map, __isl_take isl_space *space, __isl_take isl_set *set, __isl_give isl_basic_map *fn(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *bset))
isl_bool isl_map_can_zip(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_free_equality(__isl_take isl_basic_map *bmap, unsigned n)
static __isl_give isl_basic_map * add_known_div_constraints(__isl_take isl_basic_map *bmap)
__isl_give isl_map * isl_map_curry(__isl_take isl_map *map)
isl_bool isl_map_domain_is_wrapping(__isl_keep isl_map *map)
static void isl_detect_mod_data_clear(struct isl_detect_mod_data *data)
int isl_basic_map_output_defining_equality(__isl_keep isl_basic_map *bmap, int pos, int *div, int *ineq)
__isl_give isl_map * isl_map_lex_le_first(__isl_take isl_space *space, unsigned n)
int isl_basic_map_drop_inequality(__isl_keep isl_basic_map *bmap, unsigned pos)
__isl_give isl_map * isl_map_lex_lt(__isl_take isl_space *set_space)
isl_bool isl_basic_set_plain_is_empty(__isl_keep isl_basic_set *bset)
__isl_give isl_set * isl_set_project_out_param_id_list(__isl_take isl_set *set, __isl_take isl_id_list *list)
int isl_basic_map_alloc_inequality(__isl_keep isl_basic_map *bmap)
__isl_give isl_map * isl_map_oppose(__isl_take isl_map *map, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
uint32_t isl_basic_set_get_hash(__isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_intersect_range(__isl_take isl_map *map, __isl_take isl_set *set)
int isl_map_find_dim_by_name(__isl_keep isl_map *map, enum isl_dim_type type, const char *name)
__isl_give isl_set * isl_basic_set_lexmax(__isl_take isl_basic_set *bset)
__isl_give isl_map * isl_map_lower_bound(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, isl_int value)
isl_bool isl_map_can_range_curry(__isl_keep isl_map *map)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
__isl_give isl_basic_map * isl_basic_map_remove_divs(__isl_take isl_basic_map *bmap)
__isl_give isl_set * isl_set_eliminate_dims(__isl_take isl_set *set, unsigned first, unsigned n)
int isl_set_follows_at(__isl_keep isl_set *set1, __isl_keep isl_set *set2, int pos)
__isl_give isl_basic_map * isl_basic_map_add_div_constraint(__isl_take isl_basic_map *bmap, unsigned div, int sign)
__isl_give isl_id * isl_basic_set_get_dim_id(__isl_keep isl_basic_set *bset, enum isl_dim_type type, unsigned pos)
__isl_give isl_map * isl_map_realign(__isl_take isl_map *map, __isl_take isl_reordering *r)
static __isl_give isl_basic_map * isl_basic_map_set_reverse(__isl_take isl_basic_map *bmap)
__isl_give isl_map * isl_map_remove_divs_involving_dims(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_set * isl_set_universe(__isl_take isl_space *space)
static __isl_give isl_basic_map * isl_basic_map_range_reverse(__isl_take isl_basic_map *bmap)
__isl_give isl_map * isl_map_lex_ge_map(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_set * isl_set_remove_divs_involving_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_set * isl_set_drop_constraints_not_involving_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_set * isl_set_add_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned n)
__isl_give isl_set * isl_set_intersect_factor_range(__isl_take isl_set *set, __isl_take isl_set *range)
static enum isl_lp_result basic_set_maximal_difference_at(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2, int pos, isl_int *opt)
__isl_give isl_basic_set * isl_basic_set_add_eq(__isl_take isl_basic_set *bset, isl_int *eq)
__isl_give isl_set * isl_set_intersect_params(__isl_take isl_set *set, __isl_take isl_set *params)
__isl_give isl_map * isl_map_preimage_multi_aff(__isl_take isl_map *map, enum isl_dim_type type, __isl_take isl_multi_aff *ma)
isl_bool isl_map_has_equal_params(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
isl_stat isl_basic_set_check_no_params(__isl_keep isl_basic_set *bset)
isl_bool isl_map_space_tuple_is_equal(__isl_keep isl_map *map, enum isl_dim_type type1, __isl_keep isl_space *space, enum isl_dim_type type2)
static __isl_give isl_constraint * constraint_order_ge(__isl_take isl_space *space, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
int isl_map_is_translation(__isl_keep isl_map *map)
static isl_bool is_potential_div_constraint(__isl_keep isl_basic_map *bmap, isl_int *c, int v_out, int d, int v_div, int total)
static isl_bool basic_map_dim_is_bounded(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, int lower, int upper)
__isl_give isl_set * isl_basic_set_union(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
static __isl_give isl_set * set_parameter_preimage(__isl_take isl_set *set, __isl_take isl_mat *mat)
__isl_give isl_set * isl_set_remove_unknown_divs(__isl_take isl_set *set)
__isl_give isl_map * isl_map_cow(__isl_take isl_map *map)
isl_size isl_basic_set_var_offset(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
__isl_give isl_map * isl_map_from_basic_map(__isl_take isl_basic_map *bmap)
__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_flat_range_product(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
__isl_give isl_basic_map * isl_basic_map_uncurry(__isl_take isl_basic_map *bmap)
isl_size isl_set_n_dim(__isl_keep isl_set *set)
__isl_give isl_basic_map * isl_basic_map_mark_div_unknown(__isl_take isl_basic_map *bmap, int div)
__isl_give isl_set * isl_set_copy(__isl_keep isl_set *set)
isl_stat isl_set_foreach_orthant(__isl_keep isl_set *set, isl_stat(*fn)(__isl_take isl_set *orthant, int *signs, void *user), void *user)
__isl_give isl_basic_set * isl_basic_map_underlying_set(__isl_take isl_basic_map *bmap)
isl_size isl_basic_map_find_output_upper_div_constraint(__isl_keep isl_basic_map *bmap, int pos)
static __isl_give isl_map * map_space_reset(__isl_take isl_map *map, enum isl_dim_type type)
__isl_give isl_basic_set * isl_basic_set_list_intersect(__isl_take isl_basic_set_list *list)
static isl_size find_div(__isl_keep isl_basic_map *dst, __isl_keep isl_basic_map *src, unsigned div)
static __isl_give isl_map * map_lex_gte_first(__isl_take isl_space *space, unsigned n, int equal)
__isl_give isl_set * isl_set_preimage_multi_aff(__isl_take isl_set *set, __isl_take isl_multi_aff *ma)
__isl_give isl_map * isl_map_remove_obvious_duplicates(__isl_take isl_map *map)
int isl_map_find_dim_by_id(__isl_keep isl_map *map, enum isl_dim_type type, __isl_keep isl_id *id)
isl_bool isl_basic_map_plain_is_fixed(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, isl_int *val)
__isl_give isl_set * isl_set_intersect_factor_domain(__isl_take isl_set *set, __isl_take isl_set *domain)
__isl_give isl_basic_set * isl_basic_set_free_equality(__isl_take isl_basic_set *bset, unsigned n)
__isl_give isl_set * isl_set_params(__isl_take isl_set *set)
__isl_give isl_maybe_isl_aff isl_basic_map_try_find_output_div_mod(__isl_keep isl_basic_map *bmap, int pos)
__isl_give isl_basic_map * isl_basic_map_preimage_domain_multi_aff(__isl_take isl_basic_map *bmap, __isl_take isl_multi_aff *ma)
static int extend_last_non_zero(__isl_keep isl_basic_map *bmap, int ineq, int first, unsigned len)
__isl_give isl_map * isl_map_intersect(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_basic_map * isl_basic_map_cow(__isl_take isl_basic_map *bmap)
isl_bool isl_basic_map_is_transformation(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_fix_si(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, int value)
isl_bool isl_basic_map_is_single_valued(__isl_keep isl_basic_map *bmap)
__isl_give isl_local_space * isl_basic_map_get_local_space(__isl_keep isl_basic_map *bmap)
static isl_size find_output_lower_mod_constraint(__isl_keep isl_basic_map *bmap, int pos, isl_int n)
static __isl_give isl_basic_map * basic_map_bound_si(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, int value, int upper)
static isl_bool isl_basic_map_plain_has_fixed_var(__isl_keep isl_basic_map *bmap, unsigned pos, isl_int *val)
static isl_stat check_convex_no_locals(__isl_keep isl_map *map)
__isl_give isl_map * isl_map_set_dim_id(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id)
isl_stat isl_basic_set_dims_get_sign(__isl_keep isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n, int *signs)
isl_size isl_set_tuple_dim(__isl_keep isl_set *set)
isl_bool isl_map_plain_is_empty(__isl_keep isl_map *map)
__isl_give isl_basic_set * isl_basic_set_neg(__isl_take isl_basic_set *bset)
isl_bool isl_map_can_uncurry(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_upper_bound_si(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, int value)
__isl_give isl_map * isl_map_intersect_range_factor_domain(__isl_take isl_map *map, __isl_take isl_map *factor)
static __isl_give isl_map * map_preimage_multi_aff(__isl_take isl_map *map, enum isl_dim_type type, __isl_take isl_multi_aff *ma)
__isl_give isl_map * isl_map_order_le(__isl_take isl_map *map, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
static int room_for_con(__isl_keep isl_basic_map *bmap, unsigned n)
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_maybe_isl_aff isl_basic_map_try_find_output_mod(__isl_keep isl_basic_map *bmap, int pos)
__isl_give isl_map * isl_map_range_map(__isl_take isl_map *map)
__isl_give isl_map * isl_map_lex_gt_first(__isl_take isl_space *space, unsigned n)
__isl_give isl_set * isl_set_project_out(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_set_list * isl_set_get_basic_set_list(__isl_keep isl_set *set)
static __isl_give isl_aff * extract_lower_bound_aff(__isl_keep isl_basic_set *bset, int ineq, int pos)
__isl_give isl_mat * isl_basic_map_get_divs(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_cow(__isl_take isl_basic_set *bset)
uint32_t isl_map_get_hash(__isl_keep isl_map *map)
uint32_t isl_set_get_hash(__isl_keep isl_set *set)
isl_bool isl_set_involves_dims(__isl_keep isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_id * isl_map_get_range_tuple_id(__isl_keep isl_map *map)
int isl_set_size(__isl_keep isl_set *set)
static __isl_give isl_map * map_intersect_add_constraint(__isl_take isl_map *map1, __isl_take isl_map *map2)
isl_bool isl_map_is_single_valued(__isl_keep isl_map *map)
isl_bool isl_basic_map_is_universe(__isl_keep isl_basic_map *bmap)
isl_stat isl_set_foreach_basic_set(__isl_keep isl_set *set, isl_stat(*fn)(__isl_take isl_basic_set *bset, void *user), void *user)
__isl_give isl_basic_set * isl_basic_set_set_rational(__isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_insert_div(__isl_take isl_basic_map *bmap, int pos, __isl_keep isl_vec *div)
static int multi_aff_strides(__isl_keep isl_multi_aff *ma)
__isl_give isl_map * isl_map_intersect_domain(__isl_take isl_map *map, __isl_take isl_set *set)
__isl_give isl_basic_map * isl_basic_map_flatten_domain(__isl_take isl_basic_map *bmap)
isl_bool isl_map_is_params(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_sort_constraints(__isl_take isl_basic_map *bmap)
__isl_give isl_set * isl_set_compute_divs(__isl_take isl_set *set)
__isl_give isl_id * isl_map_get_dim_id(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos)
int isl_set_find_dim_by_id(__isl_keep isl_set *set, enum isl_dim_type type, __isl_keep isl_id *id)
isl_bool isl_set_plain_is_equal(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_set * isl_set_nat_universe(__isl_take isl_space *space)
__isl_give isl_basic_set * isl_basic_set_flat_product(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
static int first_div_may_involve_output(__isl_keep isl_basic_map *bmap, isl_int *c, int first, int n)
__isl_give isl_map * isl_map_flat_range_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
static int only_non_zero(isl_int *p, unsigned pos, unsigned len)
__isl_give isl_map * isl_map_zip(__isl_take isl_map *map)
isl_size isl_map_domain_tuple_dim(__isl_keep isl_map *map)
static int find_modulo_constraint_pair(__isl_keep isl_basic_map *bmap, int pos, isl_int m)
__isl_give isl_basic_set * isl_basic_set_move_dims(__isl_take isl_basic_set *bset, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
__isl_give isl_map * isl_set_translation(__isl_take isl_set *deltas)
__isl_give isl_pw_aff * isl_map_dim_max(__isl_take isl_map *map, int pos)
__isl_give isl_basic_set * isl_basic_set_intersect_params(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
static __isl_give isl_basic_map * insert_bounds_on_div(__isl_take isl_basic_map *bmap, int div)
__isl_give isl_basic_set * isl_basic_set_sort_divs(__isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_flatten(__isl_take isl_basic_map *bmap)
__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_map * isl_basic_map_reset(__isl_take isl_basic_map *bmap, enum isl_dim_type type)
__isl_give isl_map * isl_map_range_reverse(__isl_take isl_map *map)
__isl_give isl_local_space * isl_basic_set_get_local_space(__isl_keep isl_basic_set *bset)
static void swap_vars(struct isl_blk blk, isl_int *a, unsigned a_len, unsigned b_len)
__isl_give isl_basic_set * isl_basic_set_underlying_set(__isl_take isl_basic_set *bset)
static int first_parameter_equality(__isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_alloc_space(__isl_take isl_space *space, int n, unsigned flags)
__isl_give isl_basic_set * isl_basic_set_positive_orthant(__isl_take isl_space *space)
const char * isl_basic_map_get_dim_name(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos)
__isl_give isl_basic_map * isl_basic_map_drop_div(__isl_take isl_basic_map *bmap, unsigned div)
__isl_give isl_basic_set * isl_basic_set_set_integral(__isl_take 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_set * isl_set_from_params(__isl_take isl_set *set)
__isl_give isl_basic_set * isl_basic_set_lower_bound_val(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, __isl_take isl_val *value)
__isl_give isl_map * isl_set_lex_ge_set(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_basic_map * isl_basic_map_sum(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
__isl_give isl_basic_set * isl_basic_set_remove_divs(__isl_take isl_basic_set *bset)
isl_bool isl_basic_map_is_subset(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
__isl_give isl_set * isl_map_params(__isl_take isl_map *map)
int isl_basic_set_follows_at(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2, int pos)
isl_bool isl_map_can_curry(__isl_keep isl_map *map)
__isl_give isl_set * isl_set_wrapped_reverse(__isl_take isl_set *set)
isl_bool isl_basic_map_can_zip(__isl_keep isl_basic_map *bmap)
__isl_give isl_map * isl_map_lex_lt_first(__isl_take isl_space *space, unsigned n)
static __isl_give isl_set * set_bound_multi_pw_aff(__isl_take isl_set *set, __isl_take isl_multi_pw_aff *bound, __isl_give isl_map *set_bound(__isl_take isl_map *map, unsigned pos, __isl_take TYPE *value))
__isl_give isl_mat * isl_basic_set_get_divs(__isl_keep isl_basic_set *bset)
isl_bool isl_set_is_params(__isl_keep isl_set *set)
isl_size isl_map_range_tuple_dim(__isl_keep isl_map *map)
__isl_give isl_map * isl_map_order_lt(__isl_take isl_map *map, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
static isl_bool isl_map_set_has_equal_params(__isl_keep isl_map *map, __isl_keep isl_set *set)
__isl_give isl_basic_set * isl_basic_set_upper_bound_val(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, __isl_take isl_val *value)
__isl_give isl_basic_set * isl_basic_set_params(__isl_take isl_basic_set *bset)
__isl_give isl_map * isl_map_set_domain_tuple_id(__isl_take isl_map *map, __isl_take isl_id *id)
const char * isl_basic_set_get_dim_name(__isl_keep isl_basic_set *bset, enum isl_dim_type type, unsigned pos)
__isl_give isl_map * isl_map_domain_reverse(__isl_take isl_map *map)
isl_bool isl_set_space_has_equal_params(__isl_keep isl_set *set, __isl_keep isl_space *space)
isl_bool isl_basic_map_compatible_domain(__isl_keep isl_basic_map *bmap, __isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_align_params(__isl_take isl_map *map, __isl_take isl_space *model)
__isl_give isl_set * isl_basic_set_lexmin(__isl_take isl_basic_set *bset)
isl_size isl_map_dim(__isl_keep isl_map *map, enum isl_dim_type type)
isl_bool isl_map_compatible_range(__isl_keep isl_map *map, __isl_keep isl_set *set)
int isl_basic_set_size(__isl_keep isl_basic_set *bset)
static __isl_give isl_basic_map * isl_basic_map_swap_vars(__isl_take isl_basic_map *bmap, unsigned pos, unsigned n1, unsigned n2)
__isl_give isl_map * isl_map_intersect_range_factor_range(__isl_take isl_map *map, __isl_take isl_map *factor)
static isl_bool has_bound(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos, isl_bool(*fn)(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos))
isl_bool isl_basic_map_plain_is_non_empty(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_empty(__isl_take isl_space *space)
void isl_set_print_internal(__isl_keep isl_set *set, FILE *out, int indent)
__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_map * isl_map_range_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_map * isl_map_reset_user(__isl_take isl_map *map)
static __isl_give isl_basic_map * basic_map_bound(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, isl_int value, int upper)
static isl_stat check_basic_map_compatible_range_multi_aff(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, __isl_keep isl_multi_aff *ma)
__isl_give isl_basic_map * isl_basic_map_intersect_domain(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *bset)
isl_bool isl_basic_set_is_subset(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
isl_bool isl_map_has_tuple_id(__isl_keep isl_map *map, enum isl_dim_type type)
__isl_give isl_basic_map * isl_basic_map_order_ge(__isl_take isl_basic_map *bmap, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
isl_stat isl_map_foreach_basic_map(__isl_keep isl_map *map, isl_stat(*fn)(__isl_take isl_basic_map *bmap, void *user), void *user)
__isl_give isl_map * isl_map_preimage_domain_pw_multi_aff(__isl_take isl_map *map, __isl_take isl_pw_multi_aff *pma)
__isl_give isl_basic_map * isl_basic_map_intersect_range(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *bset)
isl_bool isl_set_is_empty(__isl_keep isl_set *set)
__isl_give isl_map * isl_map_reset_equal_dim_space(__isl_take isl_map *map, __isl_take isl_space *space)
__isl_give isl_set * isl_set_flat_product(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_set * isl_set_neg(__isl_take isl_set *set)
__isl_give isl_map * isl_map_set_tuple_id(__isl_take isl_map *map, enum isl_dim_type type, __isl_take isl_id *id)
static int qsort_bmap_cmp(const void *p1, const void *p2)
isl_bool isl_set_dim_has_any_upper_bound(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
static __isl_give isl_basic_map * remove_divs_involving_vars(__isl_take isl_basic_map *bmap, unsigned first, unsigned n)
static isl_stat isl_set_basic_set_check_equal_space(__isl_keep isl_set *set, __isl_keep isl_basic_set *bset)
isl_bool isl_basic_set_plain_is_equal(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
__isl_give isl_map * isl_map_remove_empty_parts(__isl_take isl_map *map)
static __isl_give isl_basic_map * dup_constraints(__isl_take isl_basic_map *dst, __isl_keep isl_basic_map *src)
isl_bool isl_basic_set_is_box(__isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_lex_le(__isl_take isl_space *set_space)
static __isl_give isl_pw_aff * basic_map_dim_opt(__isl_keep isl_basic_map *bmap, int max)
__isl_give isl_map * isl_map_fix_input_si(__isl_take isl_map *map, unsigned input, int value)
__isl_give isl_basic_map * isl_basic_map_range_map(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_reset_space(__isl_take isl_basic_set *bset, __isl_take isl_space *space)
static int unique(isl_int *p, unsigned pos, unsigned len)
__isl_give isl_set * isl_set_intersect(__isl_take isl_set *set1, __isl_take isl_set *set2)
isl_bool isl_map_is_injective(__isl_keep isl_map *map)
static __isl_give isl_basic_map * add_divs(__isl_take isl_basic_map *bmap, unsigned n)
__isl_give isl_basic_set * isl_basic_set_set_tuple_id(__isl_take isl_basic_set *bset, __isl_take isl_id *id)
__isl_give isl_set * isl_basic_set_to_set(__isl_take isl_basic_set *bset)
__isl_give isl_map * isl_map_deltas_map(__isl_take isl_map *map)
int isl_basic_set_drop_inequality(__isl_keep isl_basic_set *bset, unsigned pos)
isl_size isl_set_dim(__isl_keep isl_set *set, enum isl_dim_type type)
__isl_give isl_map * isl_basic_map_compute_divs(__isl_take isl_basic_map *bmap)
static void isl_detect_mod_data_init(struct isl_detect_mod_data *data)
isl_bool isl_map_has_range_tuple_id(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_flatten_range(__isl_take isl_basic_map *bmap)
__isl_give isl_map * isl_map_reset_tuple_id(__isl_take isl_map *map, enum isl_dim_type type)
__isl_give isl_set * isl_set_partial_lexmax(__isl_take isl_set *set, __isl_take isl_set *dom, __isl_give isl_set **empty)
static __isl_give isl_map * map_upper_bound_pw_aff(__isl_take isl_map *map, unsigned pos, __isl_take isl_pw_aff *upper)
__isl_give isl_map * isl_map_upper_bound_si(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, int value)
__isl_give isl_basic_set * isl_basic_set_add_div_constraints(__isl_take isl_basic_set *bset, unsigned pos)
isl_bool isl_set_is_wrapping(__isl_keep isl_set *set)
__isl_give isl_set * isl_set_partial_lexmin(__isl_take isl_set *set, __isl_take isl_set *dom, __isl_give isl_set **empty)
isl_bool isl_basic_set_is_universe(__isl_keep isl_basic_set *bset)
static __isl_give isl_pw_aff * set_dim_opt(__isl_take isl_set *set, int pos, int max)
int isl_set_plain_cmp(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_map * isl_map_partial_lexmax(__isl_take isl_map *map, __isl_take isl_set *dom, __isl_give isl_set **empty)
__isl_give isl_map * isl_map_from_range(__isl_take isl_set *set)
__isl_give isl_map * isl_map_preimage_domain_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *mpa)
int isl_basic_map_alloc_equality(__isl_keep isl_basic_map *bmap)
isl_bool isl_basic_map_contains(__isl_keep isl_basic_map *bmap, __isl_keep isl_vec *vec)
__isl_give isl_map * isl_map_intersect_range_wrapped_domain(__isl_take isl_map *map, __isl_take isl_set *domain)
__isl_give isl_map * isl_set_unbind_params_insert_domain(__isl_take isl_set *set, __isl_take isl_multi_id *domain)
isl_bool isl_map_plain_is_fixed(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos, isl_int *val)
isl_bool isl_basic_map_dim_has_upper_bound(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos)
__isl_give isl_basic_map * isl_basic_map_identity(__isl_take isl_space *space)
__isl_give isl_set * isl_set_project_out_all_params(__isl_take isl_set *set)
isl_bool isl_map_has_rational(__isl_keep isl_map *map)
static __isl_give isl_maybe_isl_aff isl_basic_map_try_find_output_div(__isl_keep isl_basic_map *bmap, int pos)
__isl_give isl_set * isl_set_align_params(__isl_take isl_set *set, __isl_take isl_space *model)
isl_bool isl_basic_map_compatible_range(__isl_keep isl_basic_map *bmap, __isl_keep isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_curry(__isl_take isl_basic_map *bmap)
__isl_give isl_map * isl_map_universe(__isl_take isl_space *space)
__isl_give isl_basic_map * isl_basic_map_order_gt(__isl_take isl_basic_map *bmap, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
__isl_keep isl_space * isl_set_peek_space(__isl_keep isl_set *set)
static isl_size find_earlier_constraint_in_pair(__isl_keep isl_basic_map *bmap, int ineq, int pos, int len, isl_int bound, isl_int *tmp)
__isl_give isl_set * isl_set_split_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__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_set * isl_set_move_dims(__isl_take isl_set *set, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
__isl_give isl_basic_set * isl_basic_set_drop_constraints_involving_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_map * isl_map_factor_domain(__isl_take isl_map *map)
__isl_give isl_map * isl_map_range_factor_range(__isl_take isl_map *map)
__isl_give isl_map * isl_map_domain_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_basic_map * isl_basic_map_transform_dims(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, __isl_take isl_mat *trans)
static int is_constraint_pair(__isl_keep isl_basic_map *bmap, int i, int j, unsigned len)
__isl_give isl_set * isl_basic_set_lexopt(__isl_take isl_basic_set *bset, unsigned flags)
__isl_give isl_basic_set * isl_basic_set_from_underlying_set(__isl_take isl_basic_set *bset, __isl_take isl_basic_set *like)
isl_stat isl_basic_map_free_div(__isl_keep isl_basic_map *bmap, unsigned n)
__isl_give isl_basic_map * isl_basic_map_apply_domain(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
__isl_give isl_set * isl_set_grow(__isl_take isl_set *set, int n)
__isl_give isl_map * isl_map_domain_map(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_set_unwrap(__isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_lower_bound_si(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, int value)
isl_stat isl_map_check_transformation(__isl_keep isl_map *map)
__isl_give isl_mat * isl_basic_map_inequalities_matrix(__isl_keep isl_basic_map *bmap, enum isl_dim_type c1, enum isl_dim_type c2, enum isl_dim_type c3, enum isl_dim_type c4, enum isl_dim_type c5)
__isl_give isl_val * isl_basic_map_plain_get_val_if_fixed(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos)
isl_bool isl_set_plain_is_universe(__isl_keep isl_set *set)
static __isl_give isl_map * isl_map_reverse_domain_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
static __isl_give isl_basic_map * basic_map_init(isl_ctx *ctx, __isl_take isl_basic_map *bmap, unsigned extra, unsigned n_eq, unsigned n_ineq)
__isl_give isl_set * isl_set_upper_bound_multi_val(__isl_take isl_set *set, __isl_take isl_multi_val *upper)
__isl_give isl_map * isl_map_align_divs(__isl_take isl_map *map)
static __isl_give isl_basic_set * neg_halfspace(__isl_take isl_space *space, int pos)
__isl_give isl_basic_map * isl_basic_map_add_dims(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned n)
__isl_give isl_basic_set * isl_basic_map_wrap(__isl_take isl_basic_map *bmap)
static __isl_give isl_aff * unwrap_plug_in(__isl_take isl_aff *aff, int is_set)
static __isl_give isl_basic_map * substitute_div_mod(__isl_take isl_basic_map *bmap, unsigned pos, struct isl_detect_mod_data *data)
static __isl_give isl_aff * extract_expr_aff(__isl_keep isl_basic_set *bset, int eq, int pos)
static isl_stat isl_basic_map_check_applies_range(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
isl_bool isl_basic_map_div_is_integral(__isl_keep isl_basic_map *bmap, int div)
static __isl_give isl_basic_map * var_less_or_equal(__isl_take isl_basic_map *bmap, unsigned pos)
isl_bool isl_basic_set_eq_is_stride(__isl_keep isl_basic_set *bset, int i)
static __isl_give isl_map * isl_map_unmark_normalized(__isl_take isl_map *map)
__isl_give isl_basic_set * isl_basic_set_from_constraint_matrices(__isl_take isl_space *space, __isl_take isl_mat *eq, __isl_take isl_mat *ineq, enum isl_dim_type c1, enum isl_dim_type c2, enum isl_dim_type c3, enum isl_dim_type c4)
__isl_give isl_map * isl_map_equate(__isl_take isl_map *map, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
static __isl_give isl_maybe_isl_aff try_find_output_mod_ineq_at(__isl_keep isl_basic_map *bmap, int v_out, int pos, int ineq, int n_ineq, int v_div, int e)
void isl_basic_set_print_internal(__isl_keep isl_basic_set *bset, FILE *out, int indent)
isl_bool isl_basic_map_is_strict_subset(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
__isl_give isl_basic_map * isl_basic_map_fix_val(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, __isl_take isl_val *v)
__isl_give isl_set * isl_set_apply(__isl_take isl_set *set, __isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_expand_divs(__isl_take isl_basic_map *bmap, __isl_take isl_mat *div, int *exp)
__isl_give isl_basic_set * isl_basic_set_flatten(__isl_take isl_basic_set *bset)
uint32_t isl_basic_map_get_hash(__isl_keep isl_basic_map *bmap)
__isl_give isl_set * isl_set_lower_bound_multi_pw_aff(__isl_take isl_set *set, __isl_take isl_multi_pw_aff *lower)
isl_bool isl_basic_map_equal_div_expr_except_constant(__isl_keep isl_basic_map *bmap1, int pos1, __isl_keep isl_basic_map *bmap2, int pos2)
static __isl_give isl_map * isl_map_change_space(__isl_take isl_map *map, isl_bool(*can_change)(__isl_keep isl_map *map), const char *cannot_change, __isl_give isl_space *(*change)(__isl_take isl_space *space))
__isl_give isl_map * isl_map_remove_divs(__isl_take isl_map *map)
static __isl_give isl_aff * construct_mod_ineq(__isl_keep isl_basic_map *bmap, int pos, int div, int lower, int t, isl_int n)
__isl_give isl_map * isl_map_preimage_domain_multi_aff(__isl_take isl_map *map, __isl_take isl_multi_aff *ma)
__isl_give isl_basic_set * isl_basic_set_nat_universe(__isl_take isl_space *space)
const char * isl_basic_map_get_tuple_name(__isl_keep isl_basic_map *bmap, enum isl_dim_type type)
__isl_give isl_set * isl_basic_set_list_union(__isl_take isl_basic_set_list *list)
__isl_give isl_basic_set * isl_basic_set_remove_divs_involving_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_id * isl_set_get_dim_id(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
static isl_bool isl_map_set_tuple_is_equal(__isl_keep isl_map *map, enum isl_dim_type type, __isl_keep isl_set *set)
__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_map * isl_map_lex_ge(__isl_take isl_space *set_space)
__isl_give isl_set * isl_set_insert_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, unsigned n)
__isl_give isl_basic_map * isl_basic_map_reset_space(__isl_take isl_basic_map *bmap, __isl_take isl_space *space)
__isl_give isl_map * isl_map_set_rational(__isl_take isl_map *map)
static __isl_give isl_basic_map * join_initial(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2, int pos)
static __isl_give isl_space * isl_map_take_space(__isl_keep isl_map *map)
__isl_give isl_map * isl_map_remove_unknown_divs(__isl_take isl_map *map)
__isl_give isl_set * isl_map_bind_range(__isl_take isl_map *map, __isl_take isl_multi_id *tuple)
isl_bool isl_basic_map_involves_dims(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
static __isl_give isl_basic_map * basic_replace_space_by_local_space(__isl_take isl_basic_map *bmap, __isl_take isl_local_space *ls)
__isl_give isl_map * isl_map_range_curry(__isl_take isl_map *map)
isl_bool isl_basic_map_is_rational(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_extend(__isl_take isl_basic_map *base, unsigned extra, unsigned n_eq, unsigned n_ineq)
isl_bool isl_map_is_rational(__isl_keep isl_map *map)
isl_bool isl_map_compatible_domain(__isl_keep isl_map *map, __isl_keep isl_set *set)
__isl_give isl_map * isl_set_unwrap(__isl_take isl_set *set)
isl_bool isl_map_range_is_wrapping(__isl_keep isl_map *map)
__isl_give isl_map * isl_map_from_domain(__isl_take isl_set *set)
static __isl_give isl_map * isl_map_preimage_pw_multi_aff_aligned(__isl_take isl_map *map, enum isl_dim_type type, __isl_take isl_pw_multi_aff *pma)
__isl_give isl_set * isl_set_upper_bound_val(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, __isl_take isl_val *value)
static __isl_give isl_set * equate_params(__isl_take isl_set *set, __isl_keep isl_multi_id *tuple)
static __isl_give isl_pw_multi_aff * isl_map_partial_lexopt_aligned_pw_multi_aff(__isl_take isl_map *map, __isl_take isl_set *dom, __isl_give isl_set **empty, unsigned flags)
const char * isl_set_get_dim_name(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
isl_bool isl_map_has_dim_name(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos)
isl_ctx * isl_basic_set_get_ctx(__isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_fix_si(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, int value)
__isl_give isl_map * isl_map_add_basic_map(__isl_take isl_map *map, __isl_take isl_basic_map *bmap)
__isl_give isl_set * isl_set_union_disjoint(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_map * isl_set_lex_gt_set(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_basic_set * isl_basic_set_apply(__isl_take isl_basic_set *bset, __isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_empty(__isl_take isl_space *space)
int isl_map_may_be_set(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_overlying_set(__isl_take isl_basic_set *bset, __isl_take isl_basic_map *like)
__isl_keep isl_space * isl_map_peek_space(__isl_keep const isl_map *map)
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
isl_bool isl_map_is_bijective(__isl_keep isl_map *map)
__isl_give isl_map * isl_set_flatten_map(__isl_take isl_set *set)
isl_bool isl_basic_map_is_set(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_universe(__isl_take isl_space *space)
__isl_give isl_map * isl_map_identity(__isl_take isl_space *space)
__isl_give isl_map * isl_set_wrapped_domain_map(__isl_take isl_set *set)
__isl_give isl_basic_map * isl_basic_map_align_divs(__isl_take isl_basic_map *dst, __isl_keep isl_basic_map *src)
__isl_keep isl_space * isl_basic_set_peek_space(__isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_insert_dims(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, unsigned n)
__isl_give isl_map * isl_map_add_dims(__isl_take isl_map *map, enum isl_dim_type type, unsigned n)
static isl_bool div_involves_vars(__isl_keep isl_basic_map *bmap, int div, unsigned first, unsigned n)
__isl_give isl_basic_map * isl_basic_map_reverse(__isl_take isl_basic_map *bmap)
static isl_bool isl_basic_map_has_equal_params(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
__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_mat * isl_basic_set_extract_equalities(__isl_keep isl_basic_set *bset)
isl_bool isl_set_has_tuple_id(__isl_keep isl_set *set)
__isl_give isl_map * isl_map_grow(__isl_take isl_map *map, int n)
static __isl_give isl_basic_map * isl_basic_map_fix_pos_si(__isl_take isl_basic_map *bmap, unsigned pos, int value)
__isl_give isl_map * isl_map_neg(__isl_take isl_map *map)
isl_bool isl_basic_map_has_rational(__isl_keep isl_basic_map *bmap)
const char * isl_basic_set_get_tuple_name(__isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_floordiv_val(__isl_take isl_map *map, __isl_take isl_val *d)
__isl_give isl_map * isl_map_project_out(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__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_bool isl_map_divs_known(__isl_keep isl_map *map)
isl_bool isl_basic_map_can_uncurry(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_from_local_space(__isl_take isl_local_space *ls)
__isl_give isl_basic_map * isl_basic_map_align_params(__isl_take isl_basic_map *bmap, __isl_take isl_space *model)
__isl_give isl_basic_map * isl_basic_map_swap_div(__isl_take isl_basic_map *bmap, int a, int b)
isl_bool isl_set_has_dim_id(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
__isl_give isl_map * isl_map_drop_constraints_not_involving_dims(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_map * isl_map_lex_lt_map(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_set * isl_set_drop(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_map * isl_map_dup(__isl_keep isl_map *map)
__isl_give isl_id * isl_set_get_tuple_id(__isl_keep isl_set *set)
static __isl_give isl_set * base_compute_divs(__isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_copy(__isl_keep isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_set_dim_name(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, const char *s)
__isl_give isl_set * isl_set_fix_si(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, int value)
__isl_give isl_basic_set * isl_basic_set_lift(__isl_take isl_basic_set *bset)
__isl_give isl_aff * isl_basic_set_get_div(__isl_keep isl_basic_set *bset, int pos)
__isl_give isl_basic_set * isl_basic_set_transform_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, __isl_take isl_mat *trans)
static __isl_give isl_basic_map * isl_basic_map_reverse_wrapped(__isl_take isl_basic_map *bmap, enum isl_dim_type type)
__isl_give isl_map * isl_map_remove_dims(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_map * isl_basic_map_intersect(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
static __isl_give isl_basic_map * insert_div_rows(__isl_take isl_basic_map *bmap, int n)
static isl_size find_later_constraint_in_pair(__isl_keep isl_basic_map *bmap, int ineq, int pos, int len, isl_int bound, isl_int *tmp)
static __isl_give isl_basic_map * insert_divs_from_local_space(__isl_take isl_basic_map *bmap, __isl_keep isl_local_space *ls)
__isl_give isl_set * isl_set_set_rational(__isl_take isl_set *set)
static __isl_give isl_basic_set * isl_basic_set_bound(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, isl_int value, int upper)
__isl_give isl_basic_set * isl_basic_set_drop_unused_params(__isl_take isl_basic_set *bset)
__isl_give isl_set * isl_set_remove_empty_parts(__isl_take isl_set *set)
isl_bool isl_map_space_has_equal_params(__isl_keep isl_map *map, __isl_keep isl_space *space)
__isl_give isl_set * isl_set_bind(__isl_take isl_set *set, __isl_take isl_multi_id *tuple)
__isl_give isl_set * isl_set_project_out_param_id(__isl_take isl_set *set, __isl_take isl_id *id)
__isl_give isl_set * isl_set_lower_bound_multi_val(__isl_take isl_set *set, __isl_take isl_multi_val *lower)
__isl_give isl_map * isl_map_preimage_pw_multi_aff(__isl_take isl_map *map, enum isl_dim_type type, __isl_take isl_pw_multi_aff *pma)
static int room_for_ineq(__isl_keep isl_basic_map *bmap, unsigned n)
int isl_basic_map_find_dim_by_name(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, const char *name)
__isl_give isl_set * isl_set_realign(__isl_take isl_set *set, __isl_take isl_reordering *r)
__isl_give isl_basic_map * isl_basic_map_preimage_multi_aff(__isl_take isl_basic_map *bmap, enum isl_dim_type type, __isl_take isl_multi_aff *ma)
isl_bool isl_map_has_domain_tuple_id(__isl_keep isl_map *map)
__isl_give isl_map * isl_set_project_onto_map(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
isl_bool isl_map_plain_is_equal(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__isl_give isl_set * isl_set_substitute(__isl_take isl_set *set, unsigned pos, __isl_keep isl_aff *subs)
__isl_give isl_map * isl_map_range_factor_domain(__isl_take isl_map *map)
void isl_basic_map_print_internal(__isl_keep isl_basic_map *bmap, FILE *out, int indent)
__isl_give isl_basic_map * isl_basic_map_set_tuple_id(__isl_take isl_basic_map *bmap, enum isl_dim_type type, __isl_take isl_id *id)
__isl_give isl_set * isl_map_deltas(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_set_rational(__isl_take isl_basic_map *bmap)
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)
static __isl_give isl_basic_set * nonneg_halfspace(__isl_take isl_space *space, int pos)
int isl_basic_set_alloc_inequality(__isl_keep isl_basic_set *bset)
isl_bool isl_map_is_set(__isl_keep isl_map *map)
static isl_stat isl_basic_set_check_equal_space(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
static isl_stat isl_basic_map_check_compatible_domain(__isl_keep isl_basic_map *bmap, __isl_keep isl_basic_set *bset)
__isl_give isl_map * isl_map_compute_divs(__isl_take isl_map *map)
static isl_stat isl_basic_map_check_transformation(__isl_keep isl_basic_map *bmap)
static __isl_give isl_map * isl_map_restore_space(__isl_take isl_map *map, __isl_take isl_space *space)
static __isl_give isl_map * map_bound_si(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, int value, int upper)
isl_bool isl_basic_map_plain_is_single_valued(__isl_keep isl_basic_map *bmap)
__isl_keep isl_space * isl_basic_map_peek_space(__isl_keep const isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_from_domain(__isl_take isl_basic_set *bset)
__isl_give isl_set * isl_set_drop_constraints_involving_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
static __isl_give isl_basic_map * drop_irrelevant_constraints(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_set * isl_basic_set_align_params(__isl_take isl_basic_set *bset, __isl_take isl_space *model)
__isl_give isl_set * isl_space_universe_set(__isl_take isl_space *space)
int isl_basic_map_plain_cmp(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
static __isl_give isl_basic_map * greator(__isl_take isl_space *space, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
static __isl_give isl_basic_map * isl_basic_map_domain_reverse(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_from_domain_and_range(__isl_take isl_basic_set *domain, __isl_take isl_basic_set *range)
static __isl_give isl_basic_map * set_ma_divs(__isl_take isl_basic_map *bmap, __isl_keep isl_multi_aff *ma, int n_before, int n_after, int n_div)
static __isl_give isl_basic_set * basic_set_append_equalities(__isl_take isl_basic_set *bset, __isl_take isl_mat *eq)
__isl_give isl_basic_map * isl_basic_map_product(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
static __isl_give isl_basic_map * add_ma_strides(__isl_take isl_basic_map *bmap, __isl_keep isl_multi_aff *ma, int n_before, int n_after, int n_div_ma)
__isl_give isl_basic_map * isl_basic_map_less_or_equal_at(__isl_take isl_space *space, unsigned pos)
static __isl_give isl_maybe_isl_aff isl_basic_map_try_find_output_mod_ineq(__isl_keep isl_basic_map *bmap, int pos)
__isl_give isl_basic_map * isl_basic_map_set_tuple_name(__isl_take isl_basic_map *bmap, enum isl_dim_type type, const char *s)
__isl_give isl_basic_set * isl_basic_set_sort_constraints(__isl_take isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_remove_unknown_divs(__isl_take isl_basic_set *bset)
__isl_give isl_set * isl_set_product(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_set * isl_set_upper_bound_si(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, int value)
__isl_give isl_id * isl_map_get_tuple_id(__isl_keep isl_map *map, enum isl_dim_type type)
__isl_give isl_set * isl_set_fix_dim_si(__isl_take isl_set *set, unsigned dim, int value)
isl_bool isl_map_has_tuple_name(__isl_keep isl_map *map, enum isl_dim_type type)
static __isl_give isl_set * isl_basic_set_lexmin_compute_divs(__isl_take isl_basic_set *bset)
__isl_give isl_map * isl_map_lower_bound_val(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, __isl_take isl_val *value)
__isl_give isl_basic_set * isl_basic_map_range(__isl_take isl_basic_map *bmap)
static isl_bool div_may_involve_output(__isl_keep isl_basic_map *bmap, int div)
static unsigned map_offset(__isl_keep isl_map *map, enum isl_dim_type type)
__isl_give isl_basic_map * isl_basic_map_domain_product(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
static static isl_stat isl_basic_map_check_equal_params(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
__isl_give isl_basic_set * isl_basic_map_deltas(__isl_take isl_basic_map *bmap)
isl_bool isl_basic_set_is_params(__isl_keep isl_basic_set *bset)
isl_bool isl_map_is_product(__isl_keep isl_map *map)
__isl_give isl_set * isl_set_flatten(__isl_take isl_set *set)
__isl_give isl_basic_map * isl_basic_map_alloc_space(__isl_take isl_space *space, unsigned extra, unsigned n_eq, unsigned n_ineq)
__isl_give isl_pw_aff * isl_set_dim_max(__isl_take isl_set *set, int pos)
isl_bool isl_set_has_tuple_name(__isl_keep isl_set *set)
static __isl_give isl_aff * isl_aff_alloc_vec_prune(__isl_take isl_local_space *ls, __isl_take isl_vec *v)
__isl_give isl_basic_map * isl_basic_map_universe(__isl_take isl_space *space)
__isl_give isl_map * isl_map_set_range_tuple_id(__isl_take isl_map *map, __isl_take isl_id *id)
static isl_bool has_any_bound(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos, isl_bool(*fn)(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos))
#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)
__isl_give isl_basic_map * isl_basic_map_remove_duplicate_constraints(__isl_take isl_basic_map *bmap, int *progress, int detect_divs)
__isl_give isl_basic_map * isl_basic_map_eliminate_vars(__isl_take isl_basic_map *bmap, unsigned pos, unsigned n)
__isl_give isl_basic_map * isl_basic_map_simplify(__isl_take isl_basic_map *bmap)
#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_stat isl_map_align_params_set(__isl_keep isl_map **map, __isl_keep isl_set **set)
__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_REDUCED_COEFFICIENTS
#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
isl_stat isl_map_check_equal_space(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
#define ISL_BASIC_SET_EMPTY
__isl_give isl_basic_map * isl_basic_map_drop_redundant_divs(__isl_take isl_basic_map *bmap)
#define ISL_SET_NORMALIZED
#define ISL_BASIC_SET_SORTED
#define ISL_BASIC_MAP_NO_IMPLICIT
isl_stat isl_map_check_named_params(__isl_keep isl_map *map)
#define ISL_BASIC_MAP_NORMALIZED_DIVS
__isl_give isl_basic_map * isl_basic_map_mark_final(__isl_take isl_basic_map *bmap)
#define ISL_MAP_NORMALIZED
__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_basic_map * isl_basic_map_drop_unrelated_constraints(__isl_take isl_basic_map *bmap, __isl_take int *group)
__isl_give isl_set * isl_set_preimage(__isl_take isl_set *set, __isl_take isl_mat *mat)
isl_stat isl_basic_map_check_range(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
#define ISL_BASIC_MAP_FINAL
__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_sub_transform(isl_int **row, unsigned n_row, unsigned first_col, __isl_take isl_mat *mat)
__isl_give isl_set * isl_morph_set(__isl_take isl_morph *morph, __isl_take isl_set *set)
__isl_give isl_morph * isl_morph_inverse(__isl_take isl_morph *morph)
__isl_give isl_morph * isl_basic_set_variable_compression(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
__isl_give isl_morph * isl_basic_set_parameter_compression(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_morph_basic_set(__isl_take isl_morph *morph, __isl_take isl_basic_set *bset)
__isl_give isl_morph * isl_morph_copy(__isl_keep isl_morph *morph)
static struct isl_arg_choice bound[]
__isl_give isl_printer * isl_printer_set_dump(__isl_take isl_printer *p, int dump)
__isl_null isl_reordering * isl_reordering_free(__isl_take isl_reordering *exp)
__isl_give isl_reordering * isl_parameter_alignment_reordering(__isl_keep isl_space *alignee, __isl_keep isl_space *aligner)
__isl_give isl_reordering * isl_reordering_unbind_params_insert_domain(__isl_keep isl_space *space, __isl_keep isl_multi_id *tuple)
__isl_give isl_space * isl_reordering_get_space(__isl_keep isl_reordering *r)
__isl_give isl_vec * isl_basic_set_sample_vec(__isl_take isl_basic_set *bset)
int isl_seq_last_non_zero(isl_int *p, unsigned len)
void isl_seq_inner_product(isl_int *p1, isl_int *p2, unsigned len, isl_int *prod)
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_gcd(isl_int *p, unsigned len, isl_int *gcd)
void isl_seq_clr(isl_int *p, 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)
int isl_seq_any_non_zero(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)
isl_stat isl_space_check_is_set(__isl_keep isl_space *space)
isl_size isl_space_wrapped_dim(__isl_keep isl_space *space, enum isl_dim_type outer, enum isl_dim_type inner)
__isl_give isl_space * isl_space_flatten(__isl_take isl_space *space)
isl_size isl_space_offset(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_give isl_space * isl_space_bind_set(__isl_take isl_space *space, __isl_keep isl_multi_id *tuple)
__isl_give isl_space * isl_space_cow(__isl_take isl_space *space)
isl_bool isl_space_has_named_params(__isl_keep isl_space *space)
static isl_bool match(__isl_keep isl_space *space1, enum isl_dim_type type1, __isl_keep isl_space *space2, enum isl_dim_type type2)
__isl_give isl_space * isl_space_reset(__isl_take isl_space *space, enum isl_dim_type type)
__isl_give isl_space * isl_space_bind_map_domain(__isl_take isl_space *space, __isl_keep isl_multi_id *tuple)
__isl_give isl_space * isl_space_lift(__isl_take isl_space *space, unsigned n_local)
__isl_give isl_space * isl_space_reverse_wrapped(__isl_take isl_space *space, enum isl_dim_type type)
__isl_give isl_space * isl_space_copy_ids_if_unset(__isl_take isl_space *dst, enum isl_dim_type dst_type, __isl_keep isl_space *src, enum isl_dim_type src_type)
isl_bool isl_space_has_equal_ids(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
isl_stat isl_space_check_range_is_wrapping(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_underlying(__isl_take isl_space *space, unsigned n_div)
isl_stat isl_space_check_domain_tuples(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_replace_params(__isl_take isl_space *dst, __isl_keep isl_space *src)
isl_stat isl_space_check_is_wrapping(__isl_keep isl_space *space)
isl_bool isl_space_may_be_set(__isl_keep isl_space *space)
isl_stat isl_space_check_equal_tuples(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
isl_bool isl_space_is_named_or_nested(__isl_keep isl_space *space, enum isl_dim_type type)
isl_stat isl_space_check_domain_is_wrapping(__isl_keep isl_space *space)
int isl_space_cmp(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
isl_stat isl_space_check_range(__isl_keep isl_space *space, enum isl_dim_type type, unsigned first, unsigned n)
void isl_tab_free(struct isl_tab *tab)
struct isl_tab_undo * isl_tab_snap(struct isl_tab *tab)
isl_stat isl_tab_add_ineq(struct isl_tab *tab, isl_int *ineq)
__isl_give struct isl_tab * isl_tab_from_basic_set(__isl_keep isl_basic_set *bset, int track)
isl_stat isl_tab_rollback(struct isl_tab *tab, struct isl_tab_undo *snap)
static __isl_give isl_map * basic_map_partial_lexopt(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, __isl_give isl_set **empty, int max)
static __isl_give isl_pw_multi_aff * basic_map_partial_lexopt_pw_multi_aff(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, __isl_give isl_set **empty, int max)
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_val * isl_val_int_from_isl_int(isl_ctx *ctx, isl_int n)
__isl_give isl_val * isl_val_alloc(isl_ctx *ctx)
__isl_give isl_aff * isl_local_space_get_div(__isl_keep isl_local_space *ls, int pos)
__isl_give isl_local_space * isl_local_space_from_space(__isl_take isl_space *space)
__isl_give isl_local_space * isl_local_space_drop_dims(__isl_take isl_local_space *ls, enum isl_dim_type type, unsigned first, unsigned n)
isl_size isl_local_space_dim(__isl_keep isl_local_space *ls, enum isl_dim_type type)
__isl_null isl_local_space * isl_local_space_free(__isl_take isl_local_space *ls)
__isl_give isl_local_space * isl_local_space_copy(__isl_keep isl_local_space *ls)
__isl_give isl_local_space * isl_local_space_wrap(__isl_take isl_local_space *ls)
__isl_give isl_space * isl_local_space_get_space(__isl_keep isl_local_space *ls)
__isl_give isl_basic_map * isl_basic_map_drop_constraints_not_involving_dims(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__isl_export __isl_give isl_map * isl_map_domain_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_basic_map * isl_basic_map_deltas_map(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_zip(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_drop_unused_params(__isl_take isl_basic_map *bmap)
__isl_give isl_printer * isl_printer_print_basic_map(__isl_take isl_printer *printer, __isl_keep isl_basic_map *bmap)
isl_bool isl_map_has_equal_space(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__isl_export __isl_give isl_map * isl_map_drop_unused_params(__isl_take isl_map *map)
__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_null isl_basic_map * isl_basic_map_free(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_domain_map(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_range_product(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
__isl_give isl_basic_map * isl_basic_map_eliminate(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__isl_export isl_bool isl_set_is_wrapping(__isl_keep isl_set *set)
isl_bool isl_map_can_range_curry(__isl_keep isl_map *map)
isl_bool isl_map_can_uncurry(__isl_keep isl_map *map)
__isl_export __isl_give isl_basic_map * isl_basic_map_reverse(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_remove_redundancies(__isl_take isl_basic_map *bmap)
isl_bool isl_map_can_curry(__isl_keep isl_map *map)
__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_give isl_basic_map * isl_basic_map_range_map(__isl_take isl_basic_map *bmap)
__isl_export __isl_give isl_map * isl_map_range_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_export __isl_give isl_map * isl_map_project_out_all_params(__isl_take isl_map *map)
__isl_export __isl_give isl_basic_map * isl_basic_map_intersect_range(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_copy(__isl_keep isl_basic_map *bmap)
__isl_overload __isl_give isl_map * isl_map_project_out_param_id_list(__isl_take isl_map *map, __isl_take isl_id_list *list)
__isl_export __isl_give isl_map * isl_basic_map_lexmin(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_map * isl_basic_map_product(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
__isl_give isl_basic_map * isl_basic_map_domain_product(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
__isl_overload __isl_give isl_map * isl_map_project_out_param_id(__isl_take isl_map *map, __isl_take isl_id *id)
__isl_export isl_bool isl_map_is_subset(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__isl_give isl_mat * isl_mat_copy(__isl_keep 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_printer * isl_printer_set_indent(__isl_take isl_printer *p, int indent)
__isl_null isl_printer * isl_printer_free(__isl_take isl_printer *printer)
__isl_give isl_printer * isl_printer_to_file(isl_ctx *ctx, FILE *file)
__isl_give isl_printer * isl_printer_start_line(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_end_line(__isl_take isl_printer *p)
__isl_give isl_set * isl_set_copy(__isl_keep isl_set *set)
__isl_give isl_printer * isl_printer_print_basic_set(__isl_take isl_printer *printer, __isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
static __isl_give isl_set * set_from_map(__isl_take isl_map *map)
isl_bool isl_space_has_equal_params(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_set_tuple_id(__isl_take isl_space *space, enum isl_dim_type type, __isl_take isl_id *id)
__isl_null isl_space * isl_space_free(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_reverse(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_flatten_range(__isl_take isl_space *space)
__isl_give isl_space * isl_space_range_factor_range(__isl_take isl_space *space)
__isl_give isl_space * isl_space_range_map(__isl_take isl_space *space)
__isl_give isl_space * isl_space_from_range(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_params(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_product(__isl_take isl_space *left, __isl_take isl_space *right)
__isl_export __isl_give isl_space * isl_space_curry(__isl_take isl_space *space)
__isl_give isl_space * isl_space_domain_wrapped_range(__isl_take isl_space *space)
isl_bool isl_space_has_tuple_id(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_give isl_space * isl_space_insert_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, unsigned n)
isl_ctx * isl_space_get_ctx(__isl_keep isl_space *space)
isl_bool isl_space_range_is_wrapping(__isl_keep isl_space *space)
__isl_give isl_id * isl_space_get_tuple_id(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_give isl_space * isl_space_set_from_params(__isl_take isl_space *space)
__isl_give isl_space * isl_space_factor_domain(__isl_take isl_space *space)
__isl_give isl_space * isl_space_copy(__isl_keep isl_space *space)
isl_bool isl_space_has_dim_name(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
__isl_give isl_space * isl_space_range_curry(__isl_take isl_space *space)
__isl_give isl_space * isl_space_map_from_domain_and_range(__isl_take isl_space *domain, __isl_take isl_space *range)
__isl_give isl_space * isl_space_set_dim_id(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id)
__isl_give isl_space * isl_space_set_tuple_name(__isl_take isl_space *space, enum isl_dim_type type, const char *s)
__isl_keep const char * isl_space_get_dim_name(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
__isl_export __isl_give isl_space * isl_space_wrap(__isl_take isl_space *space)
__isl_export isl_bool isl_space_is_wrapping(__isl_keep isl_space *space)
__isl_export __isl_give isl_space * isl_space_range_reverse(__isl_take isl_space *space)
__isl_give isl_space * isl_space_join(__isl_take isl_space *left, __isl_take isl_space *right)
__isl_give isl_space * isl_space_domain_factor_domain(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_range(__isl_take isl_space *space)
isl_bool isl_space_is_params(__isl_keep isl_space *space)
__isl_keep const char * isl_space_get_tuple_name(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_export __isl_give isl_space * isl_space_unwrap(__isl_take isl_space *space)
__isl_give isl_space * isl_space_set_alloc(isl_ctx *ctx, unsigned nparam, unsigned dim)
__isl_export __isl_give isl_space * isl_space_uncurry(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_flatten_domain(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_map_from_set(__isl_take isl_space *space)
isl_bool isl_space_has_tuple_name(__isl_keep isl_space *space, enum isl_dim_type type)
isl_bool isl_space_can_curry(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_domain_product(__isl_take isl_space *left, __isl_take isl_space *right)
int isl_space_find_dim_by_id(__isl_keep isl_space *space, enum isl_dim_type type, __isl_keep isl_id *id)
__isl_give isl_space * isl_space_set_dim_name(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, __isl_keep const char *name)
isl_bool isl_space_has_dim_id(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
__isl_export isl_bool isl_space_is_equal(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_range_factor_domain(__isl_take isl_space *space)
__isl_give isl_space * isl_space_drop_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned num)
__isl_give isl_id * isl_space_get_dim_id(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
__isl_give isl_space * isl_space_range_product(__isl_take isl_space *left, __isl_take isl_space *right)
__isl_give isl_space * isl_space_domain_map(__isl_take isl_space *space)
__isl_give isl_space * isl_space_zip(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_domain_reverse(__isl_take isl_space *space)
isl_size isl_space_dim(__isl_keep isl_space *space, enum isl_dim_type type)
isl_bool isl_space_is_set(__isl_keep isl_space *space)
__isl_export __isl_give isl_space * isl_space_drop_all_params(__isl_take isl_space *space)
isl_bool isl_space_tuple_is_equal(__isl_keep isl_space *space1, enum isl_dim_type type1, __isl_keep isl_space *space2, enum isl_dim_type type2)
isl_bool isl_space_can_zip(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_domain_factor_range(__isl_take isl_space *space)
isl_bool isl_space_has_equal_tuples(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
isl_bool isl_space_can_uncurry(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_reset_tuple_id(__isl_take isl_space *space, enum isl_dim_type type)
__isl_export __isl_give isl_space * isl_space_wrapped_reverse(__isl_take isl_space *space)
__isl_give isl_space * isl_space_factor_range(__isl_take isl_space *space)
__isl_give isl_space * isl_space_alloc(isl_ctx *ctx, unsigned nparam, unsigned n_in, unsigned n_out)
__isl_give isl_space * isl_space_reset_user(__isl_take isl_space *space)
isl_bool isl_space_domain_is_wrapping(__isl_keep isl_space *space)
isl_bool isl_space_can_range_curry(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_range_wrapped_range(__isl_take isl_space *space)
__isl_give isl_space * isl_space_move_dims(__isl_take isl_space *space, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
int isl_space_find_dim_by_name(__isl_keep isl_space *space, enum isl_dim_type type, const char *name)
isl_bool isl_space_is_product(__isl_keep isl_space *space)
__isl_export __isl_give isl_space * isl_space_domain(__isl_take isl_space *space)
enum isl_dim_type preserve_type
__isl_give isl_space *(* other_factor)(__isl_take isl_space *space)
__isl_give isl_map *(* product)(__isl_take isl_map *factor, __isl_take isl_map *other)
struct isl_basic_map * p[1]
static Signature map_product
static Signature set_to_map
__isl_give isl_val * isl_val_copy(__isl_keep isl_val *v)
__isl_give isl_val * isl_val_sub_ui(__isl_take isl_val *v1, unsigned long v2)
isl_ctx * isl_val_get_ctx(__isl_keep isl_val *val)
__isl_export __isl_give isl_val * isl_val_nan(isl_ctx *ctx)
__isl_null isl_val * isl_val_free(__isl_take isl_val *v)
__isl_export __isl_give isl_val * isl_val_neg(__isl_take isl_val *v)
__isl_export isl_bool isl_val_is_int(__isl_keep isl_val *v)
struct isl_multi_val isl_multi_val
__isl_null isl_vec * isl_vec_free(__isl_take isl_vec *vec)
__isl_give isl_vec * isl_vec_copy(__isl_keep isl_vec *vec)
__isl_give isl_vec * isl_vec_drop_els(__isl_take isl_vec *vec, unsigned pos, unsigned n)
__isl_give isl_vec * isl_vec_alloc(isl_ctx *ctx, unsigned size)