summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/user.pod10
-rw-r--r--include/isl_map.h1
-rw-r--r--isl_map.c22
3 files changed, 20 insertions, 13 deletions
diff --git a/doc/user.pod b/doc/user.pod
index 03cd2145..de51235e 100644
--- a/doc/user.pod
+++ b/doc/user.pod
@@ -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,
diff --git a/include/isl_map.h b/include/isl_map.h
index 970d6d09..887393cd 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 72fdb414..5d7a01c5 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)
{