doc: document product functions
authorSven Verdoolaege <skimo@kotnet.org>
Wed, 19 Jan 2011 20:26:28 +0000 (21:26 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Wed, 19 Jan 2011 20:29:40 +0000 (21:29 +0100)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/map.h
include/isl/set.h

index a74a1b2..68088fa 100644 (file)
@@ -1591,6 +1591,34 @@ the same (number of) parameters.
                __isl_take isl_union_map *umap1,
                __isl_take isl_union_map *umap2);
 
+=item * Cartesian Product
+
+       __isl_give isl_set *isl_set_product(
+               __isl_take isl_set *set1,
+               __isl_take isl_set *set2);
+       __isl_give isl_union_set *isl_union_set_product(
+               __isl_take isl_union_set *uset1,
+               __isl_take isl_union_set *uset2);
+       __isl_give isl_map *isl_map_product(
+               __isl_take isl_map *map1,
+               __isl_take isl_map *map2);
+       __isl_give isl_union_map *isl_union_map_product(
+               __isl_take isl_union_map *umap1,
+               __isl_take isl_union_map *umap2);
+
+The above functions compute the cross product of the given
+sets or relations.  The domains and ranges of the results
+are wrapped maps between domains and ranges of the inputs.
+To obtain a ``flat'' product, use the following functions
+instead.
+
+       __isl_give isl_set *isl_set_flat_product(
+               __isl_take isl_set *set1,
+               __isl_take isl_set *set2);
+       __isl_give isl_map *isl_map_flat_product(
+               __isl_take isl_map *map1,
+               __isl_take isl_map *map2);
+
 =item * Simplification
 
        __isl_give isl_basic_set *isl_basic_set_gist(
index 06c9af9..dc19591 100644 (file)
@@ -271,7 +271,8 @@ __isl_give isl_map *isl_map_apply_domain(
 __isl_give isl_map *isl_map_apply_range(
                __isl_take isl_map *map1,
                __isl_take isl_map *map2);
-struct isl_map *isl_map_product(struct isl_map *map1, struct isl_map *map2);
+__isl_give isl_map *isl_map_product(__isl_take isl_map *map1,
+       __isl_take isl_map *map2);
 __isl_give isl_map *isl_map_flat_product(__isl_take isl_map *map1,
        __isl_take isl_map *map2);
 __isl_give isl_map *isl_map_intersect(__isl_take isl_map *map1,
index 1cc9c92..8382362 100644 (file)
@@ -188,7 +188,8 @@ struct isl_set *isl_set_union_disjoint(
 __isl_give isl_set *isl_set_union(
                __isl_take isl_set *set1,
                __isl_take isl_set *set2);
-struct isl_set *isl_set_product(struct isl_set *set1, struct isl_set *set2);
+__isl_give isl_set *isl_set_product(__isl_take isl_set *set1,
+       __isl_take isl_set *set2);
 __isl_give isl_set *isl_set_flat_product(__isl_take isl_set *set1,
        __isl_take isl_set *set2);
 __isl_give isl_set *isl_set_intersect(