/* Return a basic set containing those elements in the space
* of aff where it is non-negative.
+ * If "rational" is set, then return a rational basic set.
*/
-__isl_give isl_basic_set *isl_aff_nonneg_basic_set(__isl_take isl_aff *aff)
+static __isl_give isl_basic_set *aff_nonneg_basic_set(
+ __isl_take isl_aff *aff, int rational)
{
isl_constraint *ineq;
isl_basic_set *bset;
ineq = isl_inequality_from_aff(aff);
bset = isl_basic_set_from_constraint(ineq);
+ if (rational)
+ bset = isl_basic_set_set_rational(bset);
bset = isl_basic_set_simplify(bset);
return bset;
}
+/* Return a basic set containing those elements in the space
+ * of aff where it is non-negative.
+ */
+__isl_give isl_basic_set *isl_aff_nonneg_basic_set(__isl_take isl_aff *aff)
+{
+ return aff_nonneg_basic_set(aff, 0);
+}
+
/* Return a basic set containing those elements in the domain space
* of aff where it is negative.
*/
for (i = 0; i < pwaff->n; ++i) {
isl_basic_set *bset;
isl_set *set_i;
+ int rational;
- bset = isl_aff_nonneg_basic_set(isl_aff_copy(pwaff->p[i].aff));
+ rational = isl_set_has_rational(pwaff->p[i].set);
+ bset = aff_nonneg_basic_set(isl_aff_copy(pwaff->p[i].aff),
+ rational);
set_i = isl_set_from_basic_set(bset);
set_i = isl_set_intersect(set_i, isl_set_copy(pwaff->p[i].set));
set = isl_set_union_disjoint(set, set_i);