__isl_give isl_map *isl_map_fixed_power(
__isl_take isl_map *map, isl_int exp);
+ __isl_give isl_map *isl_map_fixed_power_val(
+ __isl_take isl_map *map,
+ __isl_take isl_val *exp);
__isl_give isl_union_map *isl_union_map_fixed_power(
__isl_take isl_union_map *umap, isl_int exp);
+ __isl_give isl_union_map *
+ isl_union_map_fixed_power_val(
+ __isl_take isl_union_map *umap,
+ __isl_take isl_val *exp);
Compute the given power of C<map>, where C<exp> is assumed to be non-zero.
If the exponent C<exp> is negative, then the -C<exp> th power of the inverse
__isl_give isl_map *isl_set_lifting(__isl_take isl_set *set);
__isl_give isl_map *isl_map_fixed_power(__isl_take isl_map *map, isl_int exp);
+__isl_give isl_map *isl_map_fixed_power_val(__isl_take isl_map *map,
+ __isl_take isl_val *exp);
__isl_give isl_map *isl_map_power(__isl_take isl_map *map, int *exact);
__isl_give isl_map *isl_map_reaching_path_lengths(__isl_take isl_map *map,
int *exact);
#include <isl/map_type.h>
#include <isl/union_map_type.h>
#include <isl/printer.h>
+#include <isl/val.h>
#if defined(__cplusplus)
extern "C" {
__isl_give isl_union_map *isl_union_map_fixed_power(
__isl_take isl_union_map *umap, isl_int exp);
+__isl_give isl_union_map *isl_union_map_fixed_power_val(
+ __isl_take isl_union_map *umap, __isl_take isl_val *exp);
__isl_give isl_union_map *isl_union_map_power(__isl_take isl_union_map *umap,
int *exact);
__isl_give isl_union_map *isl_union_map_transitive_closure(
+#include <isl_val_private.h>
+
#define xFN(TYPE,NAME) TYPE ## _ ## NAME
#define FN(TYPE,NAME) xFN(TYPE,NAME)
FN(TYPE,free)(map);
return NULL;
}
+
+/* Compute the given non-zero power of "map" and return the result.
+ * If the exponent "exp" is negative, then the -exp th power of the inverse
+ * relation is computed.
+ */
+__isl_give TYPE *FN(TYPE,fixed_power_val)(__isl_take TYPE *map,
+ __isl_take isl_val *exp)
+{
+ if (!map || !exp)
+ goto error;
+ if (!isl_val_is_int(exp))
+ isl_die(FN(TYPE,get_ctx)(map), isl_error_invalid,
+ "expecting integer exponent", goto error);
+ map = FN(TYPE,fixed_power)(map, exp->n);
+ isl_val_free(exp);
+ return map;
+error:
+ FN(TYPE,free)(map);
+ isl_val_free(exp);
+ return NULL;
+}