21#include <isl_config.h>
24#define EL_BASE pw_qpolynomial_fold
54 if (
type < 0 || !space || !list)
70 isl_qpolynomial_list_free(list);
76 return fold ? fold->dim->ctx : NULL;
84 return fold ? fold->dim : NULL;
129 if (fold->dim == space) {
164 return fold ? fold->list : NULL;
187 isl_qpolynomial_list *list;
211 if (fold->list == list) {
212 isl_qpolynomial_list_free(list);
219 isl_qpolynomial_list_free(fold->list);
225 isl_qpolynomial_list_free(list);
248 isl_qpolynomial_list *list;
305 isl_qpolynomial_list *list;
356 isl_qpolynomial_list *list;
359 list = isl_qpolynomial_list_map(list, &
set_dim_name, &data);
389 isl_qpolynomial_list *list;
399 list = isl_qpolynomial_list_map(list, &
drop_dims, &data);
428 isl_qpolynomial_list *list;
436 list = isl_qpolynomial_list_map(list, &
insert_dims, &data);
550 if (qp->div->n_row > 0)
585 for (i = rec->
n - 2; i >= 0; --i) {
631 if (type1 < 0 || type2 < 0)
668 __isl_take isl_qpolynomial_list *list2,
int better)
673 n1 = isl_qpolynomial_list_size(list1);
674 n2 = isl_qpolynomial_list_size(list2);
675 if (n1 < 0 || n2 < 0)
678 for (i = n2 - 1; i >= 0; --i) {
679 for (j = n1 - 1; j >= 0; --j) {
684 qp1 = isl_qpolynomial_list_peek(list1, j);
685 qp2 = isl_qpolynomial_list_peek(list2, i);
700 list1 = isl_qpolynomial_list_drop(list1, j, 1);
705 list2 = isl_qpolynomial_list_drop(list2, i, 1);
709 return isl_qpolynomial_list_concat(list1, list2);
711 isl_qpolynomial_list_free(list1);
712 isl_qpolynomial_list_free(list2);
729 isl_qpolynomial_list *list1;
730 isl_qpolynomial_list *list2;
780 isl_qpolynomial_list *list;
811 isl_qpolynomial_list *list1, *list2;
813 if (!fold1 || !fold2)
828 n1 = isl_qpolynomial_list_size(list1);
829 n2 = isl_qpolynomial_list_size(list2);
830 if (n1 < 0 || n2 < 0)
833 if (n1 == 1 && n2 != 1)
836 qp = isl_qpolynomial_list_get_at(list2, 0);
846 for (i = 1; i < n2; ++i) {
849 qp = isl_qpolynomial_list_get_at(list2, i);
880 isl_qpolynomial_list *list;
904 isl_qpolynomial_list *list;
907 list = isl_qpolynomial_list_map(list, &
gist,
context);
934#define isl_qpolynomial_fold_involves_nan isl_qpolynomial_fold_is_nan
939#define PW isl_pw_qpolynomial_fold
941#define BASE qpolynomial_fold
943#define EL_IS_ZERO is_empty
947#define IS_ZERO is_zero
950#undef DEFAULT_IS_ZERO
951#define DEFAULT_IS_ZERO 1
965#define BASE pw_qpolynomial_fold
977 isl_qpolynomial_list *list;
982 list = isl_qpolynomial_list_alloc(ctx, 0);
993 isl_qpolynomial_list *list;
996 list = isl_qpolynomial_list_from_qpolynomial(qp);
1015 isl_qpolynomial_list *list;
1040 if (--fold->ref > 0)
1043 isl_qpolynomial_list_free(fold->list);
1053 isl_qpolynomial_list *list;
1056 n = isl_qpolynomial_list_size(list);
1069 isl_qpolynomial_list *list;
1072 n = isl_qpolynomial_list_size(list);
1077 qp = isl_qpolynomial_list_peek(list, 0);
1085 isl_qpolynomial_list *list1, *list2;
1104 list1 = isl_qpolynomial_list_concat(list1, list2);
1138 if (pw1->type != pw2->type)
1140 "fold types don't match",
goto error);
1142 n = (pw1->n + 1) * (pw2->n + 1);
1146 for (i = 0; i < pw1->n; ++i) {
1148 for (j = 0; j < pw2->n; ++j) {
1164 res = isl_pw_qpolynomial_fold_add_piece(
res, common, sum);
1166 res = isl_pw_qpolynomial_fold_add_piece(
res,
set,
1170 for (j = 0; j < pw2->n; ++j) {
1172 for (i = 0; i < pw1->n; ++i)
1174 res = isl_pw_qpolynomial_fold_add_piece(
res,
set,
1194 u = isl_union_pw_qpolynomial_fold_cow(u);
1201 entry = isl_union_pw_qpolynomial_fold_find_part_entry(u, part->dim, 1);
1236 u1 = isl_union_pw_qpolynomial_fold_cow(u1);
1266 for (i = 0; i <
pwqp->n; ++i)
1267 pwf = isl_pw_qpolynomial_fold_add_piece(pwf,
1281 return isl_pw_qpolynomial_fold_union_add_(pwf1, pwf2);
1294 isl_qpolynomial_list *list1, *list2;
1300 n1 = isl_qpolynomial_list_size(list1);
1301 n2 = isl_qpolynomial_list_size(list2);
1310 for (i = 0; i < n1; ++i) {
1314 qp1 = isl_qpolynomial_list_peek(list1, i);
1315 qp2 = isl_qpolynomial_list_peek(list2, i);
1328 isl_qpolynomial_list *list1, isl_qpolynomial_list *list2)
1332 for (i = 0; i <
n; ++i) {
1336 qp1 = isl_qpolynomial_list_peek(list1, i);
1337 qp2 = isl_qpolynomial_list_peek(list2, i);
1361 isl_qpolynomial_list *list1, *list2;
1365 n1 = isl_qpolynomial_list_size(list1);
1366 n2 = isl_qpolynomial_list_size(list2);
1367 if (n1 < 0 || n2 < 0)
1373 list1 = isl_qpolynomial_list_copy(list1);
1375 list2 = isl_qpolynomial_list_copy(list2);
1378 isl_qpolynomial_list_free(list1);
1379 isl_qpolynomial_list_free(list2);
1390 isl_qpolynomial_list *list;
1401 n = isl_qpolynomial_list_size(list);
1410 qp = isl_qpolynomial_list_get_at(list, 0);
1412 for (i = 1; i <
n; ++i) {
1415 qp = isl_qpolynomial_list_get_at(list, i);
1438 for (i = 0; i < pwf->n; ++i) {
1440 isl_qpolynomial_list *list;
1443 n_i = isl_qpolynomial_list_size(list);
1460 isl_qpolynomial_list *list;
1463 n = isl_qpolynomial_list_size(list);
1474 qp = isl_qpolynomial_list_get_at(list, 0);
1476 for (i = 1; i <
n; ++i) {
1479 qp = isl_qpolynomial_list_get_at(list, i);
1508 isl_qpolynomial_list *list1, *list2;
1512 n1 = isl_qpolynomial_list_size(list1);
1513 n2 = isl_qpolynomial_list_size(list2);
1514 if (!
set || n1 < 0 || n2 < 0)
1519 for (i = 0; i < n2; ++i) {
1520 for (j = 0; j < n1; ++j) {
1524 qp1 = isl_qpolynomial_list_get_at(list1, j);
1525 qp2 = isl_qpolynomial_list_get_at(list2, i);
1565 if (is_subset < 0 || !is_subset)
1568 for (i = 0; i < pwf2->n; ++i) {
1569 for (j = 0; j < pwf1->n; ++j) {
1577 if (is_empty < 0 || is_empty) {
1584 pwf1->p[j].fold, pwf2->p[i].fold);
1586 if (covers < 0 || !covers)
1609 isl_qpolynomial_list *list;
1616 list = isl_qpolynomial_list_map(list, &
morph_domain, morph);
1671 isl_qpolynomial_list *list;
1673 if (!fold || !space)
1682 list = isl_qpolynomial_list_map(list, &
lift, space);
1699 isl_qpolynomial_list *list;
1702 return isl_qpolynomial_list_foreach(list,
fn,
user);
1738 isl_qpolynomial_list *list;
1751 list = isl_qpolynomial_list_map(list, &
move_dims, &data);
1794 isl_qpolynomial_list *list;
1800 list = isl_qpolynomial_list_map(list, &
substitute, &data);
1814 entry = isl_union_pw_qpolynomial_fold_find_part_entry(*upwf,
1827 *upwf = isl_union_pw_qpolynomial_fold_remove_part_entry(
1846 upwf = isl_union_pw_qpolynomial_fold_cow(upwf);
1847 if (!upwf || !upwqp)
1912 pwf = isl_pw_qpolynomial_fold_insert_dims(pwf,
isl_dim_in, 0, n_in);
2042 isl_qpolynomial_list *list;
2071 isl_qpolynomial_list *list;
2091 list = isl_qpolynomial_list_map(list, &
mul_int, &v);
2120 isl_qpolynomial_list *list;
2139 "expecting rational factor",
goto error);
2149 list = isl_qpolynomial_list_map(list, &
scale_val, v);
2174 "expecting rational factor",
goto error);
2177 "cannot scale down by zero",
goto error);
#define isl_calloc_type(ctx, type)
#define isl_die(ctx, errno, msg, code)
#define isl_assert(ctx, test, code)
isl_bool isl_bool_ok(int b)
isl_bool isl_bool_not(isl_bool b)
isl_stat isl_stat(* fn)(__isl_take ISL_KEY *key, __isl_take ISL_VAL *val, void *user)
isl_stat isl_stat(*) void user)
int GMPQAPI() cmp(mp_rat op1, mp_rat op2)
int GMPQAPI() sgn(mp_rat op)
static __isl_give isl_qpolynomial_list * merge_lists(__isl_keep isl_set *set, __isl_take isl_qpolynomial_list *list1, __isl_take isl_qpolynomial_list *list2, int better)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_mul_isl_int(__isl_take isl_qpolynomial_fold *fold, isl_int v)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_cow(__isl_take isl_qpolynomial_fold *fold)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_lift(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_space *space)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_realign_domain(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_reordering *r)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_empty(enum isl_fold type, __isl_take isl_space *space)
__isl_give isl_union_pw_qpolynomial_fold * isl_union_pw_qpolynomial_fold_fold(__isl_take isl_union_pw_qpolynomial_fold *u1, __isl_take isl_union_pw_qpolynomial_fold *u2)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_substitute_equalities(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_basic_set *eq)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_insert_dims(__isl_take isl_qpolynomial_fold *fold, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_gist(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_set *context)
static __isl_give isl_qpolynomial * reset_domain_space(__isl_take isl_qpolynomial *qp, void *user)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_fold(__isl_take isl_qpolynomial_fold *fold1, __isl_take isl_qpolynomial_fold *fold2)
__isl_give isl_pw_qpolynomial_fold * isl_pw_qpolynomial_fold_add(__isl_take isl_pw_qpolynomial_fold *pwf1, __isl_take isl_pw_qpolynomial_fold *pwf2)
static __isl_give isl_qpolynomial * lift(__isl_take isl_qpolynomial *qp, void *user)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_fold_on_domain(__isl_keep isl_set *set, __isl_take isl_qpolynomial_fold *fold1, __isl_take isl_qpolynomial_fold *fold2)
__isl_null isl_qpolynomial_fold * isl_qpolynomial_fold_free(__isl_take isl_qpolynomial_fold *fold)
static __isl_give isl_qpolynomial * substitute(__isl_take isl_qpolynomial *qp, void *user)
static __isl_give isl_qpolynomial * substitute_equalities(__isl_take isl_qpolynomial *qp, void *user)
__isl_give isl_union_pw_qpolynomial_fold * isl_union_map_apply_union_pw_qpolynomial_fold(__isl_take isl_union_map *umap, __isl_take isl_union_pw_qpolynomial_fold *upwf, isl_bool *tight)
static isl_stat pw_qpolynomial_fold_apply(__isl_take isl_pw_qpolynomial_fold *pwf, void *user)
__isl_give isl_space * isl_qpolynomial_fold_get_space(__isl_keep isl_qpolynomial_fold *fold)
static __isl_give isl_qpolynomial * move_dims(__isl_take isl_qpolynomial *qp, void *user)
__isl_give isl_union_pw_qpolynomial_fold * isl_union_pw_qpolynomial_fold_add_union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial_fold *upwf, __isl_take isl_union_pw_qpolynomial *upwqp)
static int qpolynomial_cmp(__isl_keep isl_qpolynomial *a, __isl_keep isl_qpolynomial *b, void *user)
static int isl_qpolynomial_aff_sign(__isl_keep isl_set *set, __isl_keep isl_qpolynomial *qp)
static isl_stat add_pwqp(__isl_take isl_pw_qpolynomial *pwqp, void *user)
isl_bool isl_qpolynomial_fold_is_empty(__isl_keep isl_qpolynomial_fold *fold)
static isl_stat fold_part(__isl_take isl_pw_qpolynomial_fold *part, void *user)
__isl_give isl_pw_qpolynomial_fold * isl_map_apply_pw_qpolynomial_fold(__isl_take isl_map *map, __isl_take isl_pw_qpolynomial_fold *pwf, isl_bool *tight)
static isl_bool join_compatible(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_substitute(__isl_take isl_qpolynomial_fold *fold, enum isl_dim_type type, unsigned first, unsigned n, __isl_keep isl_qpolynomial **subs)
isl_stat isl_qpolynomial_fold_foreach_qpolynomial(__isl_keep isl_qpolynomial_fold *fold, isl_stat(*fn)(__isl_take isl_qpolynomial *qp, void *user), void *user)
isl_bool isl_qpolynomial_fold_plain_is_equal(__isl_keep isl_qpolynomial_fold *fold1, __isl_keep isl_qpolynomial_fold *fold2)
__isl_keep isl_qpolynomial_list * isl_qpolynomial_fold_peek_list(__isl_keep isl_qpolynomial_fold *fold)
static __isl_give isl_qpolynomial_fold * qpolynomial_fold_alloc(enum isl_fold type, __isl_take isl_space *space, __isl_take isl_qpolynomial_list *list)
__isl_give isl_pw_qpolynomial_fold * isl_set_apply_pw_qpolynomial_fold(__isl_take isl_set *set, __isl_take isl_pw_qpolynomial_fold *pwf, isl_bool *tight)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_scale_val(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_val *v)
static isl_bool not_involved(__isl_keep isl_qpolynomial *qp, void *user)
static __isl_give isl_qpolynomial * realign_domain(__isl_take isl_qpolynomial *qp, void *user)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_dup(__isl_keep isl_qpolynomial_fold *fold)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_scale_down_val(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_val *v)
static enum isl_dim_type domain_type(enum isl_dim_type type)
enum isl_fold isl_pw_qpolynomial_fold_get_type(__isl_keep isl_pw_qpolynomial_fold *pwf)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_gist_params(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_set *context)
static isl_bool isl_qpolynomial_fold_involves_dims(__isl_keep isl_qpolynomial_fold *fold, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_add_qpolynomial(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_qpolynomial *qp)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_drop_dims(__isl_take isl_qpolynomial_fold *fold, enum isl_dim_type type, unsigned first, unsigned n)
size_t isl_pw_qpolynomial_fold_size(__isl_keep isl_pw_qpolynomial_fold *pwf)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_morph_domain(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_morph *morph)
int isl_qpolynomial_fold_plain_cmp(__isl_keep isl_qpolynomial_fold *fold1, __isl_keep isl_qpolynomial_fold *fold2)
static isl_stat isl_qpolynomial_fold_check_equal_space(__isl_keep isl_qpolynomial_fold *fold1, __isl_keep isl_qpolynomial_fold *fold2)
static __isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_restore_list(__isl_keep isl_qpolynomial_fold *fold, __isl_take isl_qpolynomial_list *list)
static __isl_give isl_qpolynomial * morph_domain(__isl_take isl_qpolynomial *qp, void *user)
static __isl_give isl_qpolynomial * drop_dims(__isl_take isl_qpolynomial *qp, void *user)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_copy(__isl_keep isl_qpolynomial_fold *fold)
isl_ctx * isl_qpolynomial_fold_get_ctx(__isl_keep isl_qpolynomial_fold *fold)
static __isl_give isl_space * isl_qpolynomial_fold_take_domain_space(__isl_keep isl_qpolynomial_fold *fold)
__isl_give isl_space * isl_qpolynomial_fold_get_domain_space(__isl_keep isl_qpolynomial_fold *fold)
static int isl_qpolynomial_cst_sign(__isl_keep isl_qpolynomial *qp)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_scale(__isl_take isl_qpolynomial_fold *fold, isl_int v)
__isl_give isl_union_pw_qpolynomial_fold * isl_union_set_apply_union_pw_qpolynomial_fold(__isl_take isl_union_set *uset, __isl_take isl_union_pw_qpolynomial_fold *upwf, isl_bool *tight)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_alloc(enum isl_fold type, __isl_take isl_qpolynomial *qp)
__isl_give isl_val * isl_qpolynomial_fold_eval(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_point *pnt)
static __isl_give isl_qpolynomial * insert_dims(__isl_take isl_qpolynomial *qp, void *user)
__isl_give isl_val * isl_qpolynomial_fold_opt_on_domain(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_set *set, int max)
static __isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_zero_in_space(__isl_take isl_space *space, enum isl_fold type)
static isl_bool isl_qpolynomial_list_plain_is_equal(unsigned n, isl_qpolynomial_list *list1, isl_qpolynomial_list *list2)
static __isl_give isl_qpolynomial * scale_val(__isl_take isl_qpolynomial *qp, void *user)
__isl_give isl_pw_qpolynomial_fold * isl_pw_qpolynomial_fold_fold(__isl_take isl_pw_qpolynomial_fold *pw1, __isl_take isl_pw_qpolynomial_fold *pw2)
static __isl_give isl_qpolynomial_list * isl_qpolynomial_fold_get_list(__isl_keep isl_qpolynomial_fold *fold)
static __isl_give isl_qpolynomial * mul_int(__isl_take isl_qpolynomial *qp, void *user)
isl_bool isl_qpolynomial_fold_is_nan(__isl_keep isl_qpolynomial_fold *fold)
static isl_stat map_apply(__isl_take isl_map *map, void *user)
static isl_stat isl_qpolynomial_fold_check_equal_type(__isl_keep isl_qpolynomial_fold *fold1, __isl_keep isl_qpolynomial_fold *fold2)
static isl_bool qpolynomial_fold_covers_on_domain(__isl_keep isl_set *set, __isl_keep isl_qpolynomial_fold *fold1, __isl_keep isl_qpolynomial_fold *fold2)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_reset_domain_space(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_space *space)
static int isl_qpolynomial_sign(__isl_keep isl_set *set, __isl_keep isl_qpolynomial *qp)
enum isl_fold isl_fold_type_negate(enum isl_fold type)
static __isl_give isl_qpolynomial * set_dim_name(__isl_take isl_qpolynomial *qp, void *user)
static __isl_keep isl_space * isl_qpolynomial_fold_peek_domain_space(__isl_keep isl_qpolynomial_fold *fold)
__isl_give isl_pw_qpolynomial_fold * isl_pw_qpolynomial_fold_from_pw_qpolynomial(enum isl_fold type, __isl_take isl_pw_qpolynomial *pwqp)
static __isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_restore_domain_space(__isl_keep isl_qpolynomial_fold *fold, __isl_take isl_space *space)
__isl_give isl_union_pw_qpolynomial_fold * isl_union_pw_qpolynomial_fold_fold_pw_qpolynomial_fold(__isl_take isl_union_pw_qpolynomial_fold *u, __isl_take isl_pw_qpolynomial_fold *part)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_set_dim_name(__isl_take isl_qpolynomial_fold *fold, enum isl_dim_type type, unsigned pos, const char *s)
static __isl_give isl_qpolynomial_list * isl_qpolynomial_fold_take_list(__isl_keep isl_qpolynomial_fold *fold)
static __isl_give isl_qpolynomial * add_qpolynomial(__isl_take isl_qpolynomial *qp, void *user)
enum isl_fold isl_union_pw_qpolynomial_fold_get_type(__isl_keep isl_union_pw_qpolynomial_fold *upwf)
enum isl_fold isl_qpolynomial_fold_get_type(__isl_keep isl_qpolynomial_fold *fold)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_move_dims(__isl_take isl_qpolynomial_fold *fold, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
isl_bool isl_pw_qpolynomial_fold_covers(__isl_keep isl_pw_qpolynomial_fold *pwf1, __isl_keep isl_pw_qpolynomial_fold *pwf2)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_add_on_domain(__isl_keep isl_set *dom, __isl_take isl_qpolynomial_fold *fold1, __isl_take isl_qpolynomial_fold *fold2)
__isl_give isl_qpolynomial_fold * isl_qpolynomial_fold_reset_space_and_domain(__isl_take isl_qpolynomial_fold *fold, __isl_take isl_space *space, __isl_take isl_space *domain)
#define isl_int_is_zero(i)
#define isl_int_is_one(i)
#define isl_int_is_pos(i)
#define isl_int_is_neg(i)
#define isl_int_set_si(r, i)
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)
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
isl_stat isl_morph_check_applies(__isl_keep isl_morph *morph, __isl_keep isl_space *space)
__isl_give isl_space * isl_morph_get_ran_space(__isl_keep isl_morph *morph)
__isl_null isl_morph * isl_morph_free(__isl_take isl_morph *morph)
__isl_give isl_morph * isl_morph_copy(__isl_keep isl_morph *morph)
__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_keep isl_poly_cst * isl_poly_as_cst(__isl_keep isl_poly *poly)
__isl_give isl_qpolynomial * isl_qpolynomial_reset_domain_space(__isl_take isl_qpolynomial *qp, __isl_take isl_space *space)
__isl_give isl_qpolynomial * isl_qpolynomial_realign_domain(__isl_take isl_qpolynomial *qp, __isl_take isl_reordering *r)
__isl_keep isl_poly_rec * isl_poly_as_rec(__isl_keep isl_poly *poly)
__isl_give isl_qpolynomial * isl_qpolynomial_substitute_equalities(__isl_take isl_qpolynomial *qp, __isl_take isl_basic_set *eq)
__isl_give isl_vec * isl_qpolynomial_extract_affine(__isl_keep isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_cst_on_domain(__isl_take isl_space *domain, isl_int v)
__isl_give isl_qpolynomial * isl_qpolynomial_var_pow_on_domain(__isl_take isl_space *domain, int pos, int power)
int isl_qpolynomial_plain_cmp(__isl_keep isl_qpolynomial *qp1, __isl_keep isl_qpolynomial *qp2)
__isl_give isl_qpolynomial * isl_qpolynomial_morph_domain(__isl_take isl_qpolynomial *qp, __isl_take isl_morph *morph)
isl_bool isl_qpolynomial_is_cst(__isl_keep isl_qpolynomial *qp, isl_int *n, isl_int *d)
isl_bool isl_qpolynomial_is_affine(__isl_keep isl_qpolynomial *qp)
__isl_give isl_qpolynomial * isl_qpolynomial_mul_isl_int(__isl_take isl_qpolynomial *qp, isl_int v)
__isl_give isl_val * isl_qpolynomial_opt_on_domain(__isl_take isl_qpolynomial *qp, __isl_take isl_set *set, int max)
__isl_give isl_poly * isl_poly_copy(__isl_keep isl_poly *poly)
__isl_give isl_pw_qpolynomial_fold * isl_pw_qpolynomial_fold_reset_domain_space(__isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_space *space)
__isl_null isl_reordering * isl_reordering_free(__isl_take isl_reordering *exp)
__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 isl_bool not(__isl_keep isl_set *set, void *user)
void isl_seq_clr(isl_int *p, unsigned len)
isl_stat isl_space_check_equal_params(__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_give isl_map * isl_map_copy(__isl_keep isl_map *map)
__isl_export __isl_give isl_space * isl_map_get_space(__isl_keep isl_map *map)
isl_ctx * isl_map_get_ctx(__isl_keep isl_map *map)
__isl_export __isl_give isl_set * isl_map_wrap(__isl_take isl_map *map)
isl_size isl_map_dim(__isl_keep isl_map *map, enum isl_dim_type type)
__isl_null isl_map * isl_map_free(__isl_take isl_map *map)
struct isl_basic_set isl_basic_set
__isl_give isl_point * isl_point_copy(__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_qpolynomial_involves_dims(__isl_keep isl_qpolynomial *qp, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_pw_qpolynomial_fold * isl_pw_qpolynomial_fold_intersect_domain(__isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_set *set)
__isl_give isl_qpolynomial * isl_qpolynomial_set_dim_name(__isl_take isl_qpolynomial *qp, enum isl_dim_type type, unsigned pos, const char *s)
__isl_give isl_union_pw_qpolynomial_fold * isl_union_pw_qpolynomial_fold_zero(__isl_take isl_space *space, enum isl_fold type)
__isl_give isl_union_pw_qpolynomial * isl_union_pw_qpolynomial_align_params(__isl_take isl_union_pw_qpolynomial *upwqp, __isl_take isl_space *model)
__isl_give isl_space * isl_union_pw_qpolynomial_fold_get_space(__isl_keep isl_union_pw_qpolynomial_fold *upwf)
isl_bool isl_qpolynomial_is_nan(__isl_keep isl_qpolynomial *qp)
__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_null isl_pw_qpolynomial * isl_pw_qpolynomial_free(__isl_take isl_pw_qpolynomial *pwqp)
__isl_give isl_qpolynomial * isl_qpolynomial_sub(__isl_take isl_qpolynomial *qp1, __isl_take isl_qpolynomial *qp2)
__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)
__isl_give isl_space * isl_qpolynomial_get_domain_space(__isl_keep isl_qpolynomial *qp)
isl_stat isl_union_pw_qpolynomial_fold_foreach_pw_qpolynomial_fold(__isl_keep isl_union_pw_qpolynomial_fold *upwf, isl_stat(*fn)(__isl_take isl_pw_qpolynomial_fold *pwf, void *user), void *user)
__isl_null isl_qpolynomial * isl_qpolynomial_free(__isl_take isl_qpolynomial *qp)
__isl_give isl_set * isl_pw_qpolynomial_fold_domain(__isl_take isl_pw_qpolynomial_fold *pwf)
__isl_give isl_union_pw_qpolynomial_fold * isl_union_pw_qpolynomial_fold_align_params(__isl_take isl_union_pw_qpolynomial_fold *upwf, __isl_take isl_space *model)
__isl_give isl_qpolynomial * isl_qpolynomial_scale_val(__isl_take isl_qpolynomial *qp, __isl_take isl_val *v)
__isl_give isl_pw_qpolynomial_fold * isl_pw_qpolynomial_fold_copy(__isl_keep isl_pw_qpolynomial_fold *pwf)
__isl_null isl_union_pw_qpolynomial_fold * isl_union_pw_qpolynomial_fold_free(__isl_take isl_union_pw_qpolynomial_fold *upwf)
__isl_give isl_qpolynomial * isl_qpolynomial_add(__isl_take isl_qpolynomial *qp1, __isl_take isl_qpolynomial *qp2)
__isl_give isl_space * isl_pw_qpolynomial_fold_get_space(__isl_keep isl_pw_qpolynomial_fold *pwf)
isl_bool isl_pw_qpolynomial_fold_is_zero(__isl_keep isl_pw_qpolynomial_fold *pwf)
__isl_null isl_union_pw_qpolynomial * isl_union_pw_qpolynomial_free(__isl_take isl_union_pw_qpolynomial *upwqp)
isl_stat isl_union_pw_qpolynomial_foreach_pw_qpolynomial(__isl_keep isl_union_pw_qpolynomial *upwqp, isl_stat(*fn)(__isl_take isl_pw_qpolynomial *pwqp, void *user), void *user)
__isl_null isl_pw_qpolynomial_fold * isl_pw_qpolynomial_fold_free(__isl_take isl_pw_qpolynomial_fold *pwf)
isl_bool isl_qpolynomial_is_zero(__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_qpolynomial * isl_qpolynomial_substitute(__isl_take isl_qpolynomial *qp, enum isl_dim_type type, unsigned first, unsigned n, __isl_keep isl_qpolynomial **subs)
__isl_give isl_pw_qpolynomial_fold * isl_pw_qpolynomial_fold_bound(__isl_take isl_pw_qpolynomial_fold *pwf, isl_bool *tight)
isl_bool isl_qpolynomial_plain_is_equal(__isl_keep isl_qpolynomial *qp1, __isl_keep isl_qpolynomial *qp2)
__isl_give isl_space * isl_union_pw_qpolynomial_get_space(__isl_keep isl_union_pw_qpolynomial *upwqp)
__isl_give isl_qpolynomial * isl_qpolynomial_drop_dims(__isl_take isl_qpolynomial *qp, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_val * isl_qpolynomial_eval(__isl_take isl_qpolynomial *qp, __isl_take isl_point *pnt)
__isl_give isl_qpolynomial * isl_qpolynomial_insert_dims(__isl_take isl_qpolynomial *qp, enum isl_dim_type type, unsigned first, unsigned n)
struct isl_union_pw_qpolynomial_fold isl_union_pw_qpolynomial_fold
struct isl_union_pw_qpolynomial isl_union_pw_qpolynomial
__isl_export __isl_give isl_set * isl_set_universe(__isl_take isl_space *space)
__isl_export __isl_give isl_set * isl_set_subtract(__isl_take isl_set *set1, __isl_take isl_set *set2)
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_export __isl_give isl_set * isl_set_intersect_params(__isl_take isl_set *set, __isl_take isl_set *params)
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
__isl_export isl_bool isl_set_is_subset(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_set * isl_set_copy(__isl_keep isl_set *set)
__isl_export __isl_give isl_set * isl_set_intersect(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
__isl_export isl_bool isl_set_is_empty(__isl_keep isl_set *set)
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_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_tuple_is_equal(__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_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_union_pw_qpolynomial_fold * res
isl_union_pw_qpolynomial_fold * upwf
enum isl_dim_type dst_type
enum isl_dim_type src_type
isl_qpolynomial_list * list
__isl_null isl_union_map * isl_union_map_free(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_space * isl_union_map_get_space(__isl_keep isl_union_map *umap)
__isl_give isl_union_map * isl_union_map_align_params(__isl_take isl_union_map *umap, __isl_take isl_space *model)
__isl_export isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap, isl_stat(*fn)(__isl_take isl_map *map, void *user), void *user)
struct isl_union_set isl_union_set
__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_zero(isl_ctx *ctx)
isl_ctx * isl_val_get_ctx(__isl_keep isl_val *val)
__isl_export isl_bool isl_val_is_neg(__isl_keep isl_val *v)
__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_null isl_vec * isl_vec_free(__isl_take isl_vec *vec)
__isl_give isl_vec * isl_vec_alloc(isl_ctx *ctx, unsigned size)