Lines Matching refs:bset

27 static __isl_give isl_vec *empty_sample(__isl_take isl_basic_set *bset)  in empty_sample()  argument
31 vec = isl_vec_alloc(bset->ctx, 0); in empty_sample()
32 isl_basic_set_free(bset); in empty_sample()
40 static __isl_give isl_vec *zero_sample(__isl_take isl_basic_set *bset) in zero_sample() argument
45 dim = isl_basic_set_dim(bset, isl_dim_all); in zero_sample()
48 sample = isl_vec_alloc(bset->ctx, 1 + dim); in zero_sample()
53 isl_basic_set_free(bset); in zero_sample()
56 isl_basic_set_free(bset); in zero_sample()
60 static __isl_give isl_vec *interval_sample(__isl_take isl_basic_set *bset) in interval_sample() argument
66 bset = isl_basic_set_simplify(bset); in interval_sample()
67 if (!bset) in interval_sample()
69 if (isl_basic_set_plain_is_empty(bset)) in interval_sample()
70 return empty_sample(bset); in interval_sample()
71 if (bset->n_eq == 0 && bset->n_ineq == 0) in interval_sample()
72 return zero_sample(bset); in interval_sample()
74 sample = isl_vec_alloc(bset->ctx, 2); in interval_sample()
77 if (!bset) in interval_sample()
81 if (bset->n_eq > 0) { in interval_sample()
82 isl_assert(bset->ctx, bset->n_eq == 1, goto error); in interval_sample()
83 isl_assert(bset->ctx, bset->n_ineq == 0, goto error); in interval_sample()
84 if (isl_int_is_one(bset->eq[0][1])) in interval_sample()
85 isl_int_neg(sample->el[1], bset->eq[0][0]); in interval_sample()
87 isl_assert(bset->ctx, isl_int_is_negone(bset->eq[0][1]), in interval_sample()
89 isl_int_set(sample->el[1], bset->eq[0][0]); in interval_sample()
91 isl_basic_set_free(bset); in interval_sample()
96 if (isl_int_is_one(bset->ineq[0][1])) in interval_sample()
97 isl_int_neg(sample->block.data[1], bset->ineq[0][0]); in interval_sample()
99 isl_int_set(sample->block.data[1], bset->ineq[0][0]); in interval_sample()
100 for (i = 1; i < bset->n_ineq; ++i) { in interval_sample()
102 bset->ineq[i], 2, &t); in interval_sample()
107 if (i < bset->n_ineq) { in interval_sample()
109 return empty_sample(bset); in interval_sample()
112 isl_basic_set_free(bset); in interval_sample()
115 isl_basic_set_free(bset); in interval_sample()
127 static __isl_give isl_vec *sample_eq(__isl_take isl_basic_set *bset, in sample_eq() argument
133 if (!bset) in sample_eq()
136 bset = isl_basic_set_remove_equalities(bset, &T, NULL); in sample_eq()
137 sample = recurse(bset); in sample_eq()
154 struct isl_basic_set *bset; in tab_equalities() local
159 bset = isl_tab_peek_bset(tab); in tab_equalities()
160 isl_assert(tab->mat->ctx, bset, return NULL); in tab_equalities()
176 if (i < bset->n_eq) in tab_equalities()
177 isl_seq_cpy(eq->row[j], bset->eq[i] + 1, tab->n_var); in tab_equalities()
180 bset->ineq[i - bset->n_eq] + 1, tab->n_var); in tab_equalities()
183 isl_assert(bset->ctx, j == n_eq, goto error); in tab_equalities()
532 static __isl_give isl_vec *sample_bounded(__isl_take isl_basic_set *bset);
550 static isl_bool factor_sample(__isl_keep isl_basic_set *bset, void *user) in factor_sample() argument
556 n = isl_basic_set_dim(bset, isl_dim_set); in factor_sample()
560 sample = sample_bounded(isl_basic_set_copy(bset)); in factor_sample()
578 static __isl_give isl_vec *factored_sample(__isl_take isl_basic_set *bset, in factored_sample() argument
586 ctx = isl_basic_set_get_ctx(bset); in factored_sample()
587 total = isl_basic_set_dim(bset, isl_dim_all); in factored_sample()
607 isl_basic_set_free(bset); in factored_sample()
611 isl_basic_set_free(bset); in factored_sample()
624 static __isl_give isl_vec *sample_bounded(__isl_take isl_basic_set *bset) in sample_bounded() argument
631 if (!bset) in sample_bounded()
634 if (isl_basic_set_plain_is_empty(bset)) in sample_bounded()
635 return empty_sample(bset); in sample_bounded()
637 dim = isl_basic_set_dim(bset, isl_dim_all); in sample_bounded()
639 bset = isl_basic_set_free(bset); in sample_bounded()
641 return zero_sample(bset); in sample_bounded()
643 return interval_sample(bset); in sample_bounded()
644 if (bset->n_eq > 0) in sample_bounded()
645 return sample_eq(bset, sample_bounded); in sample_bounded()
647 f = isl_basic_set_factorizer(bset); in sample_bounded()
651 return factored_sample(bset, f); in sample_bounded()
654 tab = isl_tab_from_basic_set(bset, 1); in sample_bounded()
657 ISL_F_SET(bset, ISL_BASIC_SET_EMPTY); in sample_bounded()
658 sample = isl_vec_alloc(isl_basic_set_get_ctx(bset), 0); in sample_bounded()
659 isl_basic_set_free(bset); in sample_bounded()
663 if (!ISL_F_ISSET(bset, ISL_BASIC_SET_NO_IMPLICIT)) in sample_bounded()
672 isl_vec_free(bset->sample); in sample_bounded()
673 bset->sample = isl_vec_copy(sample); in sample_bounded()
676 isl_basic_set_free(bset); in sample_bounded()
680 isl_basic_set_free(bset); in sample_bounded()
697 static __isl_give isl_basic_set *plug_in(__isl_take isl_basic_set *bset, in plug_in() argument
704 total = isl_basic_set_dim(bset, isl_dim_all); in plug_in()
708 T = isl_mat_alloc(bset->ctx, 1 + total, 1 + total - (sample->size - 1)); in plug_in()
722 bset = isl_basic_set_preimage(bset, T); in plug_in()
723 return bset; in plug_in()
725 isl_basic_set_free(bset); in plug_in()
733 static __isl_give isl_vec *rational_sample(__isl_take isl_basic_set *bset) in rational_sample() argument
738 if (!bset) in rational_sample()
741 tab = isl_tab_from_basic_set(bset, 0); in rational_sample()
745 isl_basic_set_free(bset); in rational_sample()
944 __isl_take isl_basic_set *bset, __isl_take isl_basic_set *cone) in isl_basic_set_sample_with_cone() argument
955 if (!bset || total < 0) in isl_basic_set_sample_with_cone()
958 ctx = isl_basic_set_get_ctx(bset); in isl_basic_set_sample_with_cone()
968 bset = isl_basic_set_preimage(bset, isl_mat_copy(U)); in isl_basic_set_sample_with_cone()
970 bounded = isl_basic_set_copy(bset); in isl_basic_set_sample_with_cone()
976 isl_basic_set_free(bset); in isl_basic_set_sample_with_cone()
981 bset = plug_in(bset, isl_vec_copy(sample)); in isl_basic_set_sample_with_cone()
982 cone_sample = rational_sample(bset); in isl_basic_set_sample_with_cone()
989 isl_basic_set_free(bset); in isl_basic_set_sample_with_cone()
1026 struct isl_basic_set *bset = NULL; in tab_shift_cone() local
1035 bset = isl_tab_peek_bset(tab_cone); in tab_shift_cone()
1037 for (i = 0; i < bset->n_ineq; ++i) { in tab_shift_cone()
1042 row = isl_vec_alloc(bset->ctx, tab_cone->n_var); in tab_shift_cone()
1045 isl_seq_cpy(row->el, bset->ineq[i] + 1, tab_cone->n_var); in tab_shift_cone()
1055 isl_int_add(bset->ineq[i][0], bset->ineq[i][0], v); in tab_shift_cone()
1056 ok = isl_tab_add_ineq(tab, bset->ineq[i]) >= 0; in tab_shift_cone()
1057 isl_int_sub(bset->ineq[i][0], bset->ineq[i][0], v); in tab_shift_cone()
1127 static __isl_give isl_vec *gbr_sample(__isl_take isl_basic_set *bset) in gbr_sample() argument
1132 dim = isl_basic_set_dim(bset, isl_dim_all); in gbr_sample()
1136 cone = isl_basic_set_recession_cone(isl_basic_set_copy(bset)); in gbr_sample()
1141 return isl_basic_set_sample_with_cone(bset, cone); in gbr_sample()
1144 return sample_bounded(bset); in gbr_sample()
1146 isl_basic_set_free(bset); in gbr_sample()
1150 static __isl_give isl_vec *basic_set_sample(__isl_take isl_basic_set *bset, in basic_set_sample() argument
1155 if (!bset) in basic_set_sample()
1158 ctx = bset->ctx; in basic_set_sample()
1159 if (isl_basic_set_plain_is_empty(bset)) in basic_set_sample()
1160 return empty_sample(bset); in basic_set_sample()
1162 dim = isl_basic_set_dim(bset, isl_dim_set); in basic_set_sample()
1164 isl_basic_set_check_no_params(bset) < 0 || in basic_set_sample()
1165 isl_basic_set_check_no_locals(bset) < 0) in basic_set_sample()
1168 if (bset->sample && bset->sample->size == 1 + dim) { in basic_set_sample()
1169 int contains = isl_basic_set_contains(bset, bset->sample); in basic_set_sample()
1173 struct isl_vec *sample = isl_vec_copy(bset->sample); in basic_set_sample()
1174 isl_basic_set_free(bset); in basic_set_sample()
1178 isl_vec_free(bset->sample); in basic_set_sample()
1179 bset->sample = NULL; in basic_set_sample()
1181 if (bset->n_eq > 0) in basic_set_sample()
1182 return sample_eq(bset, bounded ? isl_basic_set_sample_bounded in basic_set_sample()
1185 return zero_sample(bset); in basic_set_sample()
1187 return interval_sample(bset); in basic_set_sample()
1189 return bounded ? sample_bounded(bset) : gbr_sample(bset); in basic_set_sample()
1191 isl_basic_set_free(bset); in basic_set_sample()
1195 __isl_give isl_vec *isl_basic_set_sample_vec(__isl_take isl_basic_set *bset) in isl_basic_set_sample_vec() argument
1197 return basic_set_sample(bset, 0); in isl_basic_set_sample_vec()
1203 __isl_give isl_vec *isl_basic_set_sample_bounded(__isl_take isl_basic_set *bset) in isl_basic_set_sample_bounded() argument
1205 return basic_set_sample(bset, 1); in isl_basic_set_sample_bounded()
1212 struct isl_basic_set *bset = NULL; in isl_basic_set_from_vec() local
1221 bset = isl_basic_set_alloc(ctx, 0, vec->size - 1, 0, vec->size - 1, 0); in isl_basic_set_from_vec()
1222 dim = isl_basic_set_dim(bset, isl_dim_set); in isl_basic_set_from_vec()
1226 k = isl_basic_set_alloc_equality(bset); in isl_basic_set_from_vec()
1229 isl_seq_clr(bset->eq[k], 1 + dim); in isl_basic_set_from_vec()
1230 isl_int_neg(bset->eq[k][0], vec->el[1 + i]); in isl_basic_set_from_vec()
1231 isl_int_set(bset->eq[k][1 + i], vec->el[0]); in isl_basic_set_from_vec()
1233 bset->sample = vec; in isl_basic_set_from_vec()
1235 return bset; in isl_basic_set_from_vec()
1237 isl_basic_set_free(bset); in isl_basic_set_from_vec()
1244 struct isl_basic_set *bset; in isl_basic_map_sample() local
1247 bset = isl_basic_map_underlying_set(isl_basic_map_copy(bmap)); in isl_basic_map_sample()
1248 sample_vec = isl_basic_set_sample_vec(bset); in isl_basic_map_sample()
1257 bset = isl_basic_set_from_vec(sample_vec); in isl_basic_map_sample()
1258 return isl_basic_map_overlying_set(bset, bmap); in isl_basic_map_sample()
1264 __isl_give isl_basic_set *isl_basic_set_sample(__isl_take isl_basic_set *bset) in isl_basic_set_sample() argument
1266 return isl_basic_map_sample(bset); in isl_basic_set_sample()
1299 __isl_give isl_point *isl_basic_set_sample_point(__isl_take isl_basic_set *bset) in isl_basic_set_sample_point() argument
1304 space = isl_basic_set_get_space(bset); in isl_basic_set_sample_point()
1305 bset = isl_basic_set_underlying_set(bset); in isl_basic_set_sample_point()
1306 vec = isl_basic_set_sample_vec(bset); in isl_basic_set_sample_point()