Sven Verdoolaege [Tue, 10 Mar 2009 10:06:43 +0000 (11:06 +0100)]
isl_basic_map_extend_dim: move responsibility of cow'ing to the caller
Some callers, notably isl_basic_map_detect_equalities, want to
extend the basic map to add equalities that are implicit to the
basic map. These equalities should be added to all copies,
so we definitely do not want to cow in such cases.
Sven Verdoolaege [Tue, 10 Mar 2009 09:51:09 +0000 (10:51 +0100)]
isl_basic_map_extend_dim: only extend constraint matrix if needed
Sven Verdoolaege [Sun, 8 Mar 2009 14:09:50 +0000 (15:09 +0100)]
isl_solve_lp: use tableaus instead of calling piplib (by default)
Sven Verdoolaege [Sat, 7 Mar 2009 22:24:40 +0000 (23:24 +0100)]
isl_solve_lp: accept affine object function instead of linear function
Sven Verdoolaege [Sat, 7 Mar 2009 13:19:31 +0000 (14:19 +0100)]
isl_map_simple_hull: use hash tables and tableaus
Sven Verdoolaege [Fri, 6 Mar 2009 16:59:33 +0000 (17:59 +0100)]
isl_convex_hull.c: extract out uset_simple_hull
Sven Verdoolaege [Tue, 3 Mar 2009 20:43:36 +0000 (21:43 +0100)]
isl_convex_hull.c: extend: avoid wrapping around already known ridges
Sven Verdoolaege [Tue, 3 Mar 2009 18:04:39 +0000 (19:04 +0100)]
isl_convex_hull.c: introduce proto_hull based on obvious facet constraints
proto_hull looks for for obvious facet constraints.
If any such constraints can be found, then the calling function
no longer needs to call initial_hull.
Sven Verdoolaege [Tue, 3 Mar 2009 14:02:53 +0000 (15:02 +0100)]
isl_convex_hull.c: move initial hull construction into separate function
Sven Verdoolaege [Tue, 3 Mar 2009 13:30:32 +0000 (14:30 +0100)]
isl_convex_hull.c: move computation of bounds into uset_convex_hull_wrap
Sven Verdoolaege [Tue, 3 Mar 2009 13:29:10 +0000 (14:29 +0100)]
isl_map_convex_hull: check for boundedness using recession cone
Sven Verdoolaege [Fri, 27 Feb 2009 21:20:21 +0000 (22:20 +0100)]
isl_basic_map_convex_hull: use tableau to detect redundant constraints
Sven Verdoolaege [Wed, 4 Mar 2009 17:12:30 +0000 (18:12 +0100)]
isl_affine_hull.c: use tableau to detect implicit equalities
Sven Verdoolaege [Sun, 15 Mar 2009 09:49:48 +0000 (10:49 +0100)]
isl_tab.c: don't detect equalities while setting up tableau
The original description of the algorithm tries to detect equalities
as soon as possible. In our application it may be best to wait
until all constraints are available. In some case we are not
even interested in the equalities.
Sven Verdoolaege [Wed, 4 Mar 2009 17:12:30 +0000 (18:12 +0100)]
add internal representation of LP tableaus
Sven Verdoolaege [Wed, 11 Mar 2009 16:23:09 +0000 (17:23 +0100)]
add isl_mat_extend
Sven Verdoolaege [Mon, 9 Mar 2009 10:44:05 +0000 (11:44 +0100)]
add isl_set_dim
Sven Verdoolaege [Tue, 3 Mar 2009 20:28:00 +0000 (21:28 +0100)]
privately export isl_basic_{set,map}_normalize_constraints
Sven Verdoolaege [Tue, 3 Mar 2009 14:01:51 +0000 (15:01 +0100)]
add isl_basic_set_extend_dim
Sven Verdoolaege [Sun, 1 Mar 2009 22:16:04 +0000 (23:16 +0100)]
isl_basic_map_eliminate_vars: clear divs first
Sven Verdoolaege [Sat, 28 Feb 2009 14:16:44 +0000 (15:16 +0100)]
isl_basic_map_eliminate_vars: remove all dependent vars first
Sven Verdoolaege [Fri, 6 Mar 2009 17:26:34 +0000 (18:26 +0100)]
add isl_hash_table_alloc and isl_hash_table_free
Sven Verdoolaege [Tue, 3 Mar 2009 14:54:03 +0000 (15:54 +0100)]
isl_hash_table_init: take minimal size instead of number of bits needed
Sven Verdoolaege [Tue, 3 Mar 2009 21:08:14 +0000 (22:08 +0100)]
isl_{basic_,}set_preimage: drop ctx argument
Sven Verdoolaege [Fri, 27 Feb 2009 10:18:01 +0000 (11:18 +0100)]
isl_basic_map_intersect: reuse sample value of either basic map if possible
If the sample value stored in one of the two basic maps is an element
of both basic maps, then we can keep it as sample value for the intersection.
Sven Verdoolaege [Thu, 26 Feb 2009 18:25:42 +0000 (19:25 +0100)]
add isl_int_ge
Sven Verdoolaege [Tue, 10 Mar 2009 18:23:24 +0000 (19:23 +0100)]
isl_basic_set_has_defining_inequalities: fix typo
Sven Verdoolaege [Mon, 9 Mar 2009 12:22:45 +0000 (13:22 +0100)]
isl_constraint_div: perform required reference increase on basic map
Both divs and constraints own their contained basic maps, so we
can't just steal the basic map from the constraint.
Sven Verdoolaege [Thu, 26 Feb 2009 15:38:45 +0000 (16:38 +0100)]
isl_basic_map: put inequalities before equalities
When confronted with a list of inequalities that need to be
turned into equalities, we want to handle the inequalities
in the same order in which we handle inequalities that can
be removed. Eventually, we would want to do these at the
same time.
Sven Verdoolaege [Thu, 26 Feb 2009 11:35:55 +0000 (12:35 +0100)]
add isl_seq_normalize
Sven Verdoolaege [Thu, 26 Feb 2009 11:14:21 +0000 (12:14 +0100)]
isl_ctx.h: make FL_ISSET return a boolean value
Sven Verdoolaege [Wed, 4 Mar 2009 10:44:51 +0000 (11:44 +0100)]
rename F_ and FL_ macros to ISL_F_ and ISL_FL_ to avoid name clashes
Sven Verdoolaege [Thu, 26 Feb 2009 10:59:03 +0000 (11:59 +0100)]
add isl_mat_swap_cols
Sven Verdoolaege [Wed, 25 Feb 2009 20:01:24 +0000 (21:01 +0100)]
isl_mat_dump: also indent NULL mat
Sven Verdoolaege [Wed, 25 Feb 2009 20:00:47 +0000 (21:00 +0100)]
add isl_calloc_type
Sven Verdoolaege [Mon, 2 Mar 2009 22:20:19 +0000 (23:20 +0100)]
isl_map_convex_hull: normalize map first
Sven Verdoolaege [Tue, 3 Mar 2009 09:49:52 +0000 (10:49 +0100)]
isl_set_preimage: clear ISL_SET_NORMALIZED flag
Sven Verdoolaege [Sun, 22 Feb 2009 15:58:56 +0000 (16:58 +0100)]
add isl_basic_map_detect_equalities
Sven Verdoolaege [Fri, 20 Feb 2009 16:12:30 +0000 (17:12 +0100)]
add isl_map_remove
Sven Verdoolaege [Thu, 19 Feb 2009 08:17:01 +0000 (09:17 +0100)]
export isl_basic_map_is_equal
Sven Verdoolaege [Wed, 18 Feb 2009 12:42:55 +0000 (13:42 +0100)]
add isl_basic_map_remove
Sven Verdoolaege [Wed, 18 Feb 2009 12:02:41 +0000 (13:02 +0100)]
add isl_dim_range
Sven Verdoolaege [Tue, 17 Feb 2009 19:49:14 +0000 (20:49 +0100)]
add isl_map_product
Sven Verdoolaege [Tue, 17 Feb 2009 17:39:31 +0000 (18:39 +0100)]
add isl_basic_map_add_constraint
Sven Verdoolaege [Tue, 17 Feb 2009 17:17:17 +0000 (18:17 +0100)]
add isl_dim_add
Sven Verdoolaege [Mon, 16 Feb 2009 21:56:06 +0000 (22:56 +0100)]
isl_map_piplib.c: isl_map_from_quast: properly keep track of dimension names
Sven Verdoolaege [Mon, 16 Feb 2009 15:00:09 +0000 (16:00 +0100)]
change calling convention of isl_basic_map_{equal,less_at,more_at}
Sven Verdoolaege [Mon, 16 Feb 2009 14:47:30 +0000 (15:47 +0100)]
add isl_map_copy_basic_map and isl_map_drop_basic_map
Sven Verdoolaege [Mon, 16 Feb 2009 12:54:01 +0000 (13:54 +0100)]
add isl_map_from_range
Sven Verdoolaege [Mon, 16 Feb 2009 12:45:23 +0000 (13:45 +0100)]
add isl_map_fast_is_empty
Sven Verdoolaege [Mon, 16 Feb 2009 12:36:14 +0000 (13:36 +0100)]
change calling convention of isl_map_empty and add isl_map_empty_like
Sven Verdoolaege [Thu, 22 Jan 2009 18:45:22 +0000 (19:45 +0100)]
isl_map_intersect_{domain,range}: allow intersection with parameter constraints
Sven Verdoolaege [Thu, 22 Jan 2009 16:09:13 +0000 (17:09 +0100)]
isl_map_intersect: allow intersection with pure parameter constraints
Sven Verdoolaege [Sun, 22 Feb 2009 15:12:53 +0000 (16:12 +0100)]
isl_basic_map_affine_hull: fix search for integer points
Before, we would mistakenly only look for integer points
in adjacent hyperplanes. This would be sufficient if we
were looking instead for rational points, although we could
then obtain an over-approximation of the integer affine hull.
Sven Verdoolaege [Sun, 22 Feb 2009 11:22:51 +0000 (12:22 +0100)]
isl_basic_map_overlying_set: don't add div constraints for unknown divs
Constructing div constraints as if the div were known, results in
unsatisfiable constraints.
Perhaps isl_basic_map_overlying_set shouldn't get called with a model
with unknown divs, but we currently allow it.
Sven Verdoolaege [Tue, 17 Feb 2009 19:27:29 +0000 (20:27 +0100)]
isl_dim.c: update n_name (only) when changing names
Sven Verdoolaege [Wed, 11 Feb 2009 18:22:36 +0000 (19:22 +0100)]
fix serious error in isl_mat_parameter_compression
The old version would sometimes remove valid solutions.
Since isl_mat_parameter_compression is used during simplification
on practically any set containing existentially quantified variables
involved in equalities, any such set could get corrupted.
Sven Verdoolaege [Wed, 11 Feb 2009 10:24:37 +0000 (11:24 +0100)]
export isl_basic_map_intersect_range
Sven Verdoolaege [Tue, 10 Feb 2009 17:34:53 +0000 (18:34 +0100)]
add isl_basic_map_floordiv
Sven Verdoolaege [Tue, 10 Feb 2009 16:58:46 +0000 (17:58 +0100)]
add isl_basic_map_fast_is_fixed
Sven Verdoolaege [Tue, 10 Feb 2009 16:30:43 +0000 (17:30 +0100)]
add isl_basic_map_neg
Sven Verdoolaege [Tue, 10 Feb 2009 15:50:30 +0000 (16:50 +0100)]
add isl_basic_map_sum
Sven Verdoolaege [Tue, 10 Feb 2009 14:49:03 +0000 (15:49 +0100)]
add isl_map_fix_si, a generalization of isl_basic_map_fix_input_si
Sven Verdoolaege [Wed, 4 Feb 2009 15:33:45 +0000 (16:33 +0100)]
isl_map_simplify.c: remove_duplicate_divs: remove divs from last to first
Sven Verdoolaege [Wed, 4 Feb 2009 15:00:08 +0000 (16:00 +0100)]
isl_basic_map_gauss: be careful not to introduce circular div definitions
Sven Verdoolaege [Wed, 4 Feb 2009 14:47:14 +0000 (15:47 +0100)]
add functions for setting isl_divs
Sven Verdoolaege [Tue, 3 Feb 2009 20:41:40 +0000 (21:41 +0100)]
isl_map_from_quast: don't throw away any bottom leaves
Before, we would perform an "optimization" that would simply
discard any leaves with a bottom when we hadn't seen any leaves
with a solution yet, the intention being that we don't need
to collect bottom leaves if there are no solutions.
However, the bottom leaves may precede solution leaves and
then we would erroneously discard them.
Sven Verdoolaege [Tue, 27 Jan 2009 09:48:32 +0000 (10:48 +0100)]
isl_map_simplify.c: normalize_divs: fix use of variable compression
When there is a div that depends on another div, then we need
to be careful not to look for the other div in the variable
compression matrix.
Sven Verdoolaege [Tue, 27 Jan 2009 08:52:04 +0000 (09:52 +0100)]
isl_mat_variable_compression: fix use after free
Sven Verdoolaege [Mon, 26 Jan 2009 22:38:49 +0000 (23:38 +0100)]
isl_map_simplify.c: normalize_divs: ensure enough existentials are available
Before, we would assume that normalizing the divs could never
increase the number of existential variables, but as shown by
the added test case, this isn't always true.
Sven Verdoolaege [Thu, 22 Jan 2009 20:46:36 +0000 (21:46 +0100)]
isl_hash_table_remove: update number of entries
Otherwise, removing an element and later adding it back again
would increase the number of elements in the table, quickly
leading to overflows.
Sven Verdoolaege [Thu, 22 Jan 2009 14:10:28 +0000 (15:10 +0100)]
isl_map_simple_hull: plug memory leak
The leak was introduced in
4433b45d31f7f5461ee372a8a4aa2d3a955f96b5
(isl_map_underlying_set: align divs before calling this function).
Sven Verdoolaege [Fri, 9 Jan 2009 11:43:30 +0000 (12:43 +0100)]
add std::ostream &operator<<(std::ostream &os, isl_int i) (for C++ builds)
Sven Verdoolaege [Wed, 31 Dec 2008 14:49:04 +0000 (15:49 +0100)]
normalize divs involved in equalities
Sven Verdoolaege [Sat, 3 Jan 2009 10:21:23 +0000 (11:21 +0100)]
isl_map_underlying_set: drop names from dimesion in underlying set
When applying isl_mat transforamtions on sets, we currently
assume that these sets have no names for the dimensions.
Sven Verdoolaege [Fri, 2 Jan 2009 21:32:21 +0000 (22:32 +0100)]
add isl_mat_parameter_compression
Sven Verdoolaege [Fri, 2 Jan 2009 21:29:01 +0000 (22:29 +0100)]
isl_equalities.c: extract and export isl_mat_variable_compression
Sven Verdoolaege [Fri, 2 Jan 2009 21:25:18 +0000 (22:25 +0100)]
add isl_basic_set_is_empty
Sven Verdoolaege [Fri, 2 Jan 2009 21:22:48 +0000 (22:22 +0100)]
add isl_mat_right_kernel
Sven Verdoolaege [Fri, 2 Jan 2009 16:18:42 +0000 (17:18 +0100)]
add isl_mat_col_submul
Sven Verdoolaege [Fri, 2 Jan 2009 15:58:57 +0000 (16:58 +0100)]
add isl_seq_submul
Sven Verdoolaege [Mon, 29 Dec 2008 15:18:43 +0000 (16:18 +0100)]
isl_map_simplify.c: extract out simplify and related code from isl_map.c
Sven Verdoolaege [Mon, 29 Dec 2008 14:41:37 +0000 (15:41 +0100)]
isl_constraint: add limited support for adding divs
Sven Verdoolaege [Sun, 28 Dec 2008 16:28:29 +0000 (17:28 +0100)]
change calling conventions of isl_basic_set_has_defining_{,in}equalit{y,ies}
Before, these functions would only allow detection of defining
(in)equalities on set dimensions. Rather than providing new
functions for detection on other kinds of variables, we generalize
the existing implementation to handle all kinds of variables.
Sven Verdoolaege [Sun, 28 Dec 2008 15:53:03 +0000 (16:53 +0100)]
add isl_basic_{set,map}_dim
Sven Verdoolaege [Sun, 28 Dec 2008 14:22:32 +0000 (15:22 +0100)]
isl_basic_map_gist: also exploit equalities in gisted set
Some inequalities in the gisted set may only be redundant
wrt the context inside the affine hull of the gisted set.
Although we did add the equalities to the (combined) context
before checking for redundancy, we did not perform any kind
of simplification in the combined context.
In particular, we did not perform any Gaussian elimination,
confusing the heuristic in isl_basic_map_constraint_is_redundant.
Sven Verdoolaege [Sun, 28 Dec 2008 13:39:51 +0000 (14:39 +0100)]
isl_basic_map_overlying_set: simplify resulting basic map
Sven Verdoolaege [Thu, 25 Dec 2008 13:51:45 +0000 (14:51 +0100)]
isl_stream: properly reference ctx
Sven Verdoolaege [Thu, 25 Dec 2008 13:43:40 +0000 (14:43 +0100)]
isl_stream.c: extracted from isl_input_omega.c
Sven Verdoolaege [Thu, 25 Dec 2008 12:48:51 +0000 (13:48 +0100)]
add isl_basic_set_read_from_str
Sven Verdoolaege [Wed, 24 Dec 2008 15:02:43 +0000 (16:02 +0100)]
export isl_set_compute_divs
Sven Verdoolaege [Wed, 24 Dec 2008 15:01:08 +0000 (16:01 +0100)]
isl_basic_map_align_divs: check divs of src basic map are known before sorting
Sven Verdoolaege [Wed, 24 Dec 2008 14:54:07 +0000 (15:54 +0100)]
isl_map_gist: ensure divs of map are known
We assume that the divs of the context are known, because we currently
only support gisting in the context of a basic map and computing the
divs of a basic map may result in a union of basic maps.
Sven Verdoolaege [Wed, 24 Dec 2008 14:46:03 +0000 (15:46 +0100)]
isl_basic_map_compute_divs: only (re)compute divs if any div is unknown
Sven Verdoolaege [Wed, 24 Dec 2008 14:31:20 +0000 (15:31 +0100)]
isl_basic_map_eliminate_vars: better handling of divs
In particular, if any div depends on one of the variables that is
being eliminated, then they should be eliminated too.
Furthermore, if a div is eliminated, then its definition should
be removed as well.
Sven Verdoolaege [Tue, 23 Dec 2008 14:51:13 +0000 (15:51 +0100)]
add isl_div abstraction, similar to isl_constraint
Sven Verdoolaege [Mon, 22 Dec 2008 15:25:34 +0000 (16:25 +0100)]
isl_basic_set_compare_at: combine constraints before setting up objective
The number of columns in the objective function should be equal
to the number of columns in the domain, but this number may change
during the call to add_constraints if bmap2 has any divs.
Sven Verdoolaege [Mon, 22 Dec 2008 15:21:34 +0000 (16:21 +0100)]
isl_map_underlying_set: align divs before calling this function
We need to know the meaning of the variables of the set returned by
isl_map_underlying_set in order to add it back in isl_basic_map_overlying_set,
but the number and the order of the existentially quantified variables
may change during a call to isl_map_align_divs.
We therefore need to call isl_map_align_divs first and use one of
the resulting basic maps as a model in our call to isl_basic_map_overlying_set.
Sven Verdoolaege [Mon, 22 Dec 2008 15:16:29 +0000 (16:16 +0100)]
isl_basic_map_overlying_set: properly handle divs in model
Before, we would extend the set after resetting the dimension
but before adding the divs from the model. Any coefficients
in the divs would therefore not be copied.
Sven Verdoolaege [Mon, 22 Dec 2008 14:56:49 +0000 (15:56 +0100)]
isl_basic_map_align_divs: don't make assumptions on the number of divs in dst
In particular, we shouldn't assume that the number of divs in dst
is bigger than the number of divs in src.
We _can_ and do assume that any previous divs have already been aligned
so we don't need to check the next div against previously aligned divs.