platform/upstream/isl.git
15 years agopolytope_scan.c: add missing include
Sven Verdoolaege [Sat, 5 Sep 2009 21:08:59 +0000 (23:08 +0200)]
polytope_scan.c: add missing include

15 years agofix return type of isl_div_free
Sven Verdoolaege [Sat, 5 Sep 2009 21:06:33 +0000 (23:06 +0200)]
fix return type of isl_div_free

15 years agoisl_map_simplify.c: drop return from void function
Sven Verdoolaege [Sat, 5 Sep 2009 21:05:44 +0000 (23:05 +0200)]
isl_map_simplify.c: drop return from void function

15 years agoisl_map_simplify.c: add missing include
Sven Verdoolaege [Sat, 5 Sep 2009 21:04:05 +0000 (23:04 +0200)]
isl_map_simplify.c: add missing include

15 years agoisl_convex_hull.c: use isl_seq_get_hash instead of isl_seq_hash
Sven Verdoolaege [Sat, 5 Sep 2009 21:03:19 +0000 (23:03 +0200)]
isl_convex_hull.c: use isl_seq_get_hash instead of isl_seq_hash

15 years agodeclare flexarrays of size 1 to silence sun compiler
Sven Verdoolaege [Sat, 5 Sep 2009 20:58:22 +0000 (22:58 +0200)]
declare flexarrays of size 1 to silence sun compiler

15 years agochange isl_basic_map_empty interface for consistency
Sven Verdoolaege [Sat, 5 Sep 2009 20:21:10 +0000 (22:21 +0200)]
change isl_basic_map_empty interface for consistency

15 years agoAX_SUBMODULE: mention default type of library to use
Sven Verdoolaege [Sat, 5 Sep 2009 13:02:29 +0000 (15:02 +0200)]
AX_SUBMODULE: mention default type of library to use

15 years agoconfigure.ac: use AX_SUBMODULE for gmp for consistency
Sven Verdoolaege [Sat, 5 Sep 2009 12:53:04 +0000 (14:53 +0200)]
configure.ac: use AX_SUBMODULE for gmp for consistency

15 years agoseparate out config header from isl_ctx.h
Sven Verdoolaege [Sat, 5 Sep 2009 12:32:01 +0000 (14:32 +0200)]
separate out config header from isl_ctx.h

15 years agopilp solver: don't ignore feasibility test on context
Sven Verdoolaege [Fri, 4 Sep 2009 21:39:57 +0000 (23:39 +0200)]
pilp solver: don't ignore feasibility test on context

In the initial implementation, the sample point of the context was
kept integer.  This was later changed in such a way that now the
sample point is just lexico-smallest rational value.
This means that after checking for an integer point, we rollback
until the state before we performed this check.
However, the results of the feasibility test were only checked
after the rollback, completely ignoring the actual results of
the feasibility test.

15 years agoisl_basic_map_gauss: try not to remove any div definitions
Sven Verdoolaege [Tue, 1 Sep 2009 20:59:21 +0000 (22:59 +0200)]
isl_basic_map_gauss: try not to remove any div definitions

After computing divs, the result may get simplified and during
this simplification, isl_basic_map_gauss may actually remove some
divs because it is trying to play safe wrt circular div definitions.
By keeping the divs ordered, divs can safely be eliminated without
introducing any circular definitions.

15 years agoadd isl_map_sum
Sven Verdoolaege [Sun, 30 Aug 2009 08:01:08 +0000 (10:01 +0200)]
add isl_map_sum

15 years agoadd isl_map_floordiv
Sven Verdoolaege [Sun, 30 Aug 2009 07:54:40 +0000 (09:54 +0200)]
add isl_map_floordiv

15 years agoadd isl_map_neg
Sven Verdoolaege [Sun, 30 Aug 2009 07:51:39 +0000 (09:51 +0200)]
add isl_map_neg

15 years agoadd isl_map_is_strict_subset
Sven Verdoolaege [Sun, 30 Aug 2009 07:43:49 +0000 (09:43 +0200)]
add isl_map_is_strict_subset

15 years agoadd isl_map_fast_is_fixed
Sven Verdoolaege [Sun, 30 Aug 2009 07:17:52 +0000 (09:17 +0200)]
add isl_map_fast_is_fixed

15 years agoadd isl_map_identity_like
Sven Verdoolaege [Sun, 30 Aug 2009 07:11:09 +0000 (09:11 +0200)]
add isl_map_identity_like

15 years agorename isl_map_identity_like to isl_map_identity_like_basic_map
Sven Verdoolaege [Sun, 30 Aug 2009 07:05:56 +0000 (09:05 +0200)]
rename isl_map_identity_like to isl_map_identity_like_basic_map

15 years agoadd isl_polytope_scan application
Sven Verdoolaege [Mon, 17 Aug 2009 08:13:56 +0000 (10:13 +0200)]
add isl_polytope_scan application

15 years agoisl_seq_normalize: use pre-allocated temporary variable in isl_ctx
Sven Verdoolaege [Sat, 15 Aug 2009 14:46:16 +0000 (16:46 +0200)]
isl_seq_normalize: use pre-allocated temporary variable in isl_ctx

This requires that we pass along an isl_ctx, but it removes
the need for allocating a temporary variable every time
isl_seq_normalize is called.
In some cases, up to 20% of the execution time of isl_seq_normalize
was wasted on initializing and clearing this temporary variable.

15 years agoadd isl_vec_normalize
Sven Verdoolaege [Sat, 15 Aug 2009 14:33:27 +0000 (16:33 +0200)]
add isl_vec_normalize

15 years agoisl_seq_normalize: no need to scale down by one
Sven Verdoolaege [Sat, 15 Aug 2009 14:20:38 +0000 (16:20 +0200)]
isl_seq_normalize: no need to scale down by one

15 years agoadd isl_polyhedron_minimize application
Sven Verdoolaege [Fri, 7 Aug 2009 19:31:45 +0000 (21:31 +0200)]
add isl_polyhedron_minimize application

15 years agoadd generalized basis reduction based ILP solver
Sven Verdoolaege [Mon, 10 Aug 2009 19:04:00 +0000 (21:04 +0200)]
add generalized basis reduction based ILP solver

15 years agoadd isl_vec_mat_product
Sven Verdoolaege [Sat, 15 Aug 2009 09:08:13 +0000 (11:08 +0200)]
add isl_vec_mat_product

15 years agoexport isl_vec_ceil
Sven Verdoolaege [Sun, 9 Aug 2009 16:12:57 +0000 (18:12 +0200)]
export isl_vec_ceil

15 years agoisl_basic_set_sample: only perform basis reduction once
Sven Verdoolaege [Sun, 9 Aug 2009 09:42:41 +0000 (11:42 +0200)]
isl_basic_set_sample: only perform basis reduction once

On larger problem, much time was spent on repeated basis reductions
with little or no reduction on the number of points visited.
The initial basis reduction seems to be sufficient in most cases.

15 years agorename isl_solve_lp to isl_basic_{map,set}_solve_lp
Sven Verdoolaege [Sun, 9 Aug 2009 16:08:09 +0000 (18:08 +0200)]
rename isl_solve_lp to isl_basic_{map,set}_solve_lp

15 years agoisl_solve_lp: optionally return solution point
Sven Verdoolaege [Sat, 8 Aug 2009 10:20:56 +0000 (12:20 +0200)]
isl_solve_lp: optionally return solution point

The caller may now not be interested in the optimal value anymore,
so make returning this optimal value optional.

15 years agoexport isl_vec header
Sven Verdoolaege [Sun, 9 Aug 2009 15:20:27 +0000 (17:20 +0200)]
export isl_vec header

15 years agoadd isl_int_fdiv_q_ui
Sven Verdoolaege [Sat, 8 Aug 2009 10:20:01 +0000 (12:20 +0200)]
add isl_int_fdiv_q_ui

15 years agoadd isl_vec_read_from_file
Sven Verdoolaege [Fri, 7 Aug 2009 19:31:27 +0000 (21:31 +0200)]
add isl_vec_read_from_file

15 years agoisl_basic_map_drop_redundant_divs: also investigate divs that have a definition
Sven Verdoolaege [Fri, 14 Aug 2009 11:38:03 +0000 (13:38 +0200)]
isl_basic_map_drop_redundant_divs: also investigate divs that have a definition

They may have become redundant after having been defined.

15 years agoisl_basic_map_apply_{domain,range}: drop redundant divs in result
Sven Verdoolaege [Fri, 14 Aug 2009 11:37:31 +0000 (13:37 +0200)]
isl_basic_map_apply_{domain,range}: drop redundant divs in result

15 years agoisl_map_simplify.c: fix typo in comment
Sven Verdoolaege [Thu, 13 Aug 2009 18:09:49 +0000 (20:09 +0200)]
isl_map_simplify.c: fix typo in comment

15 years agoisl_basic_set_project_out: drop redundant divs in result
Sven Verdoolaege [Thu, 13 Aug 2009 14:49:43 +0000 (16:49 +0200)]
isl_basic_set_project_out: drop redundant divs in result

15 years agoisl_basic_map_remove: only drop divs if basic map did not turn out to be empty
Sven Verdoolaege [Fri, 28 Aug 2009 17:40:58 +0000 (19:40 +0200)]
isl_basic_map_remove: only drop divs if basic map did not turn out to be empty

If isl_basic_map_eliminate_vars finds that its argument is empty,
it resets its constraints to the canonical representation of an empty
set and drops all divs.

15 years agoisl_basic_map_detect_equalities: explicitly keep track of any equalities found
Sven Verdoolaege [Thu, 13 Aug 2009 14:01:56 +0000 (16:01 +0200)]
isl_basic_map_detect_equalities: explicitly keep track of any equalities found

The way extend_affine_hull works is that it starts off from an
under-approximation of the affine hull and then extends it with
each extra point found outside of the current approximation.
The affine hull is then determined by the equalities that remain.

However, during the computation, we may find an equality in
the current approximation such that there is no point in the set
outside of this equality.  If the approximation is later extended
with a point found outside some other equality, then this first
equality would get tested again.  If this is a difficult computation,
then we needlessly go through it again.

By explicitly storing the equality that we have detected in the set,
this computation becomes trivial, to there is no real harm in doing
again.  An alternative would be to keep track of all equalities found
in some additional data structure, but adding it to the original set
seems preferable since it may also simplify tests for points outside
other equalities.

Perhaps the calling convention should be changed such that
extend_affine_hull would return the original set intersected
with its affine hull, rather than the affine hull itself.

15 years agoisl_basic_map_extend_dim: keep hold of sample if dimension doesn't change
Sven Verdoolaege [Thu, 13 Aug 2009 14:01:12 +0000 (16:01 +0200)]
isl_basic_map_extend_dim: keep hold of sample if dimension doesn't change

15 years agoisl_tab_min: read off all information from tableau before rollback
Sven Verdoolaege [Sat, 8 Aug 2009 18:08:16 +0000 (20:08 +0200)]
isl_tab_min: read off all information from tableau before rollback

As it happens, the rollback has little effect in this case and
the information is still available, but we shouldn't depend on this.

15 years agoisl_tab_add_valid_eq: keep track of whether equality is negated
Sven Verdoolaege [Sat, 8 Aug 2009 18:02:40 +0000 (20:02 +0200)]
isl_tab_add_valid_eq: keep track of whether equality is negated

This is important during generalized basis reduction, because
this procedure requires the dual variables of some of the
equalities added to the tableau.  If the original equality get
negated then the dual of the original equality will be the
opposite of the dual of the equality that was actually added.

Without this fix, gbr could in some cases make completely
inappropriate decisions.

15 years agoconfigure.ac: no longer use piplib by default
Sven Verdoolaege [Fri, 7 Aug 2009 12:29:56 +0000 (14:29 +0200)]
configure.ac: no longer use piplib by default

15 years agoadd an internal parametric integer linear program solver
Sven Verdoolaege [Wed, 22 Jul 2009 12:48:07 +0000 (14:48 +0200)]
add an internal parametric integer linear program solver

This removes the dependence on piplib.

The solver is very similar to the one in piplib.
In particular, as in piplib, the lexicographic solver is
used recursively on the context.  This means that the current
solver will run into the same problems the piplib solver runs into
while looking for an integer point in a context that no longer has any.

In the future, we will replace this recursive call by a call
to an incremental solver based on the generalized basis reduction solver.

15 years agoisl_mat_extend: make sure the number of rows never decreases
Sven Verdoolaege [Thu, 6 Aug 2009 14:15:56 +0000 (16:15 +0200)]
isl_mat_extend: make sure the number of rows never decreases

15 years agoisl_affine_hull.c: only construct affine hull in bounded directions
Sven Verdoolaege [Thu, 6 Aug 2009 10:20:46 +0000 (12:20 +0200)]
isl_affine_hull.c: only construct affine hull in bounded directions

The affine hull of a set necessarily contains the directions
of the recession cone of the set.
Before we exploited this fact by adding these directions to
our initial approximation of the affine hull.
The set for which the affine hull was computed was not changed, however.
Now, we project out the recession cone and only construct an
affine hull in the remaining part.

15 years agoisl_tab: add support for keeping track of samples
Sven Verdoolaege [Fri, 7 Aug 2009 08:07:44 +0000 (10:07 +0200)]
isl_tab: add support for keeping track of samples

15 years agoisl_tab: optionally keep track of row signs
Sven Verdoolaege [Wed, 5 Aug 2009 09:01:05 +0000 (11:01 +0200)]
isl_tab: optionally keep track of row signs

15 years agoisl_tab: add isl_basic_set field for optionally keeping track of inequalities
Sven Verdoolaege [Wed, 5 Aug 2009 08:49:48 +0000 (10:49 +0200)]
isl_tab: add isl_basic_set field for optionally keeping track of inequalities

15 years agoisl_tab: introduce support for "big parameters"
Sven Verdoolaege [Wed, 5 Aug 2009 08:22:52 +0000 (10:22 +0200)]
isl_tab: introduce support for "big parameters"

These will be used while solving PILP problems.

15 years agoisl_tab: allow introduction of extra variables
Sven Verdoolaege [Wed, 5 Aug 2009 08:02:02 +0000 (10:02 +0200)]
isl_tab: allow introduction of extra variables

15 years agoisl_tab: introduce parameters and divs
Sven Verdoolaege [Wed, 5 Aug 2009 08:08:04 +0000 (10:08 +0200)]
isl_tab: introduce parameters and divs

15 years agoisl_tab.h: fix typo in comment
Sven Verdoolaege [Fri, 7 Aug 2009 09:39:50 +0000 (11:39 +0200)]
isl_tab.h: fix typo in comment

15 years agoisl_tab: allow saving and restoring the complete basis
Sven Verdoolaege [Wed, 5 Aug 2009 07:46:00 +0000 (09:46 +0200)]
isl_tab: allow saving and restoring the complete basis

15 years agoisl_tab: privately export some functionality
Sven Verdoolaege [Wed, 5 Aug 2009 07:37:07 +0000 (09:37 +0200)]
isl_tab: privately export some functionality

15 years agoisl_tab: store undo argument in a union for future extensions
Sven Verdoolaege [Wed, 5 Aug 2009 07:25:40 +0000 (09:25 +0200)]
isl_tab: store undo argument in a union for future extensions

15 years agoadd isl_basic_set_sample_bounded
Sven Verdoolaege [Thu, 6 Aug 2009 10:35:46 +0000 (12:35 +0200)]
add isl_basic_set_sample_bounded

15 years agoprivately export isl_basic_set_order_divs
Sven Verdoolaege [Tue, 4 Aug 2009 15:17:26 +0000 (17:17 +0200)]
privately export isl_basic_set_order_divs

15 years agoisl_map_simplify.c: remove_dependent_vars: only remove definitions of divs
Sven Verdoolaege [Tue, 4 Aug 2009 15:00:43 +0000 (17:00 +0200)]
isl_map_simplify.c: remove_dependent_vars: only remove definitions of divs

Don't remove the dependent divs themselves, because in particular
eliminate_divs_ineq does not expect any other divs to get removed.

15 years agoisl_basic_map_compute_divs: use isl_basic_set_lexmin and move to isl_map.c
Sven Verdoolaege [Mon, 3 Aug 2009 18:40:22 +0000 (20:40 +0200)]
isl_basic_map_compute_divs: use isl_basic_set_lexmin and move to isl_map.c

There is no need for the core of isl_basic_map_compute_divs to use any
piplib specific code.  We therefore move the code to isl_map.c so
that it can also be used on top of another PILP solver.

15 years agoisl_pip_basic_map_compute_divs: don't turn divs into output dimensions
Sven Verdoolaege [Mon, 3 Aug 2009 17:58:51 +0000 (19:58 +0200)]
isl_pip_basic_map_compute_divs: don't turn divs into output dimensions

There is no practical reason why we should want to do this transformation
and removing it makes it possible to you use the standard interface
to pip in the next commit.

15 years agoprivately export isl_basic_map_swap_div
Sven Verdoolaege [Mon, 3 Aug 2009 14:20:01 +0000 (16:20 +0200)]
privately export isl_basic_map_swap_div

15 years agoisl_{set,map}_add: don't add obviously empty basic sets/maps
Sven Verdoolaege [Mon, 3 Aug 2009 10:01:57 +0000 (12:01 +0200)]
isl_{set,map}_add: don't add obviously empty basic sets/maps

15 years agocombine isl_pip_basic_map_lex{min,max} into isl_pip_basic_map_lexopt
Sven Verdoolaege [Sun, 2 Aug 2009 17:46:30 +0000 (19:46 +0200)]
combine isl_pip_basic_map_lex{min,max} into isl_pip_basic_map_lexopt

15 years agomake piplib headers private
Sven Verdoolaege [Sun, 2 Aug 2009 11:46:17 +0000 (13:46 +0200)]
make piplib headers private

15 years agoisl_mat: keep track of the actual number of columns in a row
Sven Verdoolaege [Sun, 2 Aug 2009 08:51:34 +0000 (10:51 +0200)]
isl_mat: keep track of the actual number of columns in a row

We need this number to perform extensions after dropping columns.

15 years agoisl_tab_pivot: fix typo that prevented normalization of rows
Sven Verdoolaege [Sat, 1 Aug 2009 17:32:04 +0000 (19:32 +0200)]
isl_tab_pivot: fix typo that prevented normalization of rows

15 years agoadd isl_basic_set_positive_orthant
Sven Verdoolaege [Wed, 29 Jul 2009 13:18:47 +0000 (15:18 +0200)]
add isl_basic_set_positive_orthant

15 years agoadd isl_basic_set_partial_lex{min,max}
Sven Verdoolaege [Wed, 29 Jul 2009 12:40:46 +0000 (14:40 +0200)]
add isl_basic_set_partial_lex{min,max}

15 years agorename isl_basic_map_lex{min,max} to isl_basic_map_partial_lex{min,max}
Sven Verdoolaege [Wed, 29 Jul 2009 12:33:14 +0000 (14:33 +0200)]
rename isl_basic_map_lex{min,max} to isl_basic_map_partial_lex{min,max}

15 years agoadd isl_basic_set_free_div
Sven Verdoolaege [Tue, 28 Jul 2009 14:21:42 +0000 (16:21 +0200)]
add isl_basic_set_free_div

15 years agoisl_set_dim: support isl_dim_all
Sven Verdoolaege [Tue, 28 Jul 2009 11:48:54 +0000 (13:48 +0200)]
isl_set_dim: support isl_dim_all

15 years agoisl_tab: store index of variable in undo record instead of pointer to variable
Sven Verdoolaege [Fri, 24 Jul 2009 15:47:35 +0000 (17:47 +0200)]
isl_tab: store index of variable in undo record instead of pointer to variable

The row of variables might get reallocated between pushing the undo
record and performing the undo, invalidating the pointer.

15 years agoadd isl_{set,map}_grow
Sven Verdoolaege [Fri, 24 Jul 2009 10:22:14 +0000 (12:22 +0200)]
add isl_{set,map}_grow

15 years agoadd isl_map_get_dim
Sven Verdoolaege [Sun, 2 Aug 2009 17:11:15 +0000 (19:11 +0200)]
add isl_map_get_dim

15 years agoadd isl_basic_map_get_dim
Sven Verdoolaege [Sun, 2 Aug 2009 17:05:36 +0000 (19:05 +0200)]
add isl_basic_map_get_dim

15 years agoadd isl_tab_dup
Sven Verdoolaege [Tue, 4 Aug 2009 17:39:23 +0000 (19:39 +0200)]
add isl_tab_dup

15 years agoexport isl_mat_dup
Sven Verdoolaege [Tue, 4 Aug 2009 17:33:09 +0000 (19:33 +0200)]
export isl_mat_dup

15 years agoisl_tab.c: mark_redundant: only mark variable nonneg if they weren't already
Sven Verdoolaege [Thu, 23 Jul 2009 16:51:26 +0000 (18:51 +0200)]
isl_tab.c: mark_redundant: only mark variable nonneg if they weren't already

More imporantly, don't undo such a mark during rollback.

15 years agoisl_tab.c: to_row: allow pivoting in arbitrary direction
Sven Verdoolaege [Thu, 23 Jul 2009 16:15:17 +0000 (18:15 +0200)]
isl_tab.c: to_row: allow pivoting in arbitrary direction

While undoing the allocation of a row, we may be dealing with
a row that was unbounded in both directions and is now in a column.
To move the column back to a row, we just pivot using any non-zero entry.

15 years agoisl_tab.c: simplify code by letting mark_empty return tab
Sven Verdoolaege [Thu, 23 Jul 2009 13:29:44 +0000 (15:29 +0200)]
isl_tab.c: simplify code by letting mark_empty return tab

15 years agoadd isl_seq_last_non_zero
Sven Verdoolaege [Thu, 23 Jul 2009 09:46:25 +0000 (11:46 +0200)]
add isl_seq_last_non_zero

15 years agoisl_tab.c: simplify add_eq
Sven Verdoolaege [Thu, 23 Jul 2009 09:40:43 +0000 (11:40 +0200)]
isl_tab.c: simplify add_eq

15 years agoisl_tab.c: extract allocate_con
Sven Verdoolaege [Thu, 23 Jul 2009 07:24:41 +0000 (09:24 +0200)]
isl_tab.c: extract allocate_con

15 years agoprivately export isl_basic_set_set_rational
Sven Verdoolaege [Wed, 22 Jul 2009 11:39:26 +0000 (13:39 +0200)]
privately export isl_basic_set_set_rational

15 years agoconfigure.ac: explicitly set AC_CONFIG_AUX_DIR
Sven Verdoolaege [Wed, 22 Jul 2009 19:35:40 +0000 (21:35 +0200)]
configure.ac: explicitly set AC_CONFIG_AUX_DIR

Without it, libtool can apparently get confused about which
ltmain.sh to use.

15 years agoconvex_hull: coalesce set during facet computation
Sven Verdoolaege [Tue, 21 Jul 2009 11:37:22 +0000 (13:37 +0200)]
convex_hull: coalesce set during facet computation

15 years agoisl_map_coalesce: don't drop rational flag from result if set in input
Sven Verdoolaege [Tue, 21 Jul 2009 11:31:47 +0000 (13:31 +0200)]
isl_map_coalesce: don't drop rational flag from result if set in input

15 years agoisl_tab_cone_is_bounded: start over after computing sign_of_max
Sven Verdoolaege [Mon, 20 Jul 2009 19:46:14 +0000 (21:46 +0200)]
isl_tab_cone_is_bounded: start over after computing sign_of_max

sign_of_max may have made some rows redundant and may therefore
invalidate the iteration over all non-redundant rows.

Problem reported by Uday Kumar <udayreddy@gmail.com>

15 years agoisl_basic_set_dim_residue_class: only set *modulo to 0 when dimension is fixed
Sven Verdoolaege [Sat, 18 Jul 2009 16:06:02 +0000 (18:06 +0200)]
isl_basic_set_dim_residue_class: only set *modulo to 0 when dimension is fixed

Before, when no residue class could be detected, *modulo was sometimes
set to 0 and sometimes to 1.  Now *modulo is always set to 1 in these
cases, except when the specified dimension has a fixed constant value,
in which case *modulo is set to 0 and *residue to the fixed value.

15 years agoadd isl_basic_set_fast_dim_is_fixed
Sven Verdoolaege [Sat, 18 Jul 2009 16:00:14 +0000 (18:00 +0200)]
add isl_basic_set_fast_dim_is_fixed

15 years agoisl_tab: drop isl_ctx argument where not absolutely required
Sven Verdoolaege [Thu, 16 Jul 2009 18:03:29 +0000 (20:03 +0200)]
isl_tab: drop isl_ctx argument where not absolutely required

15 years agoisl_mat: keep track of isl_ctx
Sven Verdoolaege [Thu, 16 Jul 2009 17:16:06 +0000 (19:16 +0200)]
isl_mat: keep track of isl_ctx

15 years agoisl_basic_set_sample: don't project out lineality space up front
Sven Verdoolaege [Thu, 16 Jul 2009 09:00:32 +0000 (11:00 +0200)]
isl_basic_set_sample: don't project out lineality space up front

For the pip based sampler, projecting out the lineality space
is part of isl_basic_set_skew_to_positive_orthant, so there is
no need for a separate projection step before the skewing.

For the gbr based sampler, there is no need to project out the lineality
space.  The lineality space will simply be part of the recession cone,
which is handled more efficiently than the projection.
In particular, for systems with many variables, the unimodular transformation
used in the projection may have very large coefficients, which in turn
leads to constraints with large coefficients.  Since there is no need
to do this projection, it is best to avoid it.

15 years agoisl_basic_map_fix_pos: micro-optimization
Sven Verdoolaege [Wed, 15 Jul 2009 08:35:43 +0000 (10:35 +0200)]
isl_basic_map_fix_pos: micro-optimization

15 years agomove isl_basic_set_skew_to_positive_orthant to isl_sample.c
Sven Verdoolaege [Tue, 14 Jul 2009 13:34:00 +0000 (15:34 +0200)]
move isl_basic_set_skew_to_positive_orthant to isl_sample.c

Also, replace independent_bounds in isl_sample.c by that
of isl_sample_piplib.c
The difference is that the latter returns affine bounds
rather than linear bounds and that it return the actual
bounds from the set rather than some linear combinations
of bounds.

It is usually better to use the original bounds as
the linearly transformed bounds may have bigger coefficients
and may therefore be more difficult to process.

15 years agoisl_tab.c: fix typo in comment
Sven Verdoolaege [Mon, 13 Jul 2009 15:02:37 +0000 (17:02 +0200)]
isl_tab.c: fix typo in comment

15 years agoisl_basic_set_sample: break early if sample found in basic_set_range
Sven Verdoolaege [Mon, 13 Jul 2009 10:23:49 +0000 (12:23 +0200)]
isl_basic_set_sample: break early if sample found in basic_set_range

15 years agoexport isl_tab_sample_is_integer
Sven Verdoolaege [Mon, 13 Jul 2009 09:49:43 +0000 (11:49 +0200)]
export isl_tab_sample_is_integer

15 years agoisl_basic_set_sample: check sample stored by isl_basic_map_is_empty first
Sven Verdoolaege [Mon, 13 Jul 2009 09:23:06 +0000 (11:23 +0200)]
isl_basic_set_sample: check sample stored by isl_basic_map_is_empty first