37 if (!dom || !ran || !
map || !inv)
116 if (nparam < 0 || nparam_ran < 0)
118 if (nparam != nparam_ran)
153 "cannot handle parameter compression",
return NULL);
159 ma = isl_multi_aff_zero(space);
163 if (nparam < 0 || nvar < 0)
164 ma = isl_multi_aff_free(
ma);
165 for (i = 0; i < nvar; ++i) {
175 ma = isl_multi_aff_set_aff(
ma, i,
aff);
270 if (morph->dom && morph->ran && morph->map && morph->inv)
297 if (morph->dom && morph->ran && morph->map && morph->inv)
421 unsigned first,
unsigned n)
434 for (i = 0; i <
n; ++i) {
496 if (ntype < 0 ||
total < 0)
499 orest = otype + ntype;
500 nrest =
total - (orest - 1);
502 for (f_eq = 0; f_eq < bset->n_eq; ++f_eq)
505 for (n_eq = 0; f_eq + n_eq < bset->n_eq; ++n_eq)
515 if (
C &&
C->n_col == 0) {
587 if (nparam < 0 || nvar < 0 || n_div < 0)
593 "input not allowed to have parameter equalities",
595 if (n_eq > nvar + n_div)
597 "input not gaussed",
return NULL);
601 0, n_eq, 1 + nparam, nvar + n_div);
626 if (n_row < 0 || n_col < 0)
717 if (!morph1 || !morph2)
749 morph->dom = morph->ran;
753 morph->map = morph->inv;
struct isl_multi_aff isl_multi_aff
#define isl_die(ctx, errno, msg, code)
#define isl_alloc_type(ctx, type)
__isl_export __isl_give ISL_HMAP __isl_take ISL_KEY __isl_take ISL_VAL * val
__isl_give isl_id * isl_id_copy(isl_id *id)
void GMPZAPI() sub(mp_int rop, mp_int op1, mp_int op2)
__isl_give isl_aff * isl_aff_alloc_vec(__isl_take isl_local_space *ls, __isl_take isl_vec *v)
__isl_give isl_multi_aff * isl_multi_aff_from_aff_mat(__isl_take isl_space *space, __isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_final_variable_compression(__isl_take isl_mat *B, int first, __isl_give isl_mat **T2)
__isl_give isl_mat * isl_mat_parameter_compression_ext(__isl_take isl_mat *B, __isl_take isl_mat *A)
__isl_give isl_basic_set * isl_basic_set_alloc_space(__isl_take isl_space *space, unsigned extra, unsigned n_eq, unsigned n_ineq)
int isl_basic_set_alloc_equality(__isl_keep isl_basic_set *bset)
unsigned isl_basic_set_offset(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
isl_stat isl_basic_set_check_no_locals(__isl_keep isl_basic_set *bset)
static isl_stat isl_set_basic_set_check_equal_space(__isl_keep isl_set *set, __isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_reset_space(__isl_take isl_basic_set *bset, __isl_take isl_space *space)
__isl_keep isl_space * isl_basic_set_peek_space(__isl_keep isl_basic_set *bset)
static isl_stat isl_basic_set_check_equal_space(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
__isl_give isl_mat * isl_mat_sub_alloc6(isl_ctx *ctx, isl_int **row, unsigned first_row, unsigned n_row, unsigned first_col, unsigned n_col)
__isl_give isl_vec * isl_mat_get_row(__isl_keep isl_mat *mat, unsigned row)
__isl_give isl_mat * isl_mat_sub_alloc(__isl_keep isl_mat *mat, unsigned first_row, unsigned n_row, unsigned first_col, unsigned n_col)
isl_bool isl_mat_is_scaled_identity(__isl_keep isl_mat *mat)
static __isl_give isl_morph * isl_morph_set_ran_tuple_id(__isl_take isl_morph *morph, __isl_keep isl_id *id)
isl_stat isl_morph_check_applies(__isl_keep isl_morph *morph, __isl_keep isl_space *space)
__isl_give isl_morph * isl_morph_empty(__isl_keep isl_basic_set *bset)
__isl_give isl_morph * isl_basic_set_full_compression(__isl_keep isl_basic_set *bset)
__isl_give isl_morph * isl_morph_cow(__isl_take isl_morph *morph)
__isl_give isl_set * isl_morph_set(__isl_take isl_morph *morph, __isl_take isl_set *set)
__isl_give isl_space * isl_morph_get_ran_space(__isl_keep isl_morph *morph)
__isl_give isl_morph * isl_morph_inverse(__isl_take isl_morph *morph)
__isl_give isl_morph * isl_morph_dup(__isl_keep isl_morph *morph)
__isl_give isl_morph * isl_morph_compose(__isl_take isl_morph *morph1, __isl_take isl_morph *morph2)
__isl_give isl_morph * isl_basic_set_variable_compression(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
__isl_give isl_morph * isl_morph_ran_params(__isl_take isl_morph *morph)
static __isl_keep isl_space * isl_morph_peek_dom_space(__isl_keep isl_morph *morph)
isl_size isl_morph_dom_dim(__isl_keep isl_morph *morph, enum isl_dim_type type)
static __isl_give isl_basic_set * copy_equalities(__isl_keep isl_basic_set *bset, unsigned first, unsigned n)
__isl_give isl_vec * isl_morph_vec(__isl_take isl_morph *morph, __isl_take isl_vec *vec)
isl_size isl_morph_ran_dim(__isl_keep isl_morph *morph, enum isl_dim_type type)
__isl_give isl_multi_aff * isl_morph_get_var_multi_aff(__isl_keep isl_morph *morph)
__isl_give isl_morph * isl_morph_identity(__isl_keep isl_basic_set *bset)
__isl_give isl_morph * isl_morph_dom_params(__isl_take isl_morph *morph)
static __isl_give isl_multi_aff * isl_multi_aff_from_aff_mat_anonymous(__isl_take isl_mat *mat)
__isl_give isl_morph * isl_basic_set_parameter_compression(__isl_keep isl_basic_set *bset)
__isl_null isl_morph * isl_morph_free(__isl_take isl_morph *morph)
__isl_give isl_morph * isl_basic_set_variable_compression_with_id(__isl_keep isl_basic_set *bset, __isl_keep isl_id *id)
__isl_give isl_morph * isl_morph_remove_ran_dims(__isl_take isl_morph *morph, enum isl_dim_type type, unsigned first, unsigned n)
static isl_stat check_space_match(__isl_keep isl_space *space, isl_bool match)
__isl_give isl_morph * isl_morph_alloc(__isl_take isl_basic_set *dom, __isl_take isl_basic_set *ran, __isl_take isl_mat *map, __isl_take isl_mat *inv)
void isl_morph_dump(__isl_take isl_morph *morph)
static isl_bool identity_on_parameters(__isl_keep isl_morph *morph)
isl_ctx * isl_morph_get_ctx(__isl_keep isl_morph *morph)
__isl_give isl_morph * isl_morph_remove_dom_dims(__isl_take isl_morph *morph, enum isl_dim_type type, unsigned first, unsigned n)
void isl_morph_print_internal(__isl_take isl_morph *morph, FILE *out)
__isl_give isl_basic_set * isl_morph_basic_set(__isl_take isl_morph *morph, __isl_take isl_basic_set *bset)
__isl_give isl_morph * isl_morph_copy(__isl_keep isl_morph *morph)
__isl_give isl_space * isl_morph_get_dom_space(__isl_keep isl_morph *morph)
int isl_seq_first_non_zero(isl_int *p, unsigned len)
void isl_seq_cpy(isl_int *dst, isl_int *src, unsigned len)
static isl_bool match(__isl_keep isl_space *space1, enum isl_dim_type type1, __isl_keep isl_space *space2, enum isl_dim_type type2)
unsigned isl_space_offset(__isl_keep isl_space *space, enum isl_dim_type type)
static __isl_give isl_union_map * total(__isl_take isl_union_map *umap, __isl_give isl_map *(*fn)(__isl_take isl_map *))
static __isl_give isl_map * universe(__isl_take isl_map *map)
__isl_give isl_local_space * isl_local_space_from_space(__isl_take isl_space *space)
__isl_null isl_local_space * isl_local_space_free(__isl_take isl_local_space *ls)
__isl_give isl_local_space * isl_local_space_copy(__isl_keep isl_local_space *ls)
struct isl_basic_set isl_basic_set
__isl_give isl_mat * isl_mat_copy(__isl_keep isl_mat *mat)
__isl_give isl_mat * isl_mat_product(__isl_take isl_mat *left, __isl_take isl_mat *right)
isl_size isl_mat_cols(__isl_keep isl_mat *mat)
void isl_mat_print_internal(__isl_keep isl_mat *mat, FILE *out, int indent)
isl_size isl_mat_rows(__isl_keep isl_mat *mat)
__isl_give isl_mat * isl_mat_identity(isl_ctx *ctx, unsigned n_row)
__isl_give isl_mat * isl_mat_drop_rows(__isl_take isl_mat *mat, unsigned row, unsigned n)
__isl_give isl_vec * isl_mat_vec_product(__isl_take isl_mat *mat, __isl_take isl_vec *vec)
__isl_give isl_mat * isl_mat_diagonal(__isl_take isl_mat *mat1, __isl_take isl_mat *mat2)
__isl_give isl_mat * isl_mat_right_inverse(__isl_take isl_mat *mat)
__isl_give isl_val * isl_mat_get_element_val(__isl_keep isl_mat *mat, int row, int col)
__isl_null isl_mat * isl_mat_free(__isl_take isl_mat *mat)
isl_ctx * isl_mat_get_ctx(__isl_keep isl_mat *mat)
__isl_give isl_mat * isl_mat_drop_cols(__isl_take isl_mat *mat, unsigned col, unsigned n)
isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
__isl_export __isl_give isl_basic_set * isl_basic_set_detect_equalities(__isl_take isl_basic_set *bset)
__isl_give isl_set * isl_set_reset_space(__isl_take isl_set *set, __isl_take isl_space *space)
__isl_give isl_space * isl_basic_set_get_space(__isl_keep isl_basic_set *bset)
__isl_overload __isl_give isl_set * isl_set_preimage_multi_aff(__isl_take isl_set *set, __isl_take isl_multi_aff *ma)
__isl_give isl_basic_set * isl_basic_set_remove_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_set * isl_basic_set_preimage_multi_aff(__isl_take isl_basic_set *bset, __isl_take isl_multi_aff *ma)
__isl_export __isl_give isl_basic_set * isl_basic_set_params(__isl_take isl_basic_set *bset)
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
void isl_basic_set_dump(__isl_keep isl_basic_set *bset)
isl_bool isl_basic_set_plain_is_empty(__isl_keep isl_basic_set *bset)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
__isl_give isl_basic_set * isl_basic_set_move_dims(__isl_take isl_basic_set *bset, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
__isl_give isl_basic_set * isl_basic_set_empty(__isl_take isl_space *space)
__isl_give isl_basic_set * isl_basic_set_set_tuple_id(__isl_take isl_basic_set *bset, __isl_take isl_id *id)
__isl_give isl_set * isl_set_move_dims(__isl_take isl_set *set, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
__isl_export __isl_give isl_set * isl_set_intersect(__isl_take isl_set *set1, __isl_take isl_set *set2)
isl_ctx * isl_basic_set_get_ctx(__isl_keep isl_basic_set *bset)
__isl_constructor __isl_give isl_set * isl_set_from_basic_set(__isl_take isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
__isl_export __isl_give isl_basic_set * isl_basic_set_intersect(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
__isl_give isl_basic_set * isl_basic_set_universe(__isl_take isl_space *space)
isl_ctx * isl_space_get_ctx(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_copy(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_map_from_domain_and_range(__isl_take isl_space *domain, __isl_take isl_space *range)
__isl_export isl_bool isl_space_is_equal(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_drop_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned num)
__isl_give isl_space * isl_space_alloc(isl_ctx *ctx, unsigned nparam, unsigned n_in, unsigned n_out)
__isl_give isl_space * isl_space_add_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned n)
__isl_null isl_vec * isl_vec_free(__isl_take isl_vec *vec)
__isl_give isl_vec * isl_vec_insert_els(__isl_take isl_vec *vec, unsigned pos, unsigned n)
__isl_give isl_vec * isl_vec_set_element_val(__isl_take isl_vec *vec, int pos, __isl_take isl_val *v)