__isl_give isl_map *isl_map_copy(__isl_keep isl_map *map);
__isl_give isl_union_map *isl_union_map_copy(
__isl_keep isl_union_map *umap);
- void isl_basic_set_free(__isl_take isl_basic_set *bset);
+ void *isl_basic_set_free(__isl_take isl_basic_set *bset);
void *isl_set_free(__isl_take isl_set *set);
void *isl_union_set_free(__isl_take isl_union_set *uset);
- void isl_basic_map_free(__isl_take isl_basic_map *bmap);
- void isl_map_free(__isl_take isl_map *map);
+ void *isl_basic_map_free(__isl_take isl_basic_map *bmap);
+ void *isl_map_free(__isl_take isl_map *map);
void *isl_union_map_free(__isl_take isl_union_map *umap);
Other sets and relations can be constructed by starting
__isl_take isl_basic_set *bset,
enum isl_dim_type type,
unsigned first, unsigned n);
+ __isl_give isl_basic_map *
+ isl_basic_map_remove_divs_involving_dims(
+ __isl_take isl_basic_map *bmap,
+ enum isl_dim_type type,
+ unsigned first, unsigned n);
__isl_give isl_set *isl_set_remove_divs_involving_dims(
__isl_take isl_set *set, enum isl_dim_type type,
unsigned first, unsigned n);
__isl_give isl_basic_map *isl_basic_map_fix_si(
__isl_take isl_basic_map *bmap,
enum isl_dim_type type, unsigned pos, int value);
+ __isl_give isl_map *isl_map_fix(__isl_take isl_map *map,
+ enum isl_dim_type type, unsigned pos,
+ isl_int value);
__isl_give isl_map *isl_map_fix_si(__isl_take isl_map *map,
enum isl_dim_type type, unsigned pos, int value);
__isl_give isl_basic_map *isl_basic_map_lower_bound_si(
__isl_take isl_basic_map *bmap,
enum isl_dim_type type, unsigned pos, int value);
+ __isl_give isl_basic_map *isl_basic_map_upper_bound_si(
+ __isl_take isl_basic_map *bmap,
+ enum isl_dim_type type, unsigned pos, int value);
__isl_give isl_set *isl_set_lower_bound(
__isl_take isl_set *set,
enum isl_dim_type type, unsigned pos,
Intersect the relation with the hyperplane where the given
dimensions have opposite values.
+ __isl_give isl_basic_map *isl_basic_map_order_ge(
+ __isl_take isl_basic_map *bmap,
+ enum isl_dim_type type1, int pos1,
+ enum isl_dim_type type2, int pos2);
__isl_give isl_map *isl_map_order_lt(__isl_take isl_map *map,
enum isl_dim_type type1, int pos1,
enum isl_dim_type type2, int pos2);
isl_ctx *ctx, int n);
__isl_give isl_set_list *isl_set_list_copy(
__isl_keep isl_set_list *list);
+ __isl_give isl_set_list *isl_set_list_insert(
+ __isl_take isl_set_list *list, unsigned pos,
+ __isl_take isl_set *el);
__isl_give isl_set_list *isl_set_list_add(
__isl_take isl_set_list *list,
__isl_take isl_set *el);
__isl_give isl_vec *isl_vec_alloc(isl_ctx *ctx,
unsigned size);
__isl_give isl_vec *isl_vec_copy(__isl_keep isl_vec *vec);
- void isl_vec_free(__isl_take isl_vec *vec);
+ void *isl_vec_free(__isl_take isl_vec *vec);
Note that the elements of a newly created vector may have arbitrary values.
The elements can be changed and inspected using the following functions.
isl_int v);
__isl_give isl_vec *isl_vec_set_si(__isl_take isl_vec *vec,
int v);
+ __isl_give isl_vec *isl_vec_fdiv_r(__isl_take isl_vec *vec,
+ isl_int m);
C<isl_vec_get_element> will return a negative value if anything went wrong.
In that case, the value of C<*v> is undefined.
+The following function can be used to concatenate two vectors.
+
+ __isl_give isl_vec *isl_vec_concat(__isl_take isl_vec *vec1,
+ __isl_take isl_vec *vec2);
+
=head2 Matrices
Matrices can be created, copied and freed using the following functions.
to be a constant.
#include <isl/aff.h>
+ __isl_give isl_basic_set *isl_aff_zero_basic_set(
+ __isl_take isl_aff *aff);
__isl_give isl_basic_set *isl_aff_neg_basic_set(
__isl_take isl_aff *aff);
__isl_give isl_basic_set *isl_aff_le_basic_set(
__isl_take isl_space *space);
__isl_give isl_multi_aff *isl_multi_aff_identity(
__isl_take isl_space *space);
+ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity(
+ __isl_take isl_space *space);
__isl_give isl_pw_multi_aff *
isl_pw_multi_aff_from_multi_aff(
__isl_take isl_multi_aff *ma);
__isl_give isl_multi_aff *isl_multi_aff_set_aff(
__isl_take isl_multi_aff *multi, int pos,
__isl_take isl_aff *aff);
+ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_pw_aff(
+ __isl_take isl_pw_multi_aff *pma, unsigned pos,
+ __isl_take isl_pw_aff *pa);
__isl_give isl_multi_aff *isl_multi_aff_set_dim_name(
__isl_take isl_multi_aff *maff,
enum isl_dim_type type, unsigned pos, const char *s);
__isl_give isl_multi_aff *isl_multi_aff_align_params(
__isl_take isl_multi_aff *multi,
__isl_take isl_space *model);
+ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_align_params(
+ __isl_take isl_pw_multi_aff *pma,
+ __isl_take isl_space *model);
__isl_give isl_pw_multi_aff *
isl_pw_multi_aff_project_domain_on_params(
__isl_take isl_pw_multi_aff *pma);