Polly 22.0.0git
isl_transitive_closure.c File Reference
#include <isl_ctx_private.h>
#include <isl_map_private.h>
#include <isl/map.h>
#include <isl_seq.h>
#include <isl_space_private.h>
#include <isl_lp_private.h>
#include <isl/union_map.h>
#include <isl_mat_private.h>
#include <isl_vec_private.h>
#include <isl_options_private.h>
#include <isl_tarjan.h>
#include "isl_power_templ.c"

Go to the source code of this file.

Classes

struct  isl_tc_follows_data
struct  isl_union_power

Macros

#define IMPURE   0
#define PURE_PARAM   1
#define PURE_VAR   2
#define MIXED   3
#define LEFT   2
#define RIGHT   1
#define TYPE   isl_map
#define TYPE   isl_union_map

Functions

isl_bool isl_map_is_transitively_closed (__isl_keep isl_map *map)
isl_bool isl_union_map_is_transitively_closed (__isl_keep isl_union_map *umap)
static __isl_give isl_mapset_path_length (__isl_take isl_map *map, int exactly, int length)
static isl_bool check_power_exactness (__isl_take isl_map *map, __isl_take isl_map *app)
static isl_bool check_exactness (__isl_take isl_map *map, __isl_take isl_map *app, int project)
static __isl_give isl_mappath_along_steps (__isl_take isl_space *space, __isl_keep isl_mat *steps)
static isl_bool parametric_constant_never_positive (__isl_keep isl_basic_set *bset, isl_int *c, int *div_purity)
static int purity (__isl_keep isl_basic_set *bset, isl_int *c, int *div_purity, int eq)
static __isl_give int * get_div_purity (__isl_keep isl_basic_set *bset)
static isl_bool empty_path_is_identity (__isl_keep isl_basic_map *path, unsigned pos)
static __isl_give isl_basic_mapadd_delta_constraints (__isl_take isl_basic_map *path, __isl_keep isl_basic_set *delta, unsigned off, unsigned nparam, unsigned d, int *div_purity, int eq, int *impurity)
static __isl_give isl_mappath_along_delta (__isl_take isl_space *space, __isl_take isl_basic_set *delta)
static __isl_give isl_mapequate_parameter_to_length (__isl_take isl_space *space, unsigned param)
static isl_bool is_acyclic (__isl_take isl_map *path)
static __isl_give isl_mapconstruct_extended_path (__isl_take isl_space *space, __isl_keep isl_map *map, int *project)
static isl_bool isl_set_overlaps (__isl_keep isl_set *set1, __isl_keep isl_set *set2)
static __isl_give isl_mapconstruct_component (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project)
static __isl_give isl_mapconstruct_projected_component (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project)
static __isl_give isl_mapq_closure (__isl_take isl_space *space, __isl_take isl_set *dom, __isl_keep isl_basic_map *bmap, isl_bool *exact)
static isl_bool has_spurious_elements (__isl_keep isl_map *qc, __isl_keep isl_set *dom, __isl_keep isl_set *ran)
static int composability (__isl_keep isl_set *C, int i, isl_set **dom, isl_set **ran, int *left, int *right, __isl_keep isl_map *map)
static __isl_give isl_mapanonymize (__isl_take isl_map *map)
static __isl_give isl_mapcompose (__isl_keep isl_map *map, int i, __isl_take isl_map *qc, int *left, int *right)
static __isl_give isl_mapcompute_incremental (__isl_take isl_space *space, __isl_keep isl_map *map, int i, __isl_take isl_map *qc, int *left, int *right, isl_bool *exact)
static isl_bool incremental_on_entire_domain (__isl_keep isl_space *space, __isl_keep isl_map *map, isl_set **dom, isl_set **ran, int *left, int *right, __isl_give isl_map **res)
static __isl_give isl_mapincremental_closure (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project)
static int merge (isl_set **set, int *group, __isl_take isl_set *dom, int pos)
static __isl_give isl_mapincrement (__isl_take isl_space *space)
static isl_stat add_length (__isl_keep isl_map *map, isl_map ***grid, int n)
static void floyd_warshall_iterate (isl_map ***grid, int n, isl_bool *exact)
static __isl_give isl_mapfloyd_warshall_with_groups (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project, int *group, int n)
static int * setup_groups (isl_ctx *ctx, __isl_keep isl_basic_map **list, int n, isl_set ***set, int *n_group)
static __isl_give isl_mapfloyd_warshall (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project)
static isl_bool basic_map_follows (int i, int j, void *user)
static __isl_give isl_mapconstruct_power_components (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project)
static __isl_give isl_mapconstruct_power (__isl_keep isl_map *map, isl_bool *exact, int project)
static __isl_give isl_mapmap_power (__isl_take isl_map *map, isl_bool *exact, int project)
__isl_give isl_mapisl_map_power (__isl_take isl_map *map, isl_bool *exact)
__isl_give isl_mapisl_map_reaching_path_lengths (__isl_take isl_map *map, isl_bool *exact)
static __isl_give isl_mapbox_closure_on_domain (__isl_take isl_map *map, __isl_take isl_set *dom, __isl_take isl_set *ran, int with_id)
static __isl_give isl_mapbox_closure (__isl_take isl_map *map)
static __isl_give isl_mapbox_closure_with_identity (__isl_take isl_map *map, __isl_take isl_set *dom)
static isl_bool check_exactness_omega (__isl_keep isl_map *map, __isl_keep isl_map *app)
static int can_be_split_off (__isl_keep isl_map *map, int i, __isl_give isl_map **tc, __isl_give isl_map **qc)
static __isl_give isl_mapbox_closure_with_check (__isl_take isl_map *map, isl_bool *exact)
static __isl_give isl_maptransitive_closure_omega (__isl_take isl_map *map, isl_bool *exact)
__isl_give isl_mapisl_map_transitive_closure (__isl_take isl_map *map, isl_bool *exact)
static isl_stat inc_count (__isl_take isl_map *map, void *user)
static isl_stat collect_basic_map (__isl_take isl_map *map, void *user)
static __isl_give isl_union_mapunion_floyd_warshall_on_list (isl_ctx *ctx, __isl_keep isl_basic_map **list, int n, isl_bool *exact)
static __isl_give isl_union_mapunion_floyd_warshall (__isl_take isl_union_map *umap, isl_bool *exact)
static __isl_give isl_union_mapunion_components (__isl_take isl_union_map *umap, isl_bool *exact)
__isl_give isl_union_mapisl_union_map_transitive_closure (__isl_take isl_union_map *umap, isl_bool *exact)
static isl_stat power (__isl_take isl_map *map, void *user)
static __isl_give isl_union_mapdeltas_map (__isl_take isl_space *space)
__isl_give isl_union_mapisl_union_map_power (__isl_take isl_union_map *umap, isl_bool *exact)

Macro Definition Documentation

◆ IMPURE

#define IMPURE   0

Definition at line 289 of file isl_transitive_closure.c.

Referenced by add_delta_constraints(), get_div_purity(), and purity().

◆ LEFT

#define LEFT   2

Definition at line 1009 of file isl_transitive_closure.c.

Referenced by composability(), and incremental_closure().

◆ MIXED

#define MIXED   3

Definition at line 292 of file isl_transitive_closure.c.

Referenced by add_delta_constraints(), and purity().

◆ PURE_PARAM

#define PURE_PARAM   1

◆ PURE_VAR

#define PURE_VAR   2

Definition at line 291 of file isl_transitive_closure.c.

Referenced by add_delta_constraints(), get_div_purity(), and purity().

◆ RIGHT

#define RIGHT   1

Definition at line 1010 of file isl_transitive_closure.c.

Referenced by composability(), and incremental_closure().

◆ TYPE [1/2]

#define TYPE   isl_map

Definition at line 2942 of file isl_transitive_closure.c.

◆ TYPE [2/2]

#define TYPE   isl_union_map

Definition at line 2942 of file isl_transitive_closure.c.

Function Documentation

◆ add_delta_constraints()

◆ add_length()

◆ anonymize()

__isl_give isl_map * anonymize ( __isl_take isl_map * map)
static

◆ basic_map_follows()

◆ box_closure()

◆ box_closure_on_domain()

◆ box_closure_with_check()

__isl_give isl_map * box_closure_with_check ( __isl_take isl_map * map,
isl_bool * exact )
static

◆ box_closure_with_identity()

__isl_give isl_map * box_closure_with_identity ( __isl_take isl_map * map,
__isl_take isl_set * dom )
static

◆ can_be_split_off()

◆ check_exactness()

◆ check_exactness_omega()

◆ check_power_exactness()

◆ collect_basic_map()

isl_stat collect_basic_map ( __isl_take isl_map * map,
void * user )
static

◆ composability()

int composability ( __isl_keep isl_set * C,
int i,
isl_set ** dom,
isl_set ** ran,
int * left,
int * right,
__isl_keep isl_map * map )
static

◆ compose()

◆ compute_incremental()

◆ construct_component()

◆ construct_extended_path()

◆ construct_power()

◆ construct_power_components()

◆ construct_projected_component()

__isl_give isl_map * construct_projected_component ( __isl_take isl_space * space,
__isl_keep isl_map * map,
isl_bool * exact,
int project )
static

◆ deltas_map()

◆ empty_path_is_identity()

◆ equate_parameter_to_length()

◆ floyd_warshall()

◆ floyd_warshall_iterate()

void floyd_warshall_iterate ( isl_map *** grid,
int n,
isl_bool * exact )
static

◆ floyd_warshall_with_groups()

◆ get_div_purity()

◆ has_spurious_elements()

◆ inc_count()

◆ increment()

◆ incremental_closure()

◆ incremental_on_entire_domain()

◆ is_acyclic()

◆ isl_map_is_transitively_closed()

◆ isl_map_power()

◆ isl_map_reaching_path_lengths()

◆ isl_map_transitive_closure()

◆ isl_set_overlaps()

isl_bool isl_set_overlaps ( __isl_keep isl_set * set1,
__isl_keep isl_set * set2 )
static

◆ isl_union_map_is_transitively_closed()

◆ isl_union_map_power()

◆ isl_union_map_transitive_closure()

◆ map_power()

◆ merge()

int merge ( isl_set ** set,
int * group,
__isl_take isl_set * dom,
int pos )
static

◆ parametric_constant_never_positive()

◆ path_along_delta()

◆ path_along_steps()

◆ power()

◆ purity()

◆ q_closure()

◆ set_path_length()

◆ setup_groups()

◆ transitive_closure_omega()

◆ union_components()

◆ union_floyd_warshall()

◆ union_floyd_warshall_on_list()