add isl_basic_map_lexmin
authorSven Verdoolaege <skimo@kotnet.org>
Wed, 30 Sep 2009 10:30:47 +0000 (12:30 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Fri, 2 Oct 2009 05:43:45 +0000 (07:43 +0200)
doc/user.pod
include/isl_map.h
isl_map.c

index 03cd214..de51235 100644 (file)
@@ -852,7 +852,7 @@ is equal to C<dom>.
                __isl_give isl_set **empty);
 
 Given a basic set C<bset>, the following function simply
-returns a set contains the lexicographic minimum
+returns a set containing the lexicographic minimum
 of the elements in C<bset>.
 
        __isl_give isl_set *isl_basic_set_lexmin(
@@ -879,6 +879,14 @@ is equal to C<dom>.
                __isl_take isl_basic_set *dom,
                __isl_give isl_set **empty);
 
+Given a basic map C<bmap>, the following function simply
+returns a map mapping each element in the domain of
+C<bmap> 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<isl> is mainly meant to be used as a library,
index 970d6d0..887393c 100644 (file)
@@ -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);
 
index 72fdb41..5d7a01c 100644 (file)
--- 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)
 {