Polly 20.0.0git
Functions
isl_tab.c File Reference
#include <isl_ctx_private.h>
#include <isl_mat_private.h>
#include <isl_vec_private.h>
#include "isl_map_private.h"
#include "isl_tab.h"
#include <isl_seq.h>
#include <isl_config.h>
#include <bset_to_bmap.c>
#include <bset_from_bmap.c>

Go to the source code of this file.

Functions

struct isl_tabisl_tab_alloc (struct isl_ctx *ctx, unsigned n_row, unsigned n_var, unsigned M)
 
isl_ctxisl_tab_get_ctx (struct isl_tab *tab)
 
int isl_tab_extend_cons (struct isl_tab *tab, unsigned n_new)
 
int isl_tab_extend_vars (struct isl_tab *tab, unsigned n_new)
 
static void free_undo_record (struct isl_tab_undo *undo)
 
static void free_undo (struct isl_tab *tab)
 
void isl_tab_free (struct isl_tab *tab)
 
struct isl_tabisl_tab_dup (struct isl_tab *tab)
 
static __isl_give isl_mattab_mat_product (__isl_keep isl_mat *mat1, __isl_keep isl_mat *mat2, unsigned row1, unsigned row2, unsigned col1, unsigned col2, unsigned off, unsigned r1, unsigned r2, unsigned d1, unsigned d2)
 
static void update_index1 (struct isl_tab_var *var, unsigned r1, unsigned r2, unsigned d1, unsigned d2)
 
static void update_index2 (struct isl_tab_var *var, unsigned row1, unsigned col1, unsigned r1, unsigned r2, unsigned d1, unsigned d2)
 
struct isl_tabisl_tab_product (struct isl_tab *tab1, struct isl_tab *tab2)
 
static struct isl_tab_varvar_from_index (struct isl_tab *tab, int i)
 
struct isl_tab_varisl_tab_var_from_row (struct isl_tab *tab, int i)
 
static struct isl_tab_varvar_from_col (struct isl_tab *tab, int i)
 
static int max_is_manifestly_unbounded (struct isl_tab *tab, struct isl_tab_var *var)
 
static int min_is_manifestly_unbounded (struct isl_tab *tab, struct isl_tab_var *var)
 
static int row_cmp (struct isl_tab *tab, int r1, int r2, int c, isl_int *t)
 
static int pivot_row (struct isl_tab *tab, struct isl_tab_var *var, int sgn, int c)
 
static void find_pivot (struct isl_tab *tab, struct isl_tab_var *var, struct isl_tab_var *skip_var, int sgn, int *row, int *col)
 
int isl_tab_row_is_redundant (struct isl_tab *tab, int row)
 
static void swap_rows (struct isl_tab *tab, int row1, int row2)
 
static isl_stat push_union (struct isl_tab *tab, enum isl_tab_undo_type type, union isl_tab_undo_val u) WARN_UNUSED
 
isl_stat isl_tab_push_var (struct isl_tab *tab, enum isl_tab_undo_type type, struct isl_tab_var *var)
 
isl_stat isl_tab_push (struct isl_tab *tab, enum isl_tab_undo_type type)
 
isl_stat isl_tab_push_basis (struct isl_tab *tab)
 
isl_stat isl_tab_push_callback (struct isl_tab *tab, struct isl_tab_callback *callback)
 
struct isl_tabisl_tab_init_samples (struct isl_tab *tab)
 
int isl_tab_add_sample (struct isl_tab *tab, __isl_take isl_vec *sample)
 
struct isl_tabisl_tab_drop_sample (struct isl_tab *tab, int s)
 
isl_stat isl_tab_save_samples (struct isl_tab *tab)
 
int isl_tab_mark_redundant (struct isl_tab *tab, int row)
 
int isl_tab_mark_rational (struct isl_tab *tab)
 
isl_stat isl_tab_mark_empty (struct isl_tab *tab)
 
int isl_tab_freeze_constraint (struct isl_tab *tab, int con)
 
static void update_row_sign (struct isl_tab *tab, int row, int col, int row_sgn)
 
int isl_tab_pivot (struct isl_tab *tab, int row, int col)
 
static int to_row (struct isl_tab *tab, struct isl_tab_var *var, int sign) WARN_UNUSED
 
static void check_table (struct isl_tab *tab) __attribute__((unused))
 
static int sign_of_max (struct isl_tab *tab, struct isl_tab_var *var)
 
int isl_tab_sign_of_max (struct isl_tab *tab, int con)
 
static int row_is_neg (struct isl_tab *tab, int row)
 
static int row_sgn (struct isl_tab *tab, int row)
 
static int restore_row (struct isl_tab *tab, struct isl_tab_var *var)
 
static int at_least_zero (struct isl_tab *tab, struct isl_tab_var *var)
 
static int sign_of_min (struct isl_tab *tab, struct isl_tab_var *var)
 
static int row_at_most_neg_one (struct isl_tab *tab, int row)
 
int isl_tab_min_at_most_neg_one (struct isl_tab *tab, struct isl_tab_var *var)
 
static int at_least_one (struct isl_tab *tab, struct isl_tab_var *var)
 
static void swap_cols (struct isl_tab *tab, int col1, int col2)
 
int isl_tab_kill_col (struct isl_tab *tab, int col)
 
static int row_is_manifestly_non_integral (struct isl_tab *tab, int row)
 
static int tab_is_manifestly_empty (struct isl_tab *tab)
 
static isl_stat close_row (struct isl_tab *tab, struct isl_tab_var *var, int temp_var) WARN_UNUSED
 
int isl_tab_allocate_con (struct isl_tab *tab)
 
static int var_insert_entry (struct isl_tab *tab, int first)
 
static int var_drop_entry (struct isl_tab *tab, int first)
 
int isl_tab_insert_var (struct isl_tab *tab, int r)
 
int isl_tab_add_row (struct isl_tab *tab, isl_int *line)
 
static isl_stat drop_row (struct isl_tab *tab, int row)
 
static isl_stat drop_col (struct isl_tab *tab, int col)
 
isl_stat isl_tab_add_ineq (struct isl_tab *tab, isl_int *ineq)
 
static int to_col (struct isl_tab *tab, struct isl_tab_var *var) WARN_UNUSED
 
static struct isl_tabadd_eq (struct isl_tab *tab, isl_int *eq)
 
static int row_is_big (struct isl_tab *tab, int row)
 
static int row_is_manifestly_zero (struct isl_tab *tab, int row)
 
int isl_tab_add_valid_eq (struct isl_tab *tab, isl_int *eq)
 
static int add_zero_row (struct isl_tab *tab)
 
isl_stat isl_tab_add_eq (struct isl_tab *tab, isl_int *eq)
 
static __isl_give isl_vecineq_for_div (__isl_keep isl_basic_map *bmap, unsigned div)
 
static isl_stat add_div_constraints (struct isl_tab *tab, unsigned div, isl_stat(*add_ineq)(void *user, isl_int *), void *user)
 
static int div_is_nonneg (struct isl_tab *tab, __isl_keep isl_vec *div)
 
int isl_tab_insert_div (struct isl_tab *tab, int pos, __isl_keep isl_vec *div, isl_stat(*add_ineq)(void *user, isl_int *), void *user)
 
int isl_tab_add_div (struct isl_tab *tab, __isl_keep isl_vec *div)
 
__isl_give struct isl_tabisl_tab_from_basic_map (__isl_keep isl_basic_map *bmap, int track)
 
__isl_give struct isl_tabisl_tab_from_basic_set (__isl_keep isl_basic_set *bset, int track)
 
struct isl_tabisl_tab_from_recession_cone (__isl_keep isl_basic_set *bset, int parametric)
 
isl_bool isl_tab_cone_is_bounded (struct isl_tab *tab)
 
int isl_tab_sample_is_integer (struct isl_tab *tab)
 
static struct isl_vecextract_integer_sample (struct isl_tab *tab)
 
__isl_give isl_vecisl_tab_get_sample_value (struct isl_tab *tab)
 
static void get_rounded_sample_value (struct isl_tab *tab, struct isl_tab_var *var, int sgn, isl_int *v)
 
__isl_give isl_basic_mapisl_basic_map_update_from_tab (__isl_take isl_basic_map *bmap, struct isl_tab *tab)
 
__isl_give isl_basic_setisl_basic_set_update_from_tab (__isl_take isl_basic_set *bset, struct isl_tab *tab)
 
static isl_stat drop_last_con_in_row (struct isl_tab *tab, int r)
 
static isl_stat cut_to_hyperplane (struct isl_tab *tab, struct isl_tab_var *var)
 
static isl_stat isl_tab_check_con (struct isl_tab *tab, int con)
 
int isl_tab_relax (struct isl_tab *tab, int con)
 
int isl_tab_shift_var (struct isl_tab *tab, int pos, isl_int shift)
 
int isl_tab_unrestrict (struct isl_tab *tab, int con)
 
int isl_tab_select_facet (struct isl_tab *tab, int con)
 
static int may_be_equality (struct isl_tab *tab, int row)
 
static struct isl_tab_varselect_marked (struct isl_tab *tab)
 
int isl_tab_detect_implicit_equalities (struct isl_tab *tab)
 
static int update_con_after_move (struct isl_tab *tab, int i, int old)
 
isl_stat isl_tab_swap_constraints (struct isl_tab *tab, int con1, int con2)
 
static int rotate_constraints (struct isl_tab *tab, int first, int n)
 
static isl_stat con_drop_entries (struct isl_tab *tab, unsigned first, unsigned n)
 
static isl_stat swap_eq (unsigned a, unsigned b, void *user)
 
static isl_stat drop_eq (unsigned n, void *user)
 
static __isl_give isl_basic_mapgauss_if_shared (__isl_take isl_basic_map *bmap, struct isl_tab *tab)
 
__isl_give isl_basic_mapisl_tab_make_equalities_explicit (struct isl_tab *tab, __isl_take isl_basic_map *bmap)
 
static int con_is_redundant (struct isl_tab *tab, struct isl_tab_var *var)
 
int isl_tab_detect_redundant (struct isl_tab *tab)
 
int isl_tab_is_equality (struct isl_tab *tab, int con)
 
enum isl_lp_result isl_tab_min (struct isl_tab *tab, isl_int *f, isl_int denom, isl_int *opt, isl_int *opt_denom, unsigned flags)
 
int isl_tab_is_redundant (struct isl_tab *tab, int con)
 
static isl_bool is_constant (struct isl_tab *tab, struct isl_tab_var *var, isl_int *value)
 
static int reached (struct isl_tab *tab, struct isl_tab_var *var, int sgn, isl_int target, isl_int *tmp)
 
static isl_bool var_reaches (struct isl_tab *tab, struct isl_tab_var *var, int sgn, isl_int target, isl_int *tmp)
 
static isl_bool detect_constant_with_tmp (struct isl_tab *tab, struct isl_tab_var *var, isl_int *target, isl_int *tmp)
 
static isl_bool get_constant (struct isl_tab *tab, struct isl_tab_var *var, isl_int *value)
 
isl_bool isl_tab_is_constant (struct isl_tab *tab, int var, isl_int *value)
 
isl_stat isl_tab_detect_constants (struct isl_tab *tab)
 
struct isl_tab_undoisl_tab_snap (struct isl_tab *tab)
 
isl_bool isl_tab_need_undo (struct isl_tab *tab)
 
void isl_tab_clear_undo (struct isl_tab *tab)
 
static isl_stat unrelax (struct isl_tab *tab, struct isl_tab_var *var) WARN_UNUSED
 
static isl_stat ununrestrict (struct isl_tab *tab, struct isl_tab_var *var)
 
static isl_stat restore_last_redundant (struct isl_tab *tab)
 
static isl_stat perform_undo_var (struct isl_tab *tab, struct isl_tab_undo *undo) WARN_UNUSED
 
isl_stat isl_tab_restore_redundant (struct isl_tab *tab)
 
static isl_stat drop_bmap_div (struct isl_tab *tab, int pos)
 
static int restore_basis (struct isl_tab *tab, int *col_var)
 
static void drop_samples_since (struct isl_tab *tab, int n)
 
static isl_stat perform_undo (struct isl_tab *tab, struct isl_tab_undo *undo) WARN_UNUSED
 
isl_stat isl_tab_rollback (struct isl_tab *tab, struct isl_tab_undo *snap)
 
static enum isl_ineq_type separation_type (struct isl_tab *tab, unsigned row)
 
enum isl_ineq_type isl_tab_ineq_type (struct isl_tab *tab, isl_int *ineq)
 
isl_stat isl_tab_track_bmap (struct isl_tab *tab, __isl_take isl_basic_map *bmap)
 
isl_stat isl_tab_track_bset (struct isl_tab *tab, __isl_take isl_basic_set *bset)
 
__isl_keep isl_basic_setisl_tab_peek_bset (struct isl_tab *tab)
 
static void isl_tab_print_internal (__isl_keep struct isl_tab *tab, FILE *out, int indent)
 
void isl_tab_dump (__isl_keep struct isl_tab *tab)
 

Function Documentation

◆ add_div_constraints()

static isl_stat add_div_constraints ( struct isl_tab tab,
unsigned  div,
isl_stat(*)(void *user, isl_int *)  add_ineq,
void *  user 
)
static

◆ add_eq()

static struct isl_tab * add_eq ( struct isl_tab tab,
isl_int eq 
)
static

◆ add_zero_row()

static int add_zero_row ( struct isl_tab tab)
static

◆ at_least_one()

static int at_least_one ( struct isl_tab tab,
struct isl_tab_var var 
)
static

◆ at_least_zero()

static int at_least_zero ( struct isl_tab tab,
struct isl_tab_var var 
)
static

Definition at line 1345 of file isl_tab.c.

References find_pivot(), isl_int_is_neg, isl_tab_pivot(), isl_tab::mat, isl_mat::row, and var().

Referenced by isl_tab_ineq_type().

◆ check_table()

static void check_table ( struct isl_tab tab)
static

◆ close_row()

static isl_stat close_row ( struct isl_tab tab,
struct isl_tab_var var,
int  temp_var 
)
static

◆ con_drop_entries()

static isl_stat con_drop_entries ( struct isl_tab tab,
unsigned  first,
unsigned  n 
)
static

◆ con_is_redundant()

static int con_is_redundant ( struct isl_tab tab,
struct isl_tab_var var 
)
static

◆ cut_to_hyperplane()

static isl_stat cut_to_hyperplane ( struct isl_tab tab,
struct isl_tab_var var 
)
static

◆ detect_constant_with_tmp()

static isl_bool detect_constant_with_tmp ( struct isl_tab tab,
struct isl_tab_var var,
isl_int target,
isl_int tmp 
)
static

◆ div_is_nonneg()

static int div_is_nonneg ( struct isl_tab tab,
__isl_keep isl_vec div 
)
static

◆ drop_bmap_div()

static isl_stat drop_bmap_div ( struct isl_tab tab,
int  pos 
)
static

◆ drop_col()

static isl_stat drop_col ( struct isl_tab tab,
int  col 
)
static

◆ drop_eq()

static isl_stat drop_eq ( unsigned  n,
void *  user 
)
static

Definition at line 3141 of file isl_tab.c.

References con_drop_entries(), isl_tab_mark_empty(), n, isl_tab::n_eq, and user.

Referenced by gauss_if_shared().

◆ drop_last_con_in_row()

static isl_stat drop_last_con_in_row ( struct isl_tab tab,
int  r 
)
static

◆ drop_row()

static isl_stat drop_row ( struct isl_tab tab,
int  row 
)
static

◆ drop_samples_since()

static void drop_samples_since ( struct isl_tab tab,
int  n 
)
static

Definition at line 3948 of file isl_tab.c.

References isl_mat_swap_rows(), n, isl_tab::n_sample, isl_tab::sample_index, isl_tab::samples, and t.

Referenced by perform_undo().

◆ extract_integer_sample()

static struct isl_vec * extract_integer_sample ( struct isl_tab tab)
static

◆ find_pivot()

static void find_pivot ( struct isl_tab tab,
struct isl_tab_var var,
struct isl_tab_var skip_var,
int  sgn,
int *  row,
int *  col 
)
static

◆ free_undo()

static void free_undo ( struct isl_tab tab)
static

◆ free_undo_record()

static void free_undo_record ( struct isl_tab_undo undo)
static

◆ gauss_if_shared()

static __isl_give isl_basic_map * gauss_if_shared ( __isl_take isl_basic_map bmap,
struct isl_tab tab 
)
static

◆ get_constant()

static isl_bool get_constant ( struct isl_tab tab,
struct isl_tab_var var,
isl_int value 
)
static

◆ get_rounded_sample_value()

static void get_rounded_sample_value ( struct isl_tab tab,
struct isl_tab_var var,
int  sgn,
isl_int v 
)
static

◆ ineq_for_div()

static __isl_give isl_vec * ineq_for_div ( __isl_keep isl_basic_map bmap,
unsigned  div 
)
static

◆ is_constant()

static isl_bool is_constant ( struct isl_tab tab,
struct isl_tab_var var,
isl_int value 
)
static

◆ isl_basic_map_update_from_tab()

__isl_give isl_basic_map * isl_basic_map_update_from_tab ( __isl_take isl_basic_map bmap,
struct isl_tab tab 
)

◆ isl_basic_set_update_from_tab()

__isl_give isl_basic_set * isl_basic_set_update_from_tab ( __isl_take isl_basic_set bset,
struct isl_tab tab 
)

◆ isl_tab_add_div()

int isl_tab_add_div ( struct isl_tab tab,
__isl_keep isl_vec div 
)

Definition at line 2372 of file isl_tab.c.

References isl_tab_insert_div(), and isl_tab::n_var.

Referenced by tab_add_divs().

◆ isl_tab_add_eq()

isl_stat isl_tab_add_eq ( struct isl_tab tab,
isl_int eq 
)

◆ isl_tab_add_ineq()

isl_stat isl_tab_add_ineq ( struct isl_tab tab,
isl_int ineq 
)

◆ isl_tab_add_row()

int isl_tab_add_row ( struct isl_tab tab,
isl_int line 
)

◆ isl_tab_add_sample()

int isl_tab_add_sample ( struct isl_tab tab,
__isl_take isl_vec sample 
)

◆ isl_tab_add_valid_eq()

int isl_tab_add_valid_eq ( struct isl_tab tab,
isl_int eq 
)

◆ isl_tab_alloc()

struct isl_tab * isl_tab_alloc ( struct isl_ctx ctx,
unsigned  n_row,
unsigned  n_var,
unsigned  M 
)

◆ isl_tab_allocate_con()

int isl_tab_allocate_con ( struct isl_tab tab)

◆ isl_tab_check_con()

static isl_stat isl_tab_check_con ( struct isl_tab tab,
int  con 
)
static

◆ isl_tab_clear_undo()

void isl_tab_clear_undo ( struct isl_tab tab)

Definition at line 3698 of file isl_tab.c.

References free_undo(), and isl_tab::need_undo.

Referenced by propagate_equalities().

◆ isl_tab_cone_is_bounded()

isl_bool isl_tab_cone_is_bounded ( struct isl_tab tab)

◆ isl_tab_detect_constants()

isl_stat isl_tab_detect_constants ( struct isl_tab tab)

◆ isl_tab_detect_implicit_equalities()

int isl_tab_detect_implicit_equalities ( struct isl_tab tab)

◆ isl_tab_detect_redundant()

int isl_tab_detect_redundant ( struct isl_tab tab)

◆ isl_tab_drop_sample()

struct isl_tab * isl_tab_drop_sample ( struct isl_tab tab,
int  s 
)

◆ isl_tab_dump()

void isl_tab_dump ( __isl_keep struct isl_tab tab)

Definition at line 4256 of file isl_tab.c.

References isl_tab_print_internal().

◆ isl_tab_dup()

struct isl_tab * isl_tab_dup ( struct isl_tab tab)

◆ isl_tab_extend_cons()

int isl_tab_extend_cons ( struct isl_tab tab,
unsigned  n_new 
)

◆ isl_tab_extend_vars()

int isl_tab_extend_vars ( struct isl_tab tab,
unsigned  n_new 
)

◆ isl_tab_free()

void isl_tab_free ( struct isl_tab tab)

Definition at line 204 of file isl_tab.c.

References isl_tab::basis, isl_tab::bmap, isl_tab::col_var, isl_tab::con, isl_tab::dual, free_undo(), isl_basic_map_free(), isl_mat_free(), isl_vec_free(), isl_tab::mat, isl_tab::row_sign, isl_tab::row_var, isl_tab::sample_index, isl_tab::samples, and isl_tab::var.

Referenced by add_eq(), add_gbr_eq(), add_gbr_ineq(), add_lexmin_ineq(), add_lexmin_valid_eq(), basic_map_collect_diff(), check_gbr_integer_feasible(), check_integer_feasible(), check_samples(), clear(), clear_coalesce_info(), clear_lexmin_data(), compute_chambers(), context_gbr_add_eq(), context_gbr_add_ineq(), context_gbr_detect_equalities(), context_gbr_free(), context_gbr_invalidate(), context_gbr_restore(), context_gbr_test_ineq(), context_lex_add_eq(), context_lex_add_ineq(), context_lex_detect_nonnegative_parameters(), context_lex_free(), context_lex_invalidate(), context_lex_restore(), context_tab_for_lexmin(), cut_to_integer_lexmin(), delete_lp(), find_solutions(), find_solutions_main(), free_todo(), fuse(), gbr_tab(), isl_basic_map_implicit_equalities(), isl_basic_map_remove_redundancies(), isl_basic_set_compute_vertices(), isl_basic_set_interior_point(), isl_basic_set_is_bounded(), isl_basic_set_reduced_basis(), isl_basic_set_scan(), isl_basic_set_vars_get_sign(), isl_tab_alloc(), isl_tab_detect_equalities(), isl_tab_drop_sample(), isl_tab_dup(), isl_tab_from_basic_map(), isl_tab_from_recession_cone(), isl_tab_init_samples(), isl_tab_lexmin_free(), isl_tab_product(), isl_tab_solve_lp(), lower_dim_vertices_free(), pos_neg(), propagate_equalities(), rational_sample(), sample_bounded(), set_row_cst_to_div(), sh_data_free(), tab_detect_nonnegative_parameters(), tab_for_lexmin(), tab_for_shifted_cone(), test_ineq_data_clear(), update_ineq_free(), uset_affine_hull_bounded(), uset_gist_full(), and valid_direction().

◆ isl_tab_freeze_constraint()

int isl_tab_freeze_constraint ( struct isl_tab tab,
int  con 
)

◆ isl_tab_from_basic_map()

__isl_give struct isl_tab * isl_tab_from_basic_map ( __isl_keep isl_basic_map bmap,
int  track 
)

◆ isl_tab_from_basic_set()

__isl_give struct isl_tab * isl_tab_from_basic_set ( __isl_keep isl_basic_set bset,
int  track 
)

◆ isl_tab_from_recession_cone()

struct isl_tab * isl_tab_from_recession_cone ( __isl_keep isl_basic_set bset,
int  parametric 
)

◆ isl_tab_get_ctx()

isl_ctx * isl_tab_get_ctx ( struct isl_tab tab)

◆ isl_tab_get_sample_value()

__isl_give isl_vec * isl_tab_get_sample_value ( struct isl_tab tab)

◆ isl_tab_ineq_type()

enum isl_ineq_type isl_tab_ineq_type ( struct isl_tab tab,
isl_int ineq 
)

◆ isl_tab_init_samples()

struct isl_tab * isl_tab_init_samples ( struct isl_tab tab)

◆ isl_tab_insert_div()

int isl_tab_insert_div ( struct isl_tab tab,
int  pos,
__isl_keep isl_vec div,
isl_stat(*)(void *user, isl_int *)  add_ineq,
void *  user 
)

◆ isl_tab_insert_var()

int isl_tab_insert_var ( struct isl_tab tab,
int  r 
)

◆ isl_tab_is_constant()

isl_bool isl_tab_is_constant ( struct isl_tab tab,
int  var,
isl_int value 
)

◆ isl_tab_is_equality()

int isl_tab_is_equality ( struct isl_tab tab,
int  con 
)

◆ isl_tab_is_redundant()

int isl_tab_is_redundant ( struct isl_tab tab,
int  con 
)

◆ isl_tab_kill_col()

int isl_tab_kill_col ( struct isl_tab tab,
int  col 
)

◆ isl_tab_make_equalities_explicit()

__isl_give isl_basic_map * isl_tab_make_equalities_explicit ( struct isl_tab tab,
__isl_take isl_basic_map bmap 
)

◆ isl_tab_mark_empty()

isl_stat isl_tab_mark_empty ( struct isl_tab tab)

◆ isl_tab_mark_rational()

int isl_tab_mark_rational ( struct isl_tab tab)

Definition at line 985 of file isl_tab.c.

References isl_tab_push(), isl_tab_undo_rational, isl_tab::need_undo, and isl_tab::rational.

Referenced by check_facets().

◆ isl_tab_mark_redundant()

int isl_tab_mark_redundant ( struct isl_tab tab,
int  row 
)

◆ isl_tab_min()

enum isl_lp_result isl_tab_min ( struct isl_tab tab,
isl_int f,
isl_int  denom,
isl_int opt,
isl_int opt_denom,
unsigned  flags 
)

◆ isl_tab_min_at_most_neg_one()

int isl_tab_min_at_most_neg_one ( struct isl_tab tab,
struct isl_tab_var var 
)

◆ isl_tab_need_undo()

isl_bool isl_tab_need_undo ( struct isl_tab tab)

Definition at line 3685 of file isl_tab.c.

References isl_bool_error, isl_bool_ok(), and isl_tab::need_undo.

Referenced by propagate_equalities().

◆ isl_tab_peek_bset()

__isl_keep isl_basic_set * isl_tab_peek_bset ( struct isl_tab tab)

◆ isl_tab_pivot()

int isl_tab_pivot ( struct isl_tab tab,
int  row,
int  col 
)

◆ isl_tab_print_internal()

static void isl_tab_print_internal ( __isl_keep struct isl_tab tab,
FILE *  out,
int  indent 
)
static

◆ isl_tab_product()

struct isl_tab * isl_tab_product ( struct isl_tab tab1,
struct isl_tab tab2 
)

◆ isl_tab_push()

isl_stat isl_tab_push ( struct isl_tab tab,
enum isl_tab_undo_type  type 
)

◆ isl_tab_push_basis()

isl_stat isl_tab_push_basis ( struct isl_tab tab)

◆ isl_tab_push_callback()

isl_stat isl_tab_push_callback ( struct isl_tab tab,
struct isl_tab_callback callback 
)

Definition at line 857 of file isl_tab.c.

References isl_tab_undo_val::callback, isl_tab_undo_callback, and push_union().

Referenced by sol_inc_level().

◆ isl_tab_push_var()

isl_stat isl_tab_push_var ( struct isl_tab tab,
enum isl_tab_undo_type  type,
struct isl_tab_var var 
)

◆ isl_tab_relax()

int isl_tab_relax ( struct isl_tab tab,
int  con 
)

◆ isl_tab_restore_redundant()

isl_stat isl_tab_restore_redundant ( struct isl_tab tab)

◆ isl_tab_rollback()

isl_stat isl_tab_rollback ( struct isl_tab tab,
struct isl_tab_undo snap 
)

◆ isl_tab_row_is_redundant()

int isl_tab_row_is_redundant ( struct isl_tab tab,
int  row 
)

◆ isl_tab_sample_is_integer()

int isl_tab_sample_is_integer ( struct isl_tab tab)

◆ isl_tab_save_samples()

isl_stat isl_tab_save_samples ( struct isl_tab tab)

◆ isl_tab_select_facet()

int isl_tab_select_facet ( struct isl_tab tab,
int  con 
)

◆ isl_tab_shift_var()

int isl_tab_shift_var ( struct isl_tab tab,
int  pos,
isl_int  shift 
)

◆ isl_tab_sign_of_max()

int isl_tab_sign_of_max ( struct isl_tab tab,
int  con 
)

Definition at line 1284 of file isl_tab.c.

References isl_tab::con, isl_mat::ctx, isl_assert, isl_tab::mat, sign_of_max(), and var().

Referenced by can_select().

◆ isl_tab_snap()

struct isl_tab_undo * isl_tab_snap ( struct isl_tab tab)

◆ isl_tab_swap_constraints()

isl_stat isl_tab_swap_constraints ( struct isl_tab tab,
int  con1,
int  con2 
)

Definition at line 3053 of file isl_tab.c.

References isl_tab::con, isl_stat_error, isl_stat_ok, isl_tab_check_con(), update_con_after_move(), and var().

Referenced by swap_eq().

◆ isl_tab_track_bmap()

isl_stat isl_tab_track_bmap ( struct isl_tab tab,
__isl_take isl_basic_map bmap 
)

◆ isl_tab_track_bset()

isl_stat isl_tab_track_bset ( struct isl_tab tab,
__isl_take isl_basic_set bset 
)

◆ isl_tab_unrestrict()

int isl_tab_unrestrict ( struct isl_tab tab,
int  con 
)

Definition at line 2888 of file isl_tab.c.

References isl_tab::con, isl_tab_push_var(), isl_tab_undo_unrestrict, and var().

Referenced by is_adj_ineq_extension_with_wraps().

◆ isl_tab_var_from_row()

struct isl_tab_var * isl_tab_var_from_row ( struct isl_tab tab,
int  i 
)

◆ max_is_manifestly_unbounded()

static int max_is_manifestly_unbounded ( struct isl_tab tab,
struct isl_tab_var var 
)
static

◆ may_be_equality()

static int may_be_equality ( struct isl_tab tab,
int  row 
)
static

◆ min_is_manifestly_unbounded()

static int min_is_manifestly_unbounded ( struct isl_tab tab,
struct isl_tab_var var 
)
static

◆ perform_undo()

static isl_stat perform_undo ( struct isl_tab tab,
struct isl_tab_undo undo 
)
static

◆ perform_undo_var()

static isl_stat perform_undo_var ( struct isl_tab tab,
struct isl_tab_undo undo 
)
static

◆ pivot_row()

static int pivot_row ( struct isl_tab tab,
struct isl_tab_var var,
int  sgn,
int  c 
)
static

◆ push_union()

static isl_stat push_union ( struct isl_tab tab,
enum isl_tab_undo_type  type,
union isl_tab_undo_val  u 
)
static

◆ reached()

static int reached ( struct isl_tab tab,
struct isl_tab_var var,
int  sgn,
isl_int  target,
isl_int tmp 
)
static

◆ restore_basis()

static int restore_basis ( struct isl_tab tab,
int *  col_var 
)
static

◆ restore_last_redundant()

static isl_stat restore_last_redundant ( struct isl_tab tab)
static

◆ restore_row()

static int restore_row ( struct isl_tab tab,
struct isl_tab_var var 
)
static

◆ rotate_constraints()

static int rotate_constraints ( struct isl_tab tab,
int  first,
int  n 
)
static

Definition at line 3075 of file isl_tab.c.

References isl_tab::con, n, update_con_after_move(), and var().

Referenced by isl_tab_make_equalities_explicit().

◆ row_at_most_neg_one()

static int row_at_most_neg_one ( struct isl_tab tab,
int  row 
)
static

◆ row_cmp()

static int row_cmp ( struct isl_tab tab,
int  r1,
int  r2,
int  c,
isl_int t 
)
static

Definition at line 623 of file isl_tab.c.

References isl_int_mul, isl_int_sgn, isl_int_submul, isl_tab::M, isl_tab::mat, isl_mat::row, and t.

Referenced by pivot_row().

◆ row_is_big()

static int row_is_big ( struct isl_tab tab,
int  row 
)
static

◆ row_is_manifestly_non_integral()

static int row_is_manifestly_non_integral ( struct isl_tab tab,
int  row 
)
static

◆ row_is_manifestly_zero()

static int row_is_manifestly_zero ( struct isl_tab tab,
int  row 
)
static

◆ row_is_neg()

static int row_is_neg ( struct isl_tab tab,
int  row 
)
static

Definition at line 1298 of file isl_tab.c.

References isl_int_is_neg, isl_int_is_pos, isl_tab::M, isl_tab::mat, and isl_mat::row.

Referenced by restore_row().

◆ row_sgn()

static int row_sgn ( struct isl_tab tab,
int  row 
)
static

Definition at line 1309 of file isl_tab.c.

References isl_int_is_zero, isl_int_sgn, isl_tab::M, isl_tab::mat, and isl_mat::row.

Referenced by restore_row(), and update_row_sign().

◆ select_marked()

static struct isl_tab_var * select_marked ( struct isl_tab tab)
static

◆ separation_type()

static enum isl_ineq_type separation_type ( struct isl_tab tab,
unsigned  row 
)
static

◆ sign_of_max()

static int sign_of_max ( struct isl_tab tab,
struct isl_tab_var var 
)
static

◆ sign_of_min()

static int sign_of_min ( struct isl_tab tab,
struct isl_tab_var var 
)
static

◆ swap_cols()

static void swap_cols ( struct isl_tab tab,
int  col1,
int  col2 
)
static

◆ swap_eq()

static isl_stat swap_eq ( unsigned  a,
unsigned  b,
void *  user 
)
static

Definition at line 3126 of file isl_tab.c.

References a(), b(), isl_tab_swap_constraints(), and user.

Referenced by gauss_if_shared().

◆ swap_rows()

static void swap_rows ( struct isl_tab tab,
int  row1,
int  row2 
)
static

◆ tab_is_manifestly_empty()

static int tab_is_manifestly_empty ( struct isl_tab tab)
static

◆ tab_mat_product()

static __isl_give isl_mat * tab_mat_product ( __isl_keep isl_mat mat1,
__isl_keep isl_mat mat2,
unsigned  row1,
unsigned  row2,
unsigned  col1,
unsigned  col2,
unsigned  off,
unsigned  r1,
unsigned  r2,
unsigned  d1,
unsigned  d2 
)
static

Definition at line 323 of file isl_tab.c.

References isl_mat_alloc(), isl_seq_clr(), isl_seq_cpy(), n, and isl_mat::row.

Referenced by isl_tab_product().

◆ to_col()

static int to_col ( struct isl_tab tab,
struct isl_tab_var var 
)
static

◆ to_row()

static int to_row ( struct isl_tab tab,
struct isl_tab_var var,
int  sign 
)
static

◆ unrelax()

static isl_stat unrelax ( struct isl_tab tab,
struct isl_tab_var var 
)
static

◆ ununrestrict()

static isl_stat ununrestrict ( struct isl_tab tab,
struct isl_tab_var var 
)
static

Definition at line 3747 of file isl_tab.c.

References isl_stat_error, isl_stat_ok, restore_row(), and var().

Referenced by perform_undo_var().

◆ update_con_after_move()

static int update_con_after_move ( struct isl_tab tab,
int  i,
int  old 
)
static

◆ update_index1()

static void update_index1 ( struct isl_tab_var var,
unsigned  r1,
unsigned  r2,
unsigned  d1,
unsigned  d2 
)
static

Definition at line 383 of file isl_tab.c.

References var().

Referenced by isl_tab_product().

◆ update_index2()

static void update_index2 ( struct isl_tab_var var,
unsigned  row1,
unsigned  col1,
unsigned  r1,
unsigned  r2,
unsigned  d1,
unsigned  d2 
)
static

Definition at line 397 of file isl_tab.c.

References var().

Referenced by isl_tab_product().

◆ update_row_sign()

static void update_row_sign ( struct isl_tab tab,
int  row,
int  col,
int  row_sgn 
)
static

◆ var_drop_entry()

static int var_drop_entry ( struct isl_tab tab,
int  first 
)
static

◆ var_from_col()

static struct isl_tab_var * var_from_col ( struct isl_tab tab,
int  i 
)
static

◆ var_from_index()

static struct isl_tab_var * var_from_index ( struct isl_tab tab,
int  i 
)
static

Definition at line 563 of file isl_tab.c.

References isl_tab::con, and isl_tab::var.

Referenced by isl_tab_var_from_row(), perform_undo_var(), restore_basis(), and var_from_col().

◆ var_insert_entry()

static int var_insert_entry ( struct isl_tab tab,
int  first 
)
static

◆ var_reaches()

static isl_bool var_reaches ( struct isl_tab tab,
struct isl_tab_var var,
int  sgn,
isl_int  target,
isl_int tmp 
)
static