From 9856900859740aaab3e399165a15ae35e10f0279 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Thu, 1 Apr 2010 17:17:42 +0200 Subject: [PATCH] add isl_set_recession_cone --- include/isl_set.h | 1 + isl_affine_hull.c | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/isl_set.h b/include/isl_set.h index 8af864f..3359113 100644 --- a/include/isl_set.h +++ b/include/isl_set.h @@ -213,6 +213,7 @@ __isl_give isl_basic_set *isl_set_affine_hull(__isl_take isl_set *set); __isl_give isl_basic_set *isl_set_convex_hull(__isl_take isl_set *set); struct isl_basic_set *isl_set_simple_hull(struct isl_set *set); struct isl_basic_set *isl_set_bounded_simple_hull(struct isl_set *set); +__isl_give isl_set *isl_set_recession_cone(__isl_take isl_set *set); struct isl_set *isl_set_union_disjoint( struct isl_set *set1, struct isl_set *set2); diff --git a/isl_affine_hull.c b/isl_affine_hull.c index cc99009..ffae59c 100644 --- a/isl_affine_hull.c +++ b/isl_affine_hull.c @@ -318,6 +318,32 @@ error: return NULL; } +__isl_give isl_set *isl_set_recession_cone(__isl_take isl_set *set) +{ + int i; + + if (!set) + return NULL; + if (set->n == 0) + return set; + + set = isl_set_remove_divs(set); + set = isl_set_cow(set); + if (!set) + return NULL; + + for (i = 0; i < set->n; ++i) { + set->p[i] = isl_basic_set_recession_cone(set->p[i]); + if (!set->p[i]) + goto error; + } + + return set; +error: + isl_set_free(set); + return NULL; +} + /* Extend an initial (under-)approximation of the affine hull of basic * set represented by the tableau "tab" * by looking for points that do not satisfy one of the equalities -- 2.7.4