29#include <isl_config.h>
32#define EL_BASE qpolynomial
37#define EL_BASE pw_qpolynomial
46 case isl_dim_out:
return space->nparam + space->n_in;
98 if (poly1->var != poly2->var)
99 return poly1->var - poly2->var;
120 if (rec1->
n != rec2->
n)
121 return rec1->
n - rec2->
n;
123 for (i = 0; i < rec1->
n; ++i) {
140 if (is_cst1 < 0 || !poly2)
144 if (poly1->var != poly2->var)
163 if (rec1->
n != rec2->
n)
166 for (i = 0; i < rec1->
n; ++i) {
181 if (is_cst < 0 || !is_cst)
197 if (is_cst < 0 || !is_cst)
213 if (is_cst < 0 || !is_cst)
229 if (is_cst < 0 || !is_cst)
245 if (is_cst < 0 || !is_cst)
262 if (is_cst < 0 || !is_cst)
279 if (is_cst < 0 || !is_cst)
446 return qp ? qp->dim->ctx : NULL;
454 return qp ? qp->dim : NULL;
466#define TYPE isl_qpolynomial
468#define PEEK_SPACE peek_domain_space
515 return qp->div->n_row;
635 for (i = 0; i < rec->n; ++i)
680 for (i = 0; i < rec->
n; ++i) {
755 if (!poly1 || !poly2)
816 if (!poly1 || !poly2)
851 if (poly1->var < poly2->var)
854 if (poly2->var < poly1->var) {
859 if (is_infty >= 0 && !is_infty)
888 if (rec1->
n < rec2->
n)
896 for (i = rec2->
n - 1; i >= 0; --i) {
903 if (i != rec1->
n - 1)
916 else if (rec1->
n == 1)
1010 for (i = 0; i < rec->
n; ++i) {
1069 for (i = 0; i < rec->
n; ++i) {
1088 if (!poly1 || !poly2)
1120 size = rec1->
n + rec2->
n - 1;
1125 for (i = 0; i < rec1->
n; ++i) {
1132 for (; i <
size; ++i) {
1138 for (i = 0; i < rec1->
n; ++i) {
1139 for (j = 1; j < rec2->
n; ++j) {
1163 isl_bool is_zero, is_nan, is_one, is_cst;
1165 if (!poly1 || !poly2)
1216 if (poly1->var < poly2->var)
1219 if (poly2->var < poly1->var) {
1225 if (is_infty >= 0 && !is_infty)
1240 for (i = 0; i < rec->
n; ++i) {
1277 while (
power >>= 1) {
1299 "domain of polynomial should be a set",
goto error);
1389 for (i = 0; i < 1 +
power; ++i) {
1429 for (i = rec->
n - 2; i >= 0; --i) {
1449 isl_assert(div1->ctx, div1->n_row >= div2->n_row &&
1450 div1->n_col >= div2->n_col,
1453 if (div1->n_row == div2->n_row)
1456 n_row = div1->n_row;
1457 n_col = div1->n_col;
1458 div1->n_row = div2->n_row;
1459 div1->n_col = div2->n_col;
1463 div1->n_row = n_row;
1464 div1->n_col = n_col;
1504 int *
pos = NULL, *
at = NULL;
1505 int *reordering = NULL;
1510 if (qp->div->n_row <= 1)
1521 len = qp->div->n_col - 2;
1523 if (!array || !
pos || !
at || !reordering)
1526 for (i = 0; i < qp->div->n_row; ++i) {
1527 array[i].
div = qp->div;
1536 for (i = 0; i < div_pos; ++i)
1539 for (i = 0; i < qp->div->n_row; ++i) {
1540 if (
pos[array[i].
row] == i)
1544 at[
pos[array[i].row]] =
at[i];
1545 at[i] = array[i].row;
1546 pos[array[i].row] = i;
1550 for (i = 0; i < len - div_pos; ++i) {
1553 qp->div->row[i - skip], qp->div->n_col)) {
1556 2 + div_pos + i - skip);
1558 2 + div_pos + i - skip, 1);
1561 reordering[div_pos + array[i].
row] = div_pos + i - skip;
1564 qp->poly =
reorder(qp->poly, reordering);
1566 if (!qp->poly || !qp->div)
1597 if (
poly->var < first)
1600 if (exp[
poly->var - first] ==
poly->var - first)
1607 poly->var = exp[
poly->var - first] + first;
1613 for (i = 0; i < rec->
n; ++i) {
1614 rec->
p[i] =
expand(rec->
p[i], exp, first);
1641 isl_assert(qp1->div->ctx, qp1->div->n_row >= qp2->div->n_row &&
1642 qp1->div->n_col >= qp2->div->n_col,
goto error);
1644 n_div1 = qp1->div->n_row;
1645 n_div2 = qp2->div->n_row;
1648 if ((n_div1 && !exp1) || (n_div2 && !exp2))
1663 if (!qp1->poly || !qp2->poly)
1670 return fn(qp1, qp2);
1687 if (isl_qpolynomial_check_equal_space(qp1, qp2) < 0)
1690 if (qp1->div->n_row < qp2->div->n_row)
1800 "expecting rational factor",
goto error);
1842 "expecting rational factor",
goto error);
1845 "cannot scale down by zero",
goto error);
1861 if (isl_qpolynomial_check_equal_space(qp1, qp2) < 0)
1864 if (qp1->div->n_row < qp2->div->n_row)
1916 for (i = 0; i <
pwqp->n; ++i) {
1992 if (is_cst < 0 || !is_cst)
2066 if (is_cst < 0 || !is_cst)
2077 if (qp->div->n_row > 0)
2111 if (
poly->var < 0) {
2236 for (i = 0; i < rec->
n; ++i)
2300 if (
poly->var < first)
2309 if (
poly->var >= first +
n)
2315 for (i = rec->
n - 2; i >= 0; --i) {
2340 for (i = 0; i < len - 1; ++i) {
2361 unsigned total = qp->div->n_col - 2;
2407 for (i = 0; i < div_pos + div; ++i)
2409 for (i = div_pos + div + 1; i < div_pos + qp->div->n_row; ++i)
2410 reordering[i] = i - 1;
2413 qp->poly =
reorder(qp->poly, reordering);
2416 if (!qp->poly || !qp->div)
2441 for (i = 0; qp && i < qp->div->n_row; ++i) {
2444 for (j = i + 1; j < qp->div->n_row; ++j) {
2448 qp->div->ctx->one, qp->div->row[j] + 1,
2449 qp->div->row[j][2 + div_pos + i],
2450 qp->div->row[i] + 1, 1 + div_pos + i);
2455 qp->div->row[i][0], qp->div->n_col - 1);
2477 unsigned total = qp->div->n_col - qp->div->n_row - 2;
2480 for (i = 0; i < 1 +
total + div; ++i) {
2482 isl_int_lt(qp->div->row[div][1 + i], qp->div->row[div][0]))
2484 isl_int_fdiv_q(v, qp->div->row[div][1 + i], qp->div->row[div][0]);
2486 qp->div->row[div][1 + i], qp->div->row[div][0]);
2488 for (j = div + 1; j < qp->div->n_row; ++j) {
2492 v, qp->div->row[j][2 +
total + div]);
2510 for (i = div->n_col - 1; i >= 1; --i) {
2533 unsigned total = qp->div->n_col - qp->div->n_row - 2;
2536 qp->div->row[div] + 1, qp->div->n_col - 1);
2539 qp->div->row[div][1], qp->div->row[div][0]);
2542 qp->div->ctx->negone, 2 +
total + div);
2571 if (
total < 0 || n_div < 0)
2576 for (i = 0; i < n_div; ++i)
2579 for (i = 0; i < qp->div->n_row; ++i) {
2593 for (i = 0; i < n_div; ++i)
2597 for (i = 0; i < n_div; ++i)
2610 if (new_n_div < n_div)
2674 active[
poly->var] = 1;
2677 for (i = 0; i < rec->
n; ++i)
2692 if (d < 0 || !active)
2695 for (i = 0; i < d; ++i)
2696 for (j = 0; j < qp->div->n_row; ++j) {
2707#define TYPE isl_qpolynomial
2726 if (isl_qpolynomial_check_range(qp,
type, first,
n) < 0)
2743 for (i = 0; i <
n; ++i)
2744 if (active[first + i]) {
2768 int *reordering = NULL;
2775 if (qp->div->n_row == 0)
2781 len = qp->div->n_col - 2;
2790 for (i = qp->div->n_row - 1; i >= 0; --i) {
2791 if (!active[div_pos + i]) {
2795 for (j = 0; j < i; ++j) {
2798 active[div_pos + j] = 1;
2812 for (i = 0; i < div_pos; ++i)
2816 n_div = qp->div->n_row;
2817 for (i = 0; i < n_div; ++i) {
2818 if (!active[div_pos + i]) {
2821 2 + div_pos + i - skip, 1);
2824 reordering[div_pos + i] = div_pos + i - skip;
2827 qp->poly =
reorder(qp->poly, reordering);
2829 if (!qp->poly || !qp->div)
2844 unsigned first,
unsigned n)
2851 if (
n == 0 ||
poly->var < 0 ||
poly->var < first)
2853 if (
poly->var < first +
n) {
2865 for (i = 0; i < rec->
n; ++i) {
2886 "cannot set name of output/set dimension",
2908 "cannot drop output/set dimension",
2910 if (isl_qpolynomial_check_range(qp,
type, first,
n) < 0)
2964 "polynomial involves some of the domain dimensions",
2984 if (eq->n_eq == 0) {
2999 for (i = 0; i < eq->n_eq; ++i) {
3001 if (j < 0 || j == 0 || j >=
total)
3004 for (k = 0; k < qp->div->n_row; ++k) {
3008 &qp->div->row[k][0]);
3018 eq->eq[i], denom,
total);
3046 if (qp->div->n_row > 0)
3093#define isl_qpolynomial_involves_nan isl_qpolynomial_is_nan
3096#define PW isl_pw_qpolynomial
3098#define BASE qpolynomial
3100#define EL_IS_ZERO is_zero
3104#define IS_ZERO is_zero
3107#undef DEFAULT_IS_ZERO
3108#define DEFAULT_IS_ZERO 1
3126#define BASE pw_qpolynomial
3151 return isl_pw_qpolynomial_union_add_(pwqp1, pwqp2);
3161 if (!pwqp1 || !pwqp2)
3187 n = pwqp1->n * pwqp2->n;
3190 for (i = 0; i < pwqp1->n; ++i) {
3191 for (j = 0; j < pwqp2->n; ++j) {
3245 vec->el[1 +
poly->var], vec->el[0]);
3250 for (i = rec->
n - 2; i >= 0; --i) {
3324 unsigned first,
unsigned n)
3334 "cannot insert output/set dimensions",
3336 if (isl_qpolynomial_check_range(qp,
type, first, 0) < 0)
3346 g_pos =
pos(qp->dim,
type) + first;
3352 total = qp->div->n_col - 2;
3353 if (
total > g_pos) {
3358 for (i = 0; i <
total - g_pos; ++i)
3360 qp->poly =
expand(qp->poly, exp, g_pos);
3389 unsigned len,
unsigned dst,
unsigned src,
unsigned n)
3399 for (i = 0; i < dst; ++i)
3401 for (i = 0; i <
n; ++i)
3402 reordering[src + i] = dst + i;
3403 for (i = 0; i < src - dst; ++i)
3404 reordering[dst + i] = dst +
n + i;
3405 for (i = 0; i < len - src -
n; ++i)
3406 reordering[src +
n + i] = src +
n + i;
3408 for (i = 0; i < src; ++i)
3410 for (i = 0; i <
n; ++i)
3411 reordering[src + i] = dst + i;
3412 for (i = 0; i < dst - src; ++i)
3413 reordering[src +
n + i] = src + i;
3414 for (i = 0; i < len - dst -
n; ++i)
3415 reordering[dst +
n + i] = dst +
n + i;
3435 "cannot move output/set dimension",
3437 if (isl_qpolynomial_check_range(qp, src_type, src_pos,
n) < 0)
3453 g_dst_pos =
pos(qp->dim, dst_type) + dst_pos;
3454 g_src_pos =
pos(qp->dim, src_type) + src_pos;
3455 if (dst_type > src_type)
3466 qp->div->n_col - 2, g_dst_pos, g_src_pos,
n);
3470 qp->poly =
reorder(qp->poly, reordering);
3546 for (i = 0; i < pwaff->n; ++i) {
3589 "cannot substitute output/set dimension",
3591 if (isl_qpolynomial_check_range(qp,
type, first,
n) < 0)
3595 for (i = 0; i <
n; ++i)
3599 for (i = 0; i <
n; ++i)
3600 if (isl_qpolynomial_check_equal_space(qp, subs[i]) < 0)
3603 isl_assert(qp->dim->ctx, qp->div->n_row == 0,
goto error);
3604 for (i = 0; i <
n; ++i)
3605 isl_assert(qp->dim->ctx, subs[i]->div->n_row == 0,
goto error);
3612 for (i = 0; i <
n; ++i)
3613 polys[i] = subs[i]->
poly;
3644 if (qp->div->n_row == 0)
3675 if (is_cst ||
poly->var < first)
3682 for (i = 0; i < rec->
n; ++i) {
3691 if (
poly->var < last)
3718 unsigned pos,
int deg)
3727 if (is_cst ||
poly->var <
pos) {
3751 for (i = 0; i < rec->
n; ++i) {
3781 "output/set dimension does not have a coefficient",
3783 if (isl_qpolynomial_check_range(qp,
type, t_pos, 1) < 0)
3787 g_pos =
pos(qp->dim,
type) + t_pos;
3791 qp->div->n_row,
poly);
3809 int target,
int first,
int last)
3825 if (is_cst ||
poly->var < first) {
3842 for (i = 0; i < rec->
n; ++i) {
3849 poly->var < last ? deg + i : i, target,
3907 sizeof(
struct isl_term) + (
n - 1) *
sizeof(
int));
3950 for (i = 0; i <
total; ++i)
3951 dup->pow[i] = term->pow[i];
3972 if (--term->ref > 0)
3999 return dim + term->div->n_row;
4008 return term ? term->dim : NULL;
4035 return term ? term->dim->ctx : NULL;
4057#define TYPE isl_term
4066 if (isl_term_check_range(term,
type,
pos, 1) < 0)
4105 if (is_zero < 0 || !term)
4113 if (is_bad >= 0 && !is_bad)
4115 if (is_bad >= 0 && !is_bad)
4117 if (is_cst < 0 || is_bad < 0)
4121 "cannot handle NaN/infty polynomial",
4143 for (i = 0; i < rec->
n; ++i) {
4147 term->pow[
poly->var] = i;
4155 term->pow[
poly->var] = 0;
4196 for (i = 0; i <
n; ++i) {
4204 term->div->n_row,
poly);
4241 extra = d_set - d_qp;
4243 if (d_set < 0 || d_qp < 0 ||
total < 0)
4245 if (qp->div->n_row) {
4251 for (i = 0; i < qp->div->n_row; ++i)
4261 for (i = 0; i < qp->div->n_row; ++i)
4294 for (i = 0; i < d; ++i)
4305 if (nparam < 0 || nvar < 0)
4307 for (i = 0; i < nparam; ++i) {
4313 for (i = 0; i < nvar; ++i) {
4314 if (active[nparam + i])
4345 }
else if (data->
max) {
4409 n_sub = morph->inv->n_row - 1;
4410 if (morph->inv->n_row != morph->inv->n_col)
4416 for (i = 0; 1 + i < morph->inv->n_row; ++i)
4418 morph->inv->row[0][0], morph->inv->n_col);
4419 if (morph->inv->n_row != morph->inv->n_col)
4421 subs[morph->inv->n_row - 1 + i] =
4426 for (i = 0; i < n_sub; ++i)
4454 return isl_union_pw_qpolynomial_match_bin_op(upwqp1, upwqp2,
4500 if (equal_params < 0)
4502 if (!equal_params) {
4540 if (
total < 0 || !qp)
4556 isl_int_add(bset->ineq[k][0], bset->ineq[k][0], qp->div->row[div][0]);
4590 for (i = div + 1; i < qp->div->n_row; ++i) {
4594 qp->div->row[i][2 + div_pos + div], v);
4620 if (
set_div(set_i, qp_i, div, min, data) < 0)
4653 if (qp->div->n_row == 0) {
4665 for (i = 0; i < qp->div->n_row; ++i) {
4669 qp->div->n_row) != -1)
4673 set->ctx->one, &min, NULL, NULL);
4681 set->ctx->one, &max, NULL, NULL);
4695 if (i < qp->div->n_row) {
4799 if (n2 < 0 || n_eq < 0)
4801 else if (n2 < n1 || n_eq > 0)
4845 if (
f->n_group == 0) {
4905 if (bset->n_eq == 0)
4937 if (qp->div->n_row == 0)
4944 for (i = qp->div->n_row - 1; i >= 0; --i) {
4947 qp->div->row[i][1], qp->div->row[i][0]);
4949 qp->div->row[i][1], 1);
4952 qp->div->row[i][0], qp->div->n_col - 1);
4979 for (i = 0; i <
pwqp->n; ++i) {
5024 for (i = 0; i < qp->div->n_row; ++i) {
5025 isl_int *row = qp->div->row[i];
5034 for (j = 0; j < div_pos; ++j) {
5043 for (j = 0; j < i; ++j) {
5047 row[2 + div_pos + j], row[0]);
5049 row[0], v->
el[1 + div_pos + j]);
5051 for (j = i + 1; j < qp->div->n_row; ++j) {
5055 qp->div->ctx->one, qp->div->row[j] + 1,
5056 qp->div->row[j][2 + div_pos + i], v->
el,
5061 qp->div->ctx->one, v->
size);
5091 int *signs,
void *
user)
5141 for (i = 0; i <
pwqp->n; ++i) {
5142 if (
pwqp->p[i].qp->div->n_row == 0) {
5176 return isl_union_pw_qpolynomial_transform_inplace(upwqp,
5198 "input quasi-polynomial not affine",
goto error);
5207 for (i = 0; i < n_div; ++i) {
isl_ctx * isl_aff_get_ctx(__isl_keep isl_aff *aff)
__isl_null isl_aff * isl_aff_free(__isl_take isl_aff *aff)
__isl_null isl_pw_aff * isl_pw_aff_free(__isl_take isl_pw_aff *pwaff)
__isl_export __isl_give isl_space * isl_pw_aff_get_space(__isl_keep isl_pw_aff *pwaff)
__isl_give isl_aff * isl_aff_copy(__isl_keep isl_aff *aff)
__isl_give isl_space * isl_aff_get_domain_space(__isl_keep isl_aff *aff)
__isl_give isl_aff * isl_constraint_get_bound(__isl_keep isl_constraint *constraint, enum isl_dim_type type, int pos)
__isl_null isl_constraint * isl_constraint_free(__isl_take isl_constraint *c)
isl_size isl_basic_set_n_constraint(__isl_keep isl_basic_set *bset)
#define isl_calloc_type(ctx, type)
#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_calloc(ctx, type, size)
#define isl_alloc_type(ctx, type)
void isl_ctx_ref(struct isl_ctx *ctx)
__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)
void GMPZAPI() gcd(mp_int rop, mp_int op1, mp_int op2)
int GMPQAPI() cmp(mp_rat op1, mp_rat op2)
__isl_give isl_aff * isl_aff_normalize(__isl_take isl_aff *aff)
__isl_give isl_aff * isl_aff_alloc(__isl_take isl_local_space *ls)
static __isl_give isl_ast_expr * var(struct isl_ast_add_term_data *data, enum isl_dim_type type, int pos)
__isl_give isl_factorizer * isl_basic_set_factorizer(__isl_keep isl_basic_set *bset)
__isl_give isl_bool isl_factorizer_every_factor_basic_set(__isl_keep isl_factorizer *f, isl_bool(*test)(__isl_keep isl_basic_set *bset, void *user), void *user)
__isl_null isl_factorizer * isl_factorizer_free(__isl_take isl_factorizer *f)
#define isl_int_is_nonneg(i)
#define isl_int_is_zero(i)
#define isl_int_is_one(i)
#define isl_int_is_pos(i)
#define isl_int_is_negone(i)
#define isl_int_is_neg(i)
#define isl_int_divexact_ui(r, i, j)
#define isl_int_gcd(r, i, j)
#define isl_int_neg(r, i)
#define isl_int_add_ui(r, i, j)
#define isl_int_add(r, i, j)
#define isl_int_cmp(i, j)
#define isl_int_addmul(r, i, j)
#define isl_int_fdiv_r(r, i, j)
#define isl_int_set(r, i)
#define isl_int_cdiv_q(r, i, j)
#define isl_int_mul_ui(r, i, j)
#define isl_int_lcm(r, i, j)
#define isl_int_divexact(r, i, j)
#define isl_int_mul(r, i, j)
#define isl_int_set_si(r, i)
#define isl_int_sub_ui(r, i, j)
#define isl_int_fdiv_q(r, i, j)
#define isl_int_sub(r, i, j)
#define isl_int_abs(r, i)
#define isl_int_cmp_si(i, si)
#define isl_int_submul(r, i, j)
__isl_give dup(__isl_keep LIST(EL) *list)
__isl_give isl_vec * isl_local_extend_point_vec(__isl_keep isl_local *local, __isl_take isl_vec *v)
__isl_give isl_local * isl_local_reorder(__isl_take isl_local *local, __isl_take isl_reordering *r)
int isl_local_cmp(__isl_keep isl_local *local1, __isl_keep isl_local *local2)
__isl_give isl_mat * isl_merge_divs(__isl_keep isl_mat *div1, __isl_keep isl_mat *div2, int *exp1, int *exp2)
__isl_give isl_set * isl_local_space_lift_set(__isl_take isl_local_space *ls, __isl_take isl_set *set)
__isl_give isl_basic_set * isl_local_space_lift_basic_set(__isl_take isl_local_space *ls, __isl_take isl_basic_set *bset)
__isl_give isl_local_space * isl_local_space_alloc_div(__isl_take isl_space *space, __isl_take isl_mat *div)
enum isl_lp_result isl_set_solve_lp(__isl_keep isl_set *set, int max, isl_int *f, isl_int d, isl_int *opt, isl_int *opt_denom, __isl_give isl_vec **sol)
__isl_give isl_basic_set * isl_basic_set_alloc_space(__isl_take isl_space *space, unsigned extra, unsigned n_eq, unsigned n_ineq)
isl_size isl_basic_set_n_equality(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_add_div_constraints(__isl_take isl_basic_map *bmap, unsigned pos)
unsigned isl_basic_set_offset(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
int isl_basic_map_alloc_div(__isl_keep isl_basic_map *bmap)
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)
int isl_basic_map_alloc_equality(__isl_keep isl_basic_map *bmap)
int isl_basic_set_alloc_inequality(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_alloc_space(__isl_take isl_space *space, unsigned extra, unsigned n_eq, unsigned n_ineq)
__isl_give isl_basic_map * isl_basic_map_finalize(__isl_take isl_basic_map *bmap)
__isl_give isl_mat * isl_mat_cow(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_col_neg(__isl_take isl_mat *mat, int col)
__isl_give isl_mat * isl_mat_diag(isl_ctx *ctx, unsigned n_row, isl_int d)
__isl_give isl_mat * isl_mat_zero(isl_ctx *ctx, unsigned n_row, unsigned n_col)
void isl_mat_col_mul(__isl_keep isl_mat *mat, int dst_col, isl_int f, int src_col)
__isl_give isl_mat * isl_mat_col_addmul(__isl_take isl_mat *mat, int dst_col, isl_int f, int src_col)
isl_stat isl_morph_check_applies(__isl_keep isl_morph *morph, __isl_keep isl_space *space)
__isl_give isl_morph * isl_basic_set_full_compression(__isl_keep isl_basic_set *bset)
__isl_give isl_morph * isl_morph_inverse(__isl_take isl_morph *morph)
__isl_give isl_morph * isl_morph_ran_params(__isl_take isl_morph *morph)
__isl_give isl_morph * isl_morph_dom_params(__isl_take isl_morph *morph)
__isl_null isl_morph * isl_morph_free(__isl_take isl_morph *morph)
__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 __isl_give isl_qpolynomial * with_merged_divs(__isl_give isl_qpolynomial *(*fn)(__isl_take isl_qpolynomial *qp1, __isl_take isl_qpolynomial *qp2), __isl_take isl_qpolynomial *qp1, __isl_take isl_qpolynomial *qp2)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_add(__isl_take isl_pw_qpolynomial *pwqp1, __isl_take isl_pw_qpolynomial *pwqp2)
__isl_give isl_basic_map * isl_basic_map_from_qpolynomial(__isl_take isl_qpolynomial *qp)
isl_bool isl_poly_is_infty(__isl_keep isl_poly *poly)
__isl_give isl_poly_rec * isl_poly_alloc_rec(isl_ctx *ctx, int var, int size)
static isl_stat set_div(__isl_take isl_set *set, __isl_take isl_qpolynomial *qp, int div, isl_int v, struct isl_split_periods_data *data)
__isl_give isl_poly * isl_poly_cst_mul_isl_int(__isl_take isl_poly *poly, isl_int v)
int isl_pw_qpolynomial_is_one(__isl_keep isl_pw_qpolynomial *pwqp)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_mul(__isl_take isl_pw_qpolynomial *pwqp1, __isl_take isl_pw_qpolynomial *pwqp2)
static int div_sort_cmp(const void *p1, const void *p2)
__isl_give isl_qpolynomial * isl_qpolynomial_lift(__isl_take isl_qpolynomial *qp, __isl_take isl_space *space)
__isl_give isl_qpolynomial * isl_qpolynomial_alloc(__isl_take isl_space *space, unsigned n_div, __isl_take isl_poly *poly)
__isl_give isl_union_pw_qpolynomial * isl_union_pw_qpolynomial_to_polynomial(__isl_take isl_union_pw_qpolynomial *upwqp, int sign)
static isl_stat poly_set_active(__isl_keep isl_poly *poly, int *active, int d)
static isl_bool multiplicative_call_factor_pw_qpolynomial(__isl_keep isl_basic_set *bset, void *user)
int isl_poly_update_affine(__isl_keep isl_poly *poly, __isl_keep isl_vec *aff)
static isl_bool isl_qpolynomial_involves_dims(__isl_keep isl_qpolynomial *qp, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_qpolynomial * isl_qpolynomial_neg(__isl_take isl_qpolynomial *qp)
__isl_keep isl_poly_cst * isl_poly_as_cst(__isl_keep isl_poly *poly)
__isl_give isl_poly * isl_poly_sum_cst(__isl_take isl_poly *poly1, __isl_take isl_poly *poly2)
static __isl_give isl_qpolynomial * isl_qpolynomial_substitute_equalities_lifted(__isl_take isl_qpolynomial *qp, __isl_take isl_basic_set *eq)
__isl_give isl_qpolynomial * isl_qpolynomial_from_affine(__isl_take isl_space *space, isl_int *f, isl_int denom)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_split_periods(__isl_take isl_pw_qpolynomial *pwqp, int max_periods)
static int * reordering_move(isl_ctx *ctx, unsigned len, unsigned dst, unsigned src, unsigned n)
__isl_give isl_qpolynomial * isl_qpolynomial_var_on_domain(__isl_take isl_space *domain, enum isl_dim_type type, unsigned pos)
__isl_give isl_qpolynomial * isl_qpolynomial_reset_domain_space(__isl_take isl_qpolynomial *qp, __isl_take isl_space *space)
static __isl_give isl_val * eval_void(__isl_take isl_qpolynomial *qp, __isl_take isl_point *pnt)
__isl_give isl_poly * isl_poly_cow(__isl_take isl_poly *poly)
static __isl_give isl_pw_qpolynomial * compressed_multiplicative_call(__isl_take isl_basic_set *bset, __isl_give isl_pw_qpolynomial *(*fn)(__isl_take isl_basic_set *bset))
static __isl_give isl_poly * reorder(__isl_take isl_poly *poly, int *r)
isl_ctx * isl_term_get_ctx(__isl_keep isl_term *term)
static void normalize_div(__isl_keep isl_qpolynomial *qp, int div)
__isl_give isl_qpolynomial * isl_qpolynomial_set_dim_name(__isl_take isl_qpolynomial *qp, enum isl_dim_type type, unsigned pos, const char *s)
static __isl_give isl_pw_qpolynomial * constant_on_domain(__isl_take isl_basic_set *bset, int cst)
__isl_give isl_qpolynomial * isl_qpolynomial_realign_domain(__isl_take isl_qpolynomial *qp, __isl_take isl_reordering *r)
__isl_give isl_poly * isl_poly_dup_cst(__isl_keep isl_poly *poly)
__isl_give isl_term * isl_term_dup(__isl_keep isl_term *term)
static isl_stat split_periods(__isl_take isl_set *set, __isl_take isl_qpolynomial *qp, void *user)
__isl_give isl_poly * isl_poly_cst_add_isl_int(__isl_take isl_poly *poly, isl_int v)
static isl_stat opt_fn(__isl_take isl_point *pnt, void *user)
__isl_give isl_qpolynomial * isl_qpolynomial_infty_on_domain(__isl_take isl_space *domain)
static __isl_give isl_pw_qpolynomial * pwqp_drop_floors(__isl_take isl_pw_qpolynomial *pwqp)
isl_bool isl_qpolynomial_is_nan(__isl_keep isl_qpolynomial *qp)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_to_polynomial(__isl_take isl_pw_qpolynomial *pwqp, int sign)
__isl_give isl_qpolynomial * isl_qpolynomial_coeff(__isl_keep isl_qpolynomial *qp, enum isl_dim_type type, unsigned t_pos, int deg)
__isl_keep isl_poly_rec * isl_poly_as_rec(__isl_keep isl_poly *poly)
static void update_coeff(__isl_keep isl_vec *aff, __isl_keep isl_poly_cst *cst, int pos)
__isl_give isl_poly * isl_poly_one(isl_ctx *ctx)
__isl_give isl_qpolynomial * isl_qpolynomial_homogenize(__isl_take isl_qpolynomial *poly)
static void invert_div(__isl_keep isl_qpolynomial *qp, int div, __isl_keep isl_mat **mat)
__isl_give isl_qpolynomial * isl_qpolynomial_move_dims(__isl_take isl_qpolynomial *qp, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
__isl_give isl_qpolynomial * isl_qpolynomial_from_constraint(__isl_take isl_constraint *c, enum isl_dim_type type, unsigned pos)
__isl_give isl_poly * isl_poly_homogenize(__isl_take isl_poly *poly, int deg, int target, int first, int last)
__isl_give isl_poly * isl_poly_subs(__isl_take isl_poly *poly, unsigned first, unsigned n, __isl_keep isl_poly **subs)
isl_bool isl_poly_is_cst(__isl_keep isl_poly *poly)
static __isl_give isl_pw_qpolynomial * poly_entry(__isl_take isl_pw_qpolynomial *pwqp, void *user)
__isl_give isl_poly * isl_poly_rat_cst(isl_ctx *ctx, isl_int n, isl_int d)
__isl_give isl_qpolynomial * isl_qpolynomial_val_on_domain(__isl_take isl_space *domain, __isl_take isl_val *val)
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
static __isl_give isl_poly * expand(__isl_take isl_poly *poly, int *exp, int first)
static __isl_keep isl_space * isl_qpolynomial_peek_domain_space(__isl_keep isl_qpolynomial *qp)
static __isl_give isl_pw_qpolynomial * multiplicative_call_base(__isl_take isl_basic_set *bset, __isl_give isl_pw_qpolynomial *(*fn)(__isl_take isl_basic_set *bset))
int isl_qpolynomial_sgn(__isl_keep isl_qpolynomial *qp)
static enum isl_dim_type domain_type(enum isl_dim_type type)
static __isl_give isl_poly * replace_by_constant_term(__isl_take isl_poly *poly)
__isl_give isl_qpolynomial * isl_qpolynomial_from_aff(__isl_take isl_aff *aff)
__isl_give isl_qpolynomial * isl_qpolynomial_sub(__isl_take isl_qpolynomial *qp1, __isl_take isl_qpolynomial *qp2)
static int cmp_row(__isl_keep isl_mat *div, int i, int j)
isl_bool isl_qpolynomial_is_neginfty(__isl_keep isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_mul(__isl_take isl_qpolynomial *qp1, __isl_take isl_qpolynomial *qp2)
__isl_give isl_qpolynomial * isl_qpolynomial_copy(__isl_keep isl_qpolynomial *qp)
static __isl_give isl_poly * replace_by_zero(__isl_take isl_poly *poly)
__isl_give isl_space * isl_qpolynomial_get_domain_space(__isl_keep isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_substitute_equalities(__isl_take isl_qpolynomial *qp, __isl_take isl_basic_set *eq)
__isl_null isl_qpolynomial * isl_qpolynomial_free(__isl_take isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_nan_on_domain(__isl_take isl_space *domain)
static isl_bool compatible_divs(__isl_keep isl_mat *div1, __isl_keep isl_mat *div2)
__isl_give isl_term * isl_term_copy(__isl_keep isl_term *term)
static __isl_give isl_qpolynomial * substitute_div(__isl_take isl_qpolynomial *qp, int div, __isl_take isl_poly *s)
__isl_give isl_poly * isl_poly_mul_rec(__isl_take isl_poly *poly1, __isl_take isl_poly *poly2)
__isl_give isl_poly * isl_poly_var_pow(isl_ctx *ctx, int pos, int power)
__isl_give isl_qpolynomial * isl_qpolynomial_scale_down_val(__isl_take isl_qpolynomial *qp, __isl_take isl_val *v)
__isl_give isl_qpolynomial * isl_qpolynomial_one_on_domain(__isl_take isl_space *domain)
__isl_give isl_qpolynomial * isl_qpolynomial_cow(__isl_take isl_qpolynomial *qp)
int isl_poly_sgn(__isl_keep isl_poly *poly)
__isl_give isl_poly * isl_poly_mul_isl_int(__isl_take isl_poly *poly, isl_int v)
isl_stat isl_qpolynomial_as_polynomial_on_domain(__isl_keep isl_qpolynomial *qp, __isl_keep isl_basic_set *bset, isl_stat(*fn)(__isl_take isl_basic_set *bset, __isl_take isl_qpolynomial *poly, void *user), void *user)
static __isl_give isl_qpolynomial * isl_qpolynomial_zero_in_space(__isl_take isl_space *space)
isl_bool isl_poly_is_affine(__isl_keep isl_poly *poly)
__isl_give isl_vec * isl_qpolynomial_extract_affine(__isl_keep isl_qpolynomial *qp)
static __isl_give isl_qpolynomial * substitute_non_divs(__isl_take isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_scale_val(__isl_take isl_qpolynomial *qp, __isl_take isl_val *v)
isl_stat isl_qpolynomial_foreach_term(__isl_keep isl_qpolynomial *qp, isl_stat(*fn)(__isl_take isl_term *term, void *user), void *user)
__isl_null isl_term * isl_term_free(__isl_take isl_term *term)
__isl_give isl_qpolynomial * isl_qpolynomial_project_domain_on_params(__isl_take isl_qpolynomial *qp)
__isl_give isl_poly * isl_poly_mul_cst(__isl_take isl_poly *poly1, __isl_take isl_poly *poly2)
int isl_qpolynomial_degree(__isl_keep isl_qpolynomial *poly)
__isl_give isl_poly * isl_poly_add_isl_int(__isl_take isl_poly *poly, isl_int v)
__isl_give isl_qpolynomial * isl_qpolynomial_cst_on_domain(__isl_take isl_space *domain, isl_int v)
static __isl_give isl_qpolynomial * qp_drop_floors(__isl_take isl_qpolynomial *qp, int down)
static __isl_give isl_qpolynomial * reduce_divs(__isl_take isl_qpolynomial *qp)
__isl_give isl_val * isl_qpolynomial_get_den(__isl_keep isl_qpolynomial *qp)
isl_bool isl_poly_is_zero(__isl_keep isl_poly *poly)
__isl_give isl_qpolynomial * isl_qpolynomial_neginfty_on_domain(__isl_take isl_space *domain)
static void isl_poly_cst_reduce(__isl_keep isl_poly_cst *cst)
__isl_give isl_qpolynomial * isl_qpolynomial_var_pow_on_domain(__isl_take isl_space *domain, int pos, int power)
static isl_stat to_polynomial_on_orthant(__isl_take isl_set *orthant, int *signs, void *user)
__isl_give isl_val * isl_poly_eval(__isl_take isl_poly *poly, __isl_take isl_vec *vec)
__isl_give isl_pw_qpolynomial * isl_basic_set_multiplicative_call(__isl_take isl_basic_set *bset, __isl_give isl_pw_qpolynomial *(*fn)(__isl_take isl_basic_set *bset))
__isl_give isl_poly * isl_poly_nan(isl_ctx *ctx)
__isl_give isl_qpolynomial * isl_qpolynomial_scale(__isl_take isl_qpolynomial *qp, isl_int v)
static __isl_give isl_poly * isl_poly_scale_val(__isl_take isl_poly *poly, __isl_keep isl_val *v)
__isl_give isl_qpolynomial * isl_qpolynomial_zero_on_domain(__isl_take isl_space *domain)
__isl_null isl_poly * isl_poly_free(__isl_take isl_poly *poly)
isl_bool isl_poly_is_equal(__isl_keep isl_poly *poly1, __isl_keep isl_poly *poly2)
__isl_give isl_poly_cst * isl_poly_cst_alloc(isl_ctx *ctx)
__isl_give isl_val * isl_term_get_coefficient_val(__isl_keep isl_term *term)
static __isl_keep isl_space * isl_term_peek_space(__isl_keep isl_term *term)
static isl_stat poly_update_den(__isl_keep isl_poly *poly, isl_int *d)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_from_pw_aff(__isl_take isl_pw_aff *pwaff)
__isl_give isl_poly * isl_poly_dup(__isl_keep isl_poly *poly)
isl_bool isl_poly_is_one(__isl_keep isl_poly *poly)
isl_bool isl_poly_is_nan(__isl_keep isl_poly *poly)
int isl_poly_cmp(__isl_keep isl_poly_cst *cst1, __isl_keep isl_poly_cst *cst2)
isl_size isl_qpolynomial_dim(__isl_keep isl_qpolynomial *qp, enum isl_dim_type type)
int isl_qpolynomial_plain_cmp(__isl_keep isl_qpolynomial *qp1, __isl_keep isl_qpolynomial *qp2)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_pow(__isl_take isl_pw_qpolynomial *pwqp, unsigned power)
__isl_give isl_qpolynomial * isl_qpolynomial_rat_cst_on_domain(__isl_take isl_space *domain, const isl_int n, const isl_int d)
static int needs_invert(__isl_keep isl_mat *div, int row)
__isl_give isl_qpolynomial * isl_qpolynomial_morph_domain(__isl_take isl_qpolynomial *qp, __isl_take isl_morph *morph)
__isl_give isl_poly * isl_poly_zero(isl_ctx *ctx)
__isl_give isl_qpolynomial * isl_qpolynomial_add(__isl_take isl_qpolynomial *qp1, __isl_take isl_qpolynomial *qp2)
static __isl_give isl_qpolynomial * sort_divs(__isl_take isl_qpolynomial *qp)
static __isl_give isl_qpolynomial * remove_redundant_divs(__isl_take isl_qpolynomial *qp)
isl_size isl_qpolynomial_domain_dim(__isl_keep isl_qpolynomial *qp, enum isl_dim_type type)
__isl_give isl_term * isl_term_alloc(__isl_take isl_space *space, __isl_take isl_mat *div)
__isl_give isl_qpolynomial * isl_qpolynomial_gist_params(__isl_take isl_qpolynomial *qp, __isl_take isl_set *context)
static __isl_give isl_set * fix_inactive(__isl_take isl_set *set, __isl_keep isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_add_dims(__isl_take isl_qpolynomial *qp, enum isl_dim_type type, unsigned n)
unsigned isl_qpolynomial_domain_offset(__isl_keep isl_qpolynomial *qp, enum isl_dim_type type)
__isl_give isl_poly * isl_poly_coeff(__isl_keep isl_poly *poly, unsigned pos, int deg)
static isl_size isl_term_get_exp(__isl_keep isl_term *term, enum isl_dim_type type, unsigned pos)
__isl_give isl_qpolynomial * isl_qpolynomial_add_isl_int(__isl_take isl_qpolynomial *qp, isl_int v)
__isl_give isl_poly * isl_poly_sum(__isl_take isl_poly *poly1, __isl_take isl_poly *poly2)
isl_bool isl_qpolynomial_is_cst(__isl_keep isl_qpolynomial *qp, isl_int *n, isl_int *d)
isl_bool isl_qpolynomial_is_zero(__isl_keep isl_qpolynomial *qp)
__isl_give isl_val * isl_qpolynomial_get_constant_val(__isl_keep isl_qpolynomial *qp)
static void poly_free_rec(__isl_take isl_poly_rec *rec)
__isl_give isl_qpolynomial * isl_qpolynomial_align_params(__isl_take isl_qpolynomial *qp, __isl_take isl_space *model)
isl_bool isl_qpolynomial_is_one(__isl_keep isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_gist(__isl_take isl_qpolynomial *qp, __isl_take isl_set *context)
__isl_give isl_poly * isl_poly_dup_rec(__isl_keep isl_poly *poly)
static isl_size isl_term_offset(__isl_keep isl_term *term, enum isl_dim_type type)
static isl_stat set_active(__isl_keep isl_qpolynomial *qp, int *active)
static __isl_give isl_qpolynomial * make_divs_pos(__isl_take isl_qpolynomial *qp, int *signs)
__isl_give isl_term * isl_term_cow(__isl_take isl_term *term)
isl_bool isl_qpolynomial_is_affine(__isl_keep isl_qpolynomial *qp)
__isl_give isl_union_pw_qpolynomial * isl_union_pw_qpolynomial_mul(__isl_take isl_union_pw_qpolynomial *upwqp1, __isl_take isl_union_pw_qpolynomial *upwqp2)
__isl_give isl_poly * isl_poly_mul(__isl_take isl_poly *poly1, __isl_take isl_poly *poly2)
__isl_give isl_term * isl_poly_foreach_term(__isl_keep isl_poly *poly, isl_stat(*fn)(__isl_take isl_term *term, void *user), __isl_take isl_term *term, void *user)
__isl_give isl_qpolynomial * isl_qpolynomial_mul_isl_int(__isl_take isl_qpolynomial *qp, isl_int v)
__isl_give isl_qpolynomial * isl_qpolynomial_dup(__isl_keep isl_qpolynomial *qp)
static void poly_free_cst(__isl_take isl_poly_cst *cst)
static isl_stat split_div(__isl_take isl_set *set, __isl_take isl_qpolynomial *qp, int div, isl_int min, isl_int max, struct isl_split_periods_data *data)
static __isl_give isl_poly * isl_poly_cst_scale_val(__isl_take isl_poly *poly, __isl_keep isl_val *v)
isl_bool isl_poly_is_neginfty(__isl_keep isl_poly *poly)
int isl_poly_degree(__isl_keep isl_poly *poly, int first, int last)
isl_size isl_term_dim(__isl_keep isl_term *term, enum isl_dim_type type)
static static static __isl_give isl_local_space * isl_qpolynomial_get_domain_local_space(__isl_keep isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_substitute(__isl_take isl_qpolynomial *qp, enum isl_dim_type type, unsigned first, unsigned n, __isl_keep isl_qpolynomial **subs)
static __isl_give isl_set * set_div_slice(__isl_take isl_space *space, __isl_keep isl_qpolynomial *qp, int div, isl_int v)
__isl_give isl_poly * isl_poly_drop(__isl_take isl_poly *poly, unsigned first, unsigned n)
__isl_give isl_poly * isl_poly_infty(isl_ctx *ctx)
void isl_term_get_num(__isl_keep isl_term *term, isl_int *n)
__isl_give isl_qpolynomial * isl_qpolynomial_add_on_domain(__isl_keep isl_set *dom, __isl_take isl_qpolynomial *qp1, __isl_take isl_qpolynomial *qp2)
isl_bool isl_qpolynomial_plain_is_equal(__isl_keep isl_qpolynomial *qp1, __isl_keep isl_qpolynomial *qp2)
static void reduce_div(__isl_keep isl_qpolynomial *qp, int div, __isl_keep isl_mat **mat)
__isl_give isl_qpolynomial * isl_qpolynomial_reset_space_and_domain(__isl_take isl_qpolynomial *qp, __isl_take isl_space *space, __isl_take isl_space *domain)
__isl_give isl_qpolynomial * isl_qpolynomial_pow(__isl_take isl_qpolynomial *qp, unsigned power)
__isl_give isl_space * isl_qpolynomial_get_space(__isl_keep isl_qpolynomial *qp)
isl_bool isl_poly_is_negone(__isl_keep isl_poly *poly)
__isl_give isl_val * isl_qpolynomial_opt_on_domain(__isl_take isl_qpolynomial *qp, __isl_take isl_set *set, int max)
static __isl_give isl_val * isl_poly_get_constant_val(__isl_keep isl_poly *poly)
isl_bool isl_qpolynomial_is_infty(__isl_keep isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_from_term(__isl_take isl_term *term)
static int isl_poly_plain_cmp(__isl_keep isl_poly *poly1, __isl_keep isl_poly *poly2)
__isl_give isl_qpolynomial * isl_qpolynomial_drop_dims(__isl_take isl_qpolynomial *qp, enum isl_dim_type type, unsigned first, unsigned n)
static isl_size isl_qpolynomial_domain_var_offset(__isl_keep isl_qpolynomial *qp, enum isl_dim_type type)
isl_ctx * isl_qpolynomial_get_ctx(__isl_keep isl_qpolynomial *qp)
__isl_give isl_val * isl_qpolynomial_eval(__isl_take isl_qpolynomial *qp, __isl_take isl_point *pnt)
__isl_give isl_poly * isl_poly_pow(__isl_take isl_poly *poly, unsigned power)
__isl_give isl_poly * isl_poly_from_affine(isl_ctx *ctx, isl_int *f, isl_int denom, unsigned len)
__isl_give isl_qpolynomial * isl_qpolynomial_insert_dims(__isl_take isl_qpolynomial *qp, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_aff * isl_term_get_div(__isl_keep isl_term *term, unsigned pos)
__isl_give isl_poly * isl_poly_copy(__isl_keep isl_poly *poly)
__isl_give isl_poly * isl_poly_neginfty(isl_ctx *ctx)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_cow(__isl_take isl_pw_qpolynomial *pwqp)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_morph_domain(__isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_morph *morph)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_add_piece(__isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_set *set, __isl_take isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_terms_of_sign(__isl_keep isl_qpolynomial *poly, int *signs, int sign)
__isl_null isl_reordering * isl_reordering_free(__isl_take isl_reordering *exp)
__isl_give isl_reordering * isl_reordering_extend(__isl_take isl_reordering *exp, unsigned extra)
__isl_give isl_reordering * isl_parameter_alignment_reordering(__isl_keep isl_space *alignee, __isl_keep isl_space *aligner)
__isl_give isl_space * isl_reordering_get_space(__isl_keep isl_reordering *r)
__isl_give isl_reordering * isl_reordering_copy(__isl_keep isl_reordering *exp)
static int at(int i, void *user)
void isl_seq_combine(isl_int *dst, isl_int m1, isl_int *src1, isl_int m2, isl_int *src2, unsigned len)
int isl_seq_last_non_zero(isl_int *p, unsigned len)
int isl_seq_first_non_zero(isl_int *p, unsigned len)
void isl_seq_scale_down(isl_int *dst, isl_int *src, isl_int m, unsigned len)
void isl_seq_gcd(isl_int *p, unsigned len, isl_int *gcd)
void isl_seq_clr(isl_int *p, unsigned len)
void isl_seq_scale(isl_int *dst, isl_int *src, isl_int m, unsigned len)
void isl_seq_elim(isl_int *dst, isl_int *src, unsigned pos, unsigned len, isl_int *m)
int isl_seq_cmp(isl_int *p1, isl_int *p2, unsigned len)
void isl_seq_cpy(isl_int *dst, isl_int *src, unsigned len)
int isl_seq_eq(isl_int *p1, isl_int *p2, unsigned len)
void isl_seq_neg(isl_int *dst, isl_int *src, unsigned len)
isl_stat isl_space_check_is_set(__isl_keep isl_space *space)
unsigned isl_space_offset(__isl_keep isl_space *space, enum isl_dim_type type)
isl_bool isl_space_is_named_or_nested(__isl_keep isl_space *space, enum isl_dim_type type)
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)
static isl_stat power(__isl_take isl_map *map, void *user)
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_rat_from_isl_int(isl_ctx *ctx, isl_int n, isl_int d)
__isl_null isl_basic_map * isl_basic_map_free(__isl_take isl_basic_map *bmap)
struct isl_basic_set isl_basic_set
__isl_give isl_mat * isl_mat_copy(__isl_keep isl_mat *mat)
__isl_give isl_mat * isl_mat_product(__isl_take isl_mat *left, __isl_take isl_mat *right)
__isl_give isl_mat * isl_mat_drop_rows(__isl_take isl_mat *mat, unsigned row, unsigned n)
__isl_give isl_mat * isl_mat_diagonal(__isl_take isl_mat *mat1, __isl_take isl_mat *mat2)
__isl_give isl_mat * isl_mat_swap_rows(__isl_take isl_mat *mat, unsigned i, unsigned j)
__isl_null isl_mat * isl_mat_free(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_insert_zero_cols(__isl_take isl_mat *mat, unsigned first, unsigned n)
void isl_mat_col_add(__isl_keep isl_mat *mat, int dst_col, int src_col)
__isl_give isl_mat * isl_mat_alloc(isl_ctx *ctx, unsigned n_row, unsigned n_col)
isl_bool isl_mat_is_equal(__isl_keep isl_mat *mat1, __isl_keep isl_mat *mat2)
__isl_give isl_mat * isl_mat_set_element_si(__isl_take isl_mat *mat, int row, int col, int v)
__isl_give isl_mat * isl_mat_insert_cols(__isl_take isl_mat *mat, unsigned col, unsigned n)
__isl_give isl_mat * isl_mat_drop_cols(__isl_take isl_mat *mat, unsigned col, unsigned n)
__isl_give isl_mat * isl_mat_move_cols(__isl_take isl_mat *mat, unsigned dst_col, unsigned src_col, unsigned n)
isl_bool isl_point_is_void(__isl_keep isl_point *pnt)
__isl_null isl_point * isl_point_free(__isl_take isl_point *pnt)
isl_ctx * isl_point_get_ctx(__isl_keep isl_point *pnt)
isl_bool isl_pw_qpolynomial_is_zero(__isl_keep isl_pw_qpolynomial *pwqp)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_zero(__isl_take isl_space *space)
__isl_null isl_pw_qpolynomial * isl_pw_qpolynomial_free(__isl_take isl_pw_qpolynomial *pwqp)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_alloc(__isl_take isl_set *set, __isl_take isl_qpolynomial *qp)
isl_stat isl_pw_qpolynomial_foreach_piece(__isl_keep isl_pw_qpolynomial *pwqp, isl_stat(*fn)(__isl_take isl_set *set, __isl_take isl_qpolynomial *qp, void *user), void *user)
__isl_give isl_space * isl_pw_qpolynomial_get_space(__isl_keep isl_pw_qpolynomial *pwqp)
__isl_give isl_pw_qpolynomial * isl_pw_qpolynomial_add_disjoint(__isl_take isl_pw_qpolynomial *pwqp1, __isl_take isl_pw_qpolynomial *pwqp2)
struct isl_union_pw_qpolynomial isl_union_pw_qpolynomial
__isl_export __isl_give isl_set * isl_set_universe(__isl_take isl_space *space)
isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
__isl_export __isl_give isl_basic_set * isl_basic_set_detect_equalities(__isl_take isl_basic_set *bset)
isl_ctx * isl_set_get_ctx(__isl_keep isl_set *set)
__isl_export __isl_give isl_space * isl_set_get_space(__isl_keep isl_set *set)
isl_bool isl_set_plain_is_empty(__isl_keep isl_set *set)
__isl_give isl_space * isl_basic_set_get_space(__isl_keep isl_basic_set *bset)
__isl_export __isl_give isl_set * isl_set_intersect_params(__isl_take isl_set *set, __isl_take isl_set *params)
__isl_export __isl_give isl_basic_set * isl_basic_set_params(__isl_take isl_basic_set *bset)
__isl_give isl_set * isl_set_eliminate(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
isl_bool isl_basic_set_is_bounded(__isl_keep isl_basic_set *bset)
isl_bool isl_basic_set_plain_is_empty(__isl_keep isl_basic_set *bset)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
__isl_give isl_set * isl_set_copy(__isl_keep isl_set *set)
__isl_give isl_basic_set * isl_basic_set_remove_redundancies(__isl_take isl_basic_set *bset)
__isl_export isl_stat isl_set_foreach_point(__isl_keep isl_set *set, isl_stat(*fn)(__isl_take isl_point *pnt, void *user), void *user)
__isl_give isl_basic_set * isl_basic_set_add_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned n)
isl_size isl_set_dim(__isl_keep isl_set *set, enum isl_dim_type type)
isl_bool isl_set_plain_is_universe(__isl_keep isl_set *set)
__isl_export isl_bool isl_basic_set_is_empty(__isl_keep isl_basic_set *bset)
__isl_export __isl_give isl_set * isl_set_intersect(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_constructor __isl_give isl_set * isl_set_from_basic_set(__isl_take isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
__isl_export __isl_give isl_basic_set * isl_set_affine_hull(__isl_take isl_set *set)
__isl_give isl_set * isl_set_fix_si(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, int value)
isl_bool isl_space_has_equal_params(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_null isl_space * isl_space_free(__isl_take isl_space *space)
__isl_give isl_space * isl_space_from_domain(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_params(__isl_take isl_space *space)
__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_give isl_space * isl_space_copy(__isl_keep isl_space *space)
__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_export isl_bool isl_space_is_equal(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_drop_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned num)
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_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)
__isl_give isl_space * isl_space_add_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned n)
__isl_export __isl_give isl_space * isl_space_domain(__isl_take isl_space *space)
isl_pw_qpolynomial * pwqp
__isl_give isl_pw_qpolynomial *(* fn)(__isl_take isl_basic_set *bset)
__isl_give isl_val * isl_val_copy(__isl_keep isl_val *v)
__isl_export __isl_give isl_val * isl_val_inv(__isl_take isl_val *v)
__isl_export __isl_give isl_val * isl_val_max(__isl_take isl_val *v1, __isl_take isl_val *v2)
__isl_export __isl_give isl_val * isl_val_add(__isl_take isl_val *v1, __isl_take isl_val *v2)
__isl_export __isl_give isl_val * isl_val_one(isl_ctx *ctx)
__isl_export __isl_give isl_val * isl_val_zero(isl_ctx *ctx)
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_bool isl_val_is_zero(__isl_keep isl_val *v)
__isl_export isl_bool isl_val_is_one(__isl_keep isl_val *v)
__isl_export __isl_give isl_val * isl_val_min(__isl_take isl_val *v1, __isl_take isl_val *v2)
__isl_export isl_bool isl_val_is_rat(__isl_keep isl_val *v)
__isl_export __isl_give isl_val * isl_val_mul(__isl_take isl_val *v1, __isl_take isl_val *v2)
__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_clr(__isl_take isl_vec *vec)
__isl_give isl_vec * isl_vec_alloc(isl_ctx *ctx, unsigned size)