isl_vertices_foreach_disjoint_cell: handle saturation of interior point
In order to compute disjoint cells, exactly one of each pair of
internal constraints that separate two cells is tightened.
An interior point of one of the cells is used to select which
of the two constraints in each pair should be tightened.
In particular, the constraint that contains the interior point
is left unmodified. This ensures that the constraints that only
appear once, i.e., those that lie on the border of the union of cells,
are not modified.
In rare cases, a pair of internal constraints separating two
other cells may also go through the interior point selected from one cell.
In this case, both sides would be kept, resulting in cells that are
not disjoint.
Use the sign of the coefficients of the constraints to determine
which of these internal constraints should be kept. Note that
the border constraints are always handled by the interior point,
so there is no risk that one of these would get tightened.
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>