X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_factorization.c;h=64d6b30e0393ab39b7f09f16aa9dd392db2239fa;hb=d1899304a8ef4a3f7c92079e96ae9bed106fa9ba;hp=5ca1487bbf52bb92ef45fbf8bdf9f06cde9604da;hpb=d03f7b1e7d2a2c890b01acb4e771456bcc51dbbd;p=platform%2Fupstream%2Fisl.git diff --git a/isl_factorization.c b/isl_factorization.c index 5ca1487..64d6b30 100644 --- a/isl_factorization.c +++ b/isl_factorization.c @@ -13,10 +13,10 @@ * ZAC des vignes, 4 rue Jacques Monod, 91893 Orsay, France */ +#include #include -#include +#include #include -#include static __isl_give isl_factorizer *isl_factorizer_alloc( __isl_take isl_morph *morph, int n_group) @@ -86,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; @@ -96,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); @@ -229,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; } @@ -274,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) @@ -303,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);