int i, j, k;
isl_int denom;
unsigned total;
+ unsigned n_div;
struct isl_upoly *up;
if (!eq)
goto error;
total = 1 + isl_dim_total(eq->dim);
+ n_div = eq->n_div;
isl_int_init(denom);
for (i = 0; i < eq->n_eq; ++i) {
- j = isl_seq_last_non_zero(eq->eq[i], total);
- if (j < 0 || j == 0)
+ j = isl_seq_last_non_zero(eq->eq[i], total + n_div);
+ if (j < 0 || j == 0 || j >= total)
continue;
for (k = 0; k < qp->div->n_row; ++k) {
void test_pwqp(struct isl_ctx *ctx)
{
const char *str;
+ isl_set *set;
isl_pw_qpolynomial *pwqp1, *pwqp2;
str = "{ [i,j,k] -> 1 + 9 * [i/5] + 7 * [j/11] + 4 * [k/13] }";
assert(isl_pw_qpolynomial_is_zero(pwqp1));
isl_pw_qpolynomial_free(pwqp1);
+
+ str = "{ [i] -> i }";
+ pwqp1 = isl_pw_qpolynomial_read_from_str(ctx, str);
+ str = "{ [k] : exists a : k = 2a }";
+ set = isl_set_read_from_str(ctx, str, 0);
+ pwqp1 = isl_pw_qpolynomial_gist(pwqp1, set);
+ str = "{ [i] -> i }";
+ pwqp2 = isl_pw_qpolynomial_read_from_str(ctx, str);
+
+ pwqp1 = isl_pw_qpolynomial_sub(pwqp1, pwqp2);
+
+ assert(isl_pw_qpolynomial_is_zero(pwqp1));
+
+ isl_pw_qpolynomial_free(pwqp1);
}
void test_split_periods(isl_ctx *ctx)