From dc508bd321b77d974774f9a69bb2b061eb9562e5 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Wed, 30 Sep 2009 12:30:47 +0200 Subject: [PATCH] add isl_basic_map_lexmin --- doc/user.pod | 10 +++++++++- include/isl_map.h | 1 + isl_map.c | 22 ++++++++++------------ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/doc/user.pod b/doc/user.pod index 03cd214..de51235 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -852,7 +852,7 @@ is equal to C. __isl_give isl_set **empty); Given a basic set C, the following function simply -returns a set contains the lexicographic minimum +returns a set containing the lexicographic minimum of the elements in C. __isl_give isl_set *isl_basic_set_lexmin( @@ -879,6 +879,14 @@ is equal to C. __isl_take isl_basic_set *dom, __isl_give isl_set **empty); +Given a basic map C, the following function simply +returns a map mapping each element in the domain of +C to the lexicographic minimum of all elements associated +to that element. + + __isl_give isl_map *isl_basic_map_lexmin( + __isl_take isl_basic_map *bmap); + =head1 Applications Although C is mainly meant to be used as a library, diff --git a/include/isl_map.h b/include/isl_map.h index 970d6d0..887393c 100644 --- a/include/isl_map.h +++ b/include/isl_map.h @@ -198,6 +198,7 @@ __isl_give isl_map *isl_basic_map_partial_lexmax( __isl_give isl_map *isl_basic_map_partial_lexmin( __isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, __isl_give isl_set **empty); +__isl_give isl_map *isl_basic_map_lexmin(__isl_take isl_basic_map *bmap); void isl_basic_map_dump(__isl_keep isl_basic_map *bmap, FILE *out, int indent); diff --git a/isl_map.c b/isl_map.c index 72fdb41..5d7a01c 100644 --- a/isl_map.c +++ b/isl_map.c @@ -3195,29 +3195,27 @@ struct isl_set *isl_basic_set_partial_lexmax( dom, empty); } -struct isl_set *isl_basic_set_lexmin(struct isl_basic_set *bset) +__isl_give isl_map *isl_basic_map_lexmin(__isl_take isl_basic_map *bmap) { - struct isl_basic_map *bmap = NULL; struct isl_basic_set *dom = NULL; struct isl_map *min; - struct isl_dim *param_dim; + struct isl_dim *dom_dim; - if (!bset) - goto error; - bmap = isl_basic_map_from_basic_set(bset, isl_dim_copy(bset->dim)); if (!bmap) goto error; - param_dim = isl_dim_domain(isl_dim_copy(bmap->dim)); - dom = isl_basic_set_universe(param_dim); - if (!dom) - goto error; - min = isl_basic_map_partial_lexmin(bmap, dom, NULL); - return isl_map_range(min); + dom_dim = isl_dim_domain(isl_dim_copy(bmap->dim)); + dom = isl_basic_set_universe(dom_dim); + return isl_basic_map_partial_lexmin(bmap, dom, NULL); error: isl_basic_map_free(bmap); return NULL; } +__isl_give isl_set *isl_basic_set_lexmin(__isl_take isl_basic_set *bset) +{ + return (isl_set *)isl_basic_map_lexmin((isl_basic_map *)bset); +} + static struct isl_map *isl_map_reset_dim(struct isl_map *map, struct isl_dim *dim) { -- 2.7.4