Lines Matching refs:bset
35 __isl_take isl_basic_set *bset) in unit_box_base_points() argument
41 if (!bset) in unit_box_base_points()
44 if (bset->n_eq != 0) { in unit_box_base_points()
45 isl_space *space = isl_basic_set_get_space(bset); in unit_box_base_points()
46 isl_basic_set_free(bset); in unit_box_base_points()
50 total = isl_basic_set_dim(bset, isl_dim_all); in unit_box_base_points()
53 unit_box = isl_basic_set_alloc_space(isl_basic_set_get_space(bset), in unit_box_base_points()
54 0, 0, bset->n_ineq); in unit_box_base_points()
56 for (i = 0; i < bset->n_ineq; ++i) { in unit_box_base_points()
60 isl_seq_cpy(unit_box->ineq[k], bset->ineq[i], 1 + total); in unit_box_base_points()
69 isl_basic_set_free(bset); in unit_box_base_points()
72 isl_basic_set_free(bset); in unit_box_base_points()
85 static __isl_give isl_vec *initial_solution(__isl_keep isl_basic_set *bset, in initial_solution() argument
92 unit_box = unit_box_base_points(isl_basic_set_copy(bset)); in initial_solution()
94 res = isl_basic_set_solve_lp(unit_box, 0, f, bset->ctx->one, in initial_solution()
103 return isl_basic_set_sample_vec(isl_basic_set_copy(bset)); in initial_solution()
108 static __isl_give isl_basic_set *add_bounds(__isl_take isl_basic_set *bset, in add_bounds() argument
114 total = isl_basic_set_dim(bset, isl_dim_all); in add_bounds()
116 return isl_basic_set_free(bset); in add_bounds()
117 bset = isl_basic_set_extend_constraints(bset, 0, 2); in add_bounds()
119 k = isl_basic_set_alloc_inequality(bset); in add_bounds()
122 isl_seq_cpy(bset->ineq[k], f, 1 + total); in add_bounds()
123 isl_int_sub(bset->ineq[k][0], bset->ineq[k][0], l); in add_bounds()
125 k = isl_basic_set_alloc_inequality(bset); in add_bounds()
128 isl_seq_neg(bset->ineq[k], f, 1 + total); in add_bounds()
129 isl_int_add(bset->ineq[k][0], bset->ineq[k][0], u); in add_bounds()
131 return bset; in add_bounds()
133 isl_basic_set_free(bset); in add_bounds()
153 static __isl_give isl_vec *solve_ilp_search(__isl_keep isl_basic_set *bset, in solve_ilp_search() argument
172 slice = add_bounds(isl_basic_set_copy(bset), f, l, tmp); in solve_ilp_search()
212 static enum isl_lp_result solve_ilp(__isl_keep isl_basic_set *bset, in solve_ilp() argument
219 res = isl_basic_set_solve_lp(bset, 0, f, bset->ctx->one, in solve_ilp()
232 sol = initial_solution(bset, f); in solve_ilp()
252 sol = solve_ilp_search(bset, f, opt, sol, l, u); in solve_ilp()
267 static enum isl_lp_result solve_ilp_with_eq(__isl_keep isl_basic_set *bset, in solve_ilp_with_eq() argument
275 bset = isl_basic_set_copy(bset); in solve_ilp_with_eq()
276 dim = isl_basic_set_dim(bset, isl_dim_all); in solve_ilp_with_eq()
279 v = isl_vec_alloc(bset->ctx, 1 + dim); in solve_ilp_with_eq()
283 bset = isl_basic_set_remove_equalities(bset, &T, NULL); in solve_ilp_with_eq()
287 res = isl_basic_set_solve_ilp(bset, max, v->el, opt, sol_p); in solve_ilp_with_eq()
295 isl_basic_set_free(bset); in solve_ilp_with_eq()
299 isl_basic_set_free(bset); in solve_ilp_with_eq()
311 enum isl_lp_result isl_basic_set_solve_ilp(__isl_keep isl_basic_set *bset, in isl_basic_set_solve_ilp() argument
320 if (isl_basic_set_check_no_params(bset) < 0) in isl_basic_set_solve_ilp()
323 if (isl_basic_set_plain_is_empty(bset)) in isl_basic_set_solve_ilp()
326 if (bset->n_eq) in isl_basic_set_solve_ilp()
327 return solve_ilp_with_eq(bset, max, f, opt, sol_p); in isl_basic_set_solve_ilp()
329 dim = isl_basic_set_dim(bset, isl_dim_all); in isl_basic_set_solve_ilp()
336 res = solve_ilp(bset, f, opt, sol_p); in isl_basic_set_solve_ilp()
346 static enum isl_lp_result basic_set_opt(__isl_keep isl_basic_set *bset, int max, in basic_set_opt() argument
353 bset = isl_basic_set_copy(bset); in basic_set_opt()
354 bset = isl_basic_set_underlying_set(bset); in basic_set_opt()
355 res = isl_basic_set_solve_ilp(bset, max, obj->v->el + 1, opt, NULL); in basic_set_opt()
356 isl_basic_set_free(bset); in basic_set_opt()
360 enum isl_lp_result isl_basic_set_opt(__isl_keep isl_basic_set *bset, int max, in isl_basic_set_opt() argument
371 if (!bset || !obj) in isl_basic_set_opt()
375 if (!isl_space_is_equal(bset->dim, obj->ls->dim)) in isl_basic_set_opt()
383 bset_n_div = isl_basic_set_dim(bset, isl_dim_div); in isl_basic_set_opt()
388 return basic_set_opt(bset, max, obj, opt); in isl_basic_set_opt()
390 bset = isl_basic_set_copy(bset); in isl_basic_set_opt()
393 bset_div = isl_basic_set_get_divs(bset); in isl_basic_set_opt()
401 bset = isl_basic_set_expand_divs(bset, isl_mat_copy(div), exp1); in isl_basic_set_opt()
404 res = basic_set_opt(bset, max, obj, opt); in isl_basic_set_opt()
410 isl_basic_set_free(bset); in isl_basic_set_opt()
419 isl_basic_set_free(bset); in isl_basic_set_opt()
538 __isl_give isl_val *isl_basic_set_opt_val(__isl_keep isl_basic_set *bset, in isl_basic_set_opt_val() argument
545 if (!bset || !obj) in isl_basic_set_opt_val()
552 lp_res = isl_basic_set_opt(bset, max, obj, &res->n); in isl_basic_set_opt_val()
562 __isl_give isl_val *isl_basic_set_max_val(__isl_keep isl_basic_set *bset, in isl_basic_set_max_val() argument
565 return isl_basic_set_opt_val(bset, 1, obj); in isl_basic_set_max_val()
882 __isl_give isl_val *isl_basic_set_dim_max_val(__isl_take isl_basic_set *bset, in isl_basic_set_dim_max_val() argument
885 return isl_basic_set_dim_opt_val(bset, 1, pos); in isl_basic_set_dim_max_val()