From 8f29025d937e08f29cdd407fce8328ab4671aa07 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Wed, 22 Aug 2012 20:10:10 +0200 Subject: [PATCH] isl_pw_aff_nonneg_set: return a rational set if the input is marked rational Signed-off-by: Sven Verdoolaege --- isl_aff.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/isl_aff.c b/isl_aff.c index 6517d683..499298c4 100644 --- a/isl_aff.c +++ b/isl_aff.c @@ -1363,8 +1363,10 @@ __isl_give isl_aff *isl_aff_gist_params(__isl_take isl_aff *aff, /* 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; @@ -1372,10 +1374,20 @@ __isl_give isl_basic_set *isl_aff_nonneg_basic_set(__isl_take isl_aff *aff) 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. */ @@ -1867,8 +1879,11 @@ __isl_give isl_set *isl_pw_aff_nonneg_set(__isl_take isl_pw_aff *pwaff) 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); -- 2.11.4.GIT