X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_factorization.c;h=f692cdbcd0b0d738d4217efff1ed7dea15fc6321;hb=7bc3560a92635b5dcf7eb9e7329992fc935a1ce2;hp=379222bc278c80c1f465046a7ed686631a23f459;hpb=88ff74ed2d97e672ebea5008d9b43cb6615939cd;p=platform%2Fupstream%2Fisl.git diff --git a/isl_factorization.c b/isl_factorization.c index 379222b..f692cdb 100644 --- a/isl_factorization.c +++ b/isl_factorization.c @@ -3,7 +3,7 @@ * Copyright 2008-2009 Katholieke Universiteit Leuven * Copyright 2010 INRIA Saclay * - * Use of this software is governed by the GNU LGPLv2.1 license + * Use of this software is governed by the MIT license * * Written by Sven Verdoolaege, Leiden Institute of Advanced Computer Science, * Universiteit Leiden, Niels Bohrweg 1, 2333 CA Leiden, The Netherlands @@ -13,8 +13,10 @@ * ZAC des vignes, 4 rue Jacques Monod, 91893 Orsay, France */ +#include #include -#include +#include +#include static __isl_give isl_factorizer *isl_factorizer_alloc( __isl_take isl_morph *morph, int n_group) @@ -56,21 +58,21 @@ void isl_factorizer_free(__isl_take isl_factorizer *f) free(f); } -void isl_factorizer_dump(__isl_take isl_factorizer *f, FILE *out) +void isl_factorizer_dump(__isl_take isl_factorizer *f) { int i; if (!f) return; - isl_morph_dump(f->morph, out); - fprintf(out, "["); + isl_morph_print_internal(f->morph, stderr); + fprintf(stderr, "["); for (i = 0; i < f->n_group; ++i) { if (i) - fprintf(out, ", "); - fprintf(out, "%d", f->len[i]); + fprintf(stderr, ", "); + fprintf(stderr, "%d", f->len[i]); } - fprintf(out, "]\n"); + fprintf(stderr, "]\n"); } __isl_give isl_factorizer *isl_factorizer_identity(__isl_keep isl_basic_set *bset) @@ -84,7 +86,7 @@ __isl_give isl_factorizer *isl_factorizer_groups(__isl_keep isl_basic_set *bset, int i; unsigned nvar; unsigned ovar; - isl_dim *dim; + isl_space *dim; isl_basic_set *dom; isl_basic_set *ran; isl_morph *morph; @@ -94,16 +96,16 @@ __isl_give isl_factorizer *isl_factorizer_groups(__isl_keep isl_basic_set *bset, if (!bset || !Q || !U) goto error; - ovar = 1 + isl_dim_offset(bset->dim, isl_dim_set); + ovar = 1 + isl_space_offset(bset->dim, isl_dim_set); id = isl_mat_identity(bset->ctx, ovar); Q = isl_mat_diagonal(isl_mat_copy(id), Q); U = isl_mat_diagonal(id, U); nvar = isl_basic_set_dim(bset, isl_dim_set); - dim = isl_basic_set_get_dim(bset); - dom = isl_basic_set_universe(isl_dim_copy(dim)); - dim = isl_dim_drop(dim, isl_dim_set, 0, nvar); - dim = isl_dim_add(dim, isl_dim_set, nvar); + dim = isl_basic_set_get_space(bset); + dom = isl_basic_set_universe(isl_space_copy(dim)); + dim = isl_space_drop_dims(dim, isl_dim_set, 0, nvar); + dim = isl_space_add_dims(dim, isl_dim_set, nvar); ran = isl_basic_set_universe(dim); morph = isl_morph_alloc(dom, ran, Q, U); f = isl_factorizer_alloc(morph, n); @@ -227,6 +229,8 @@ static int update_groups(struct isl_factor_groups *g, __isl_keep isl_mat *H) return -1; } } + for (i = 1; i < H->n_col; ++i) + update_group(g, i); return 0; } @@ -272,9 +276,9 @@ __isl_give isl_factorizer *isl_basic_set_factorizer( if (!H) return NULL; isl_mat_sub_copy(bset->ctx, H->row, bset->eq, bset->n_eq, - 0, 1 + isl_dim_offset(bset->dim, isl_dim_set), nvar); + 0, 1 + isl_space_offset(bset->dim, isl_dim_set), nvar); isl_mat_sub_copy(bset->ctx, H->row + bset->n_eq, bset->ineq, bset->n_ineq, - 0, 1 + isl_dim_offset(bset->dim, isl_dim_set), nvar); + 0, 1 + isl_space_offset(bset->dim, isl_dim_set), nvar); H = isl_mat_left_hermite(H, 0, &U, &Q); if (init_groups(&g, H) < 0) @@ -301,6 +305,9 @@ __isl_give isl_factorizer *isl_basic_set_factorizer( for (j = done + g.cnt[group]; j < nvar; ++j) if (g.group[j] == group) break; + if (j == nvar) + isl_die(bset->ctx, isl_error_internal, + "internal error", goto error); g.group[j] = g.group[done + i]; Q = isl_mat_swap_rows(Q, done + i, j); U = isl_mat_swap_cols(U, done + i, j);