* Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium
*/
-#include "isl_ctx.h"
-#include "isl_seq.h"
-#include "isl_set.h"
-#include "isl_lp.h"
-#include "isl_map.h"
-#include "isl_map_private.h"
+#include <isl_ctx_private.h>
+#include <isl_map_private.h>
+#include <isl/seq.h>
+#include <isl/set.h>
+#include <isl/lp.h>
+#include <isl/map.h>
#include "isl_equalities.h"
#include "isl_sample.h"
#include "isl_tab.h"
/* Drop all constraints in bset that involve any of the dimensions
* first to first+n-1.
*/
-static struct isl_basic_set *drop_constraints_involving
- (struct isl_basic_set *bset, unsigned first, unsigned n)
+__isl_give isl_basic_set *isl_basic_set_drop_constraints_involving(
+ __isl_take isl_basic_set *bset, unsigned first, unsigned n)
{
int i;
- if (!bset)
- return NULL;
+ if (n == 0)
+ return bset;
bset = isl_basic_set_cow(bset);
+ if (!bset)
+ return NULL;
+
for (i = bset->n_eq - 1; i >= 0; --i) {
if (isl_seq_first_non_zero(bset->eq[i] + 1 + first, n) == -1)
continue;
}
/* Given an unbounded tableau and an integer point satisfying the tableau,
- * construct an intial affine hull containing the recession cone
+ * construct an initial affine hull containing the recession cone
* shifted to the given point.
*
* The unbounded directions are taken from the last rows of the basis,
* isl_tab_set_initial_basis_with_cone will add some additional
* constraints to the tableau that have to be removed again.
* In this case, we therefore rollback to the state before
- * any constraints were added and then add the eqaulities back in.
+ * any constraints were added and then add the equalities back in.
*/
struct isl_tab *isl_tab_detect_equalities(struct isl_tab *tab,
struct isl_tab *tab_cone)
U = isl_mat_lin_to_aff(U);
bset = isl_basic_set_preimage(bset, isl_mat_copy(U));
- bset = drop_constraints_involving(bset, total - cone_dim, cone_dim);
+ bset = isl_basic_set_drop_constraints_involving(bset, total - cone_dim,
+ cone_dim);
bset = isl_basic_set_drop_dims(bset, total - cone_dim, cone_dim);
Q = isl_mat_lin_to_aff(Q);
bmap = isl_basic_map_cow(bmap);
if (bmap)
isl_basic_map_free_inequality(bmap, bmap->n_ineq);
+ bmap = isl_basic_map_finalize(bmap);
return bmap;
}