int isl_map_contains_point(__isl_keep isl_map *map, __isl_keep isl_point *point) { int i; int found = 0; if (!map || !point) return -1; map = isl_map_copy(map); map = isl_map_compute_divs(map); if (!map) return -1; for (i = 0; i < map->n; ++i) { found = isl_basic_map_contains_point(map->p[i], point); if (found < 0) goto error; if (found) break; } isl_map_free(map); return found; error: isl_map_free(map); return -1; }
int main(int argc, char **argv) { struct isl_ctx *ctx; struct isl_map *map; struct isl_options *options; isl_printer *p; int exact; options = isl_options_new_with_defaults(); assert(options); argc = isl_options_parse(options, argc, argv, ISL_ARG_ALL); ctx = isl_ctx_alloc_with_options(&isl_options_args, options); p = isl_printer_to_file(ctx, stdout); map = isl_map_read_from_file(ctx, stdin); map = isl_map_transitive_closure(map, &exact); if (!exact) p = isl_printer_print_str(p, "# NOT exact\n"); p = isl_printer_print_map(p, map); p = isl_printer_end_line(p); map = isl_map_compute_divs(map); map = isl_map_coalesce(map); p = isl_printer_print_str(p, "# coalesced\n"); p = isl_printer_print_map(p, map); p = isl_printer_end_line(p); isl_map_free(map); isl_printer_free(p); isl_ctx_free(ctx); return 0; }
/// Translate a isl_map to a ScopLib matrix. /// /// @param map The map to be translated /// @return A ScopLib Matrix scoplib_matrix_p ScopLib::scatteringToMatrix(__isl_take isl_map *map) { map = isl_map_compute_divs (map); map = isl_map_align_divs (map); // Initialize the matrix. unsigned NbRows, NbColumns; NbRows = 0; NbColumns = isl_map_n_in(map) + isl_map_n_param(map) + 2; scoplib_matrix_p matrix = scoplib_matrix_malloc(NbRows, NbColumns); // Copy the content into the matrix. isl_map_foreach_basic_map(map, &scatteringToMatrix_basic_map, matrix); // Only keep the relevant rows. scoplib_matrix_p reduced = scoplib_matrix_ncopy(matrix, isl_map_n_in(map) * 2 + 1); scoplib_matrix_free (matrix); isl_map_free(map); return reduced; }