44 if (bset->n_eq != 0) {
56 for (i = 0; i < bset->n_ineq; ++i) {
61 for (j = 0; j <
total; ++j) {
65 unit_box->ineq[k][0], unit_box->ineq[k][1 + j]);
123 isl_int_sub(bset->ineq[k][0], bset->ineq[k][0], l);
129 isl_int_add(bset->ineq[k][0], bset->ineq[k][0], u);
179 if (sample->
size > 0) {
235 if (sol->
size == 0) {
380 "expecting integer affine expression",
385 if (bset_n_div < 0 || obj_n_div < 0)
387 if (bset_n_div == 0 && obj_n_div == 0)
396 if (!bset_div || (bset_n_div && !exp1) || (obj_n_div && !exp2))
451 for (i = 1; i <
set->n; ++i) {
699#define TYPE isl_pw_aff
703#define TYPE isl_pw_multi_aff
707#define TYPE isl_multi_pw_aff
760#define TYPE isl_union_pw_aff
779 n = isl_multi_union_pw_aff_size(
mupa);
781 mupa = isl_multi_union_pw_aff_free(
mupa);
785 mv = isl_multi_val_zero(isl_multi_union_pw_aff_get_space(
mupa));
787 for (i = 0; i <
n; ++i) {
791 upa = isl_multi_union_pw_aff_get_union_pw_aff(
mupa, i);
793 mv = isl_multi_val_set_val(mv, i, v);
796 isl_multi_union_pw_aff_free(
mupa);
813 obj = isl_multi_union_pw_aff_copy(
obj);
859#define BASE basic_set
871 return isl_basic_set_dim_opt_val(bset, 1,
pos);
886 return isl_set_dim_opt_val(
set, 0,
pos);
897 return isl_set_dim_opt_val(
set, 1,
pos);
isl_ctx * isl_aff_get_ctx(__isl_keep isl_aff *aff)
__isl_give isl_aff * isl_aff_align_params(__isl_take isl_aff *aff, __isl_take isl_space *model)
__isl_null isl_aff * isl_aff_free(__isl_take isl_aff *aff)
__isl_null isl_union_pw_aff * isl_union_pw_aff_free(__isl_take isl_union_pw_aff *upa)
isl_ctx * isl_pw_aff_get_ctx(__isl_keep isl_pw_aff *pwaff)
isl_stat isl_union_pw_aff_foreach_pw_aff(__isl_keep isl_union_pw_aff *upa, isl_stat(*fn)(__isl_take isl_pw_aff *pa, void *user), void *user)
isl_stat isl_pw_aff_foreach_piece(__isl_keep isl_pw_aff *pwaff, isl_stat(*fn)(__isl_take isl_set *set, __isl_take isl_aff *aff, void *user), void *user)
__isl_null isl_pw_aff * isl_pw_aff_free(__isl_take 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_size isl_aff_dim(__isl_keep isl_aff *aff, enum isl_dim_type type)
isl_ctx * isl_union_pw_aff_get_ctx(__isl_keep isl_union_pw_aff *upa)
__isl_export __isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_intersect_domain(__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_union_set *uset)
struct isl_union_pw_aff isl_union_pw_aff
struct isl_multi_union_pw_aff isl_multi_union_pw_aff
#define isl_die(ctx, errno, msg, code)
#define isl_alloc_array(ctx, type, n)
isl_stat isl_stat(*) void user)
__isl_give isl_aff * isl_aff_expand_divs(__isl_take isl_aff *aff, __isl_take isl_mat *div, int *exp)
__isl_give isl_basic_set * isl_basic_set_remove_equalities(__isl_take isl_basic_set *bset, __isl_give isl_mat **T, __isl_give isl_mat **T2)
static __isl_give isl_val * isl_union_pw_aff_opt_val(__isl_take isl_union_pw_aff *upa, int max)
static enum isl_lp_result basic_set_opt(__isl_keep isl_basic_set *bset, int max, __isl_keep isl_aff *obj, isl_int *opt)
static isl_stat piece_opt(__isl_take isl_set *set, __isl_take isl_aff *aff, void *user)
static __isl_give isl_val * val_opt(__isl_take isl_val *v1, __isl_take isl_val *v2, int max)
static enum isl_lp_result solve_ilp(__isl_keep isl_basic_set *bset, isl_int *f, isl_int *opt, __isl_give isl_vec **sol_p)
static __isl_give isl_basic_set * unit_box_base_points(__isl_take isl_basic_set *bset)
__isl_give isl_val * isl_set_dim_min_val(__isl_take isl_set *set, int pos)
__isl_give isl_val * isl_set_opt_val(__isl_keep isl_set *set, int max, __isl_keep isl_aff *obj)
static __isl_give isl_val * convert_lp_result(enum isl_lp_result lp_res, __isl_take isl_val *v, int max)
__isl_give isl_val * isl_set_min_val(__isl_keep isl_set *set, __isl_keep isl_aff *obj)
static __isl_give isl_basic_set * add_bounds(__isl_take isl_basic_set *bset, isl_int *f, isl_int l, isl_int u)
__isl_give isl_val * isl_basic_set_opt_val(__isl_keep isl_basic_set *bset, int max, __isl_keep isl_aff *obj)
__isl_give isl_val * isl_set_max_val(__isl_keep isl_set *set, __isl_keep isl_aff *obj)
static __isl_give isl_val * isl_pw_aff_opt_val(__isl_take isl_pw_aff *pa, int max)
__isl_give isl_multi_val * isl_multi_union_pw_aff_min_multi_val(__isl_take isl_multi_union_pw_aff *mupa)
static __isl_give isl_multi_val * isl_multi_union_pw_aff_opt_multi_val(__isl_take isl_multi_union_pw_aff *mupa, int max)
enum isl_lp_result isl_basic_set_opt(__isl_keep isl_basic_set *bset, int max, __isl_keep isl_aff *obj, isl_int *opt)
__isl_give isl_val * isl_basic_set_max_val(__isl_keep isl_basic_set *bset, __isl_keep isl_aff *obj)
static __isl_give isl_multi_val * isl_union_set_opt_multi_union_pw_aff(__isl_keep isl_union_set *uset, int max, __isl_keep isl_multi_union_pw_aff *obj)
static enum isl_lp_result isl_set_opt_aligned(__isl_keep isl_set *set, int max, __isl_keep isl_aff *obj, isl_int *opt)
static isl_stat pw_aff_opt(__isl_take isl_pw_aff *pa, void *user)
static enum isl_lp_result solve_ilp_with_eq(__isl_keep isl_basic_set *bset, int max, isl_int *f, isl_int *opt, __isl_give isl_vec **sol_p)
enum isl_lp_result isl_set_opt(__isl_keep isl_set *set, int max, __isl_keep isl_aff *obj, isl_int *opt)
enum isl_lp_result isl_basic_set_solve_ilp(__isl_keep isl_basic_set *bset, int max, isl_int *f, isl_int *opt, __isl_give isl_vec **sol_p)
static __isl_give isl_vec * solve_ilp_search(__isl_keep isl_basic_set *bset, isl_int *f, isl_int *opt, __isl_take isl_vec *sol, isl_int l, isl_int u)
static __isl_give isl_vec * initial_solution(__isl_keep isl_basic_set *bset, isl_int *f)
__isl_give isl_val * isl_set_dim_max_val(__isl_take isl_set *set, int pos)
__isl_give isl_multi_val * isl_multi_union_pw_aff_max_multi_val(__isl_take isl_multi_union_pw_aff *mupa)
__isl_give isl_val * isl_basic_set_dim_max_val(__isl_take isl_basic_set *bset, int pos)
__isl_give isl_multi_val * isl_union_set_min_multi_union_pw_aff(__isl_keep isl_union_set *uset, __isl_keep isl_multi_union_pw_aff *obj)
#define isl_int_is_nonneg(i)
#define isl_int_is_one(i)
#define isl_int_neg(r, i)
#define isl_int_add_ui(r, i, j)
#define isl_int_add(r, i, j)
#define isl_int_set(r, i)
#define isl_int_fdiv_q_ui(r, i, j)
#define isl_int_set_si(r, i)
#define isl_int_sub_ui(r, i, j)
#define isl_int_sub(r, i, j)
__isl_give isl_mat * isl_merge_divs(__isl_keep isl_mat *div1, __isl_keep isl_mat *div2, int *exp1, int *exp2)
enum isl_lp_result isl_basic_set_solve_lp(__isl_keep isl_basic_set *bset, int max, isl_int *f, isl_int d, isl_int *opt, isl_int *opt_denom, __isl_give isl_vec **sol)
__isl_give isl_basic_set * isl_basic_set_alloc_space(__isl_take isl_space *space, unsigned extra, unsigned n_eq, unsigned n_ineq)
__isl_give isl_basic_set * isl_basic_set_expand_divs(__isl_take isl_basic_set *bset, __isl_take isl_mat *div, int *exp)
__isl_give isl_basic_set * isl_basic_set_extend_constraints(__isl_take isl_basic_set *base, unsigned n_eq, unsigned n_ineq)
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
isl_stat isl_basic_set_check_no_params(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_underlying_set(__isl_take isl_basic_set *bset)
__isl_give isl_mat * isl_basic_set_get_divs(__isl_keep isl_basic_set *bset)
isl_bool isl_set_space_has_equal_params(__isl_keep isl_set *set, __isl_keep isl_space *space)
int isl_basic_set_alloc_inequality(__isl_keep isl_basic_set *bset)
__isl_give isl_vec * isl_basic_set_sample_vec(__isl_take isl_basic_set *bset)
void isl_seq_inner_product(isl_int *p1, isl_int *p2, unsigned len, isl_int *prod)
void isl_seq_cpy(isl_int *dst, isl_int *src, unsigned len)
void isl_seq_neg(isl_int *dst, isl_int *src, unsigned len)
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_alloc(isl_ctx *ctx)
__isl_give isl_val * isl_val_normalize(__isl_take isl_val *v)
struct isl_basic_set isl_basic_set
__isl_give isl_mat * isl_mat_copy(__isl_keep isl_mat *mat)
__isl_give isl_vec * isl_mat_vec_product(__isl_take isl_mat *mat, __isl_take isl_vec *vec)
__isl_null isl_mat * isl_mat_free(__isl_take isl_mat *mat)
__isl_give isl_vec * isl_vec_mat_product(__isl_take isl_vec *vec, __isl_take isl_mat *mat)
isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
__isl_export __isl_give isl_space * isl_set_get_space(__isl_keep isl_set *set)
__isl_give isl_space * isl_basic_set_get_space(__isl_keep isl_basic_set *bset)
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
isl_bool isl_basic_set_plain_is_empty(__isl_keep isl_basic_set *bset)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
__isl_give isl_set * isl_set_copy(__isl_keep isl_set *set)
__isl_give isl_basic_set * isl_basic_set_empty(__isl_take isl_space *space)
__isl_give isl_set * isl_set_align_params(__isl_take isl_set *set, __isl_take isl_space *model)
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
__isl_export isl_bool isl_space_is_equal(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
struct isl_union_set isl_union_set
__isl_give isl_union_set * isl_union_set_copy(__isl_keep isl_union_set *uset)
__isl_export isl_bool isl_val_is_nan(__isl_keep 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_neginfty(isl_ctx *ctx)
isl_ctx * isl_val_get_ctx(__isl_keep isl_val *val)
__isl_export __isl_give isl_val * isl_val_infty(isl_ctx *ctx)
__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_min(__isl_take isl_val *v1, __isl_take isl_val *v2)
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_alloc(isl_ctx *ctx, unsigned size)
__isl_give isl_vec * isl_vec_ceil(__isl_take isl_vec *vec)