dim = isl_pw_qpolynomial_fold_get_dim(pwf);
nvar = isl_dim_size(dim, isl_dim_set);
- if (isl_pw_qpolynomial_fold_is_zero(pwf)) {
- isl_pw_qpolynomial_fold_free(pwf);
+ if (isl_dim_is_wrapping(dim)) {
+ dim = isl_dim_unwrap(dim);
+ nvar = isl_dim_size(dim, isl_dim_out);
+ dim = isl_dim_domain(dim);
+ } else
dim = isl_dim_drop(dim, isl_dim_set, 0, nvar);
+
+ if (nvar == 0) {
if (tight)
*tight = 1;
- return isl_pw_qpolynomial_fold_zero(dim, pwf->type);
+ return isl_pw_qpolynomial_fold_reset_dim(pwf, dim);
}
- if (nvar == 0) {
- isl_dim_free(dim);
+ if (isl_pw_qpolynomial_fold_is_zero(pwf)) {
+ isl_pw_qpolynomial_fold_free(pwf);
if (tight)
*tight = 1;
- return pwf;
+ return isl_pw_qpolynomial_fold_zero(dim, pwf->type);
}
- if (isl_dim_is_wrapping(dim)) {
- dim = isl_dim_unwrap(dim);
- nvar = isl_dim_size(dim, isl_dim_out);
- dim = isl_dim_domain(dim);
- if (nvar == 0) {
- if (tight)
- *tight = 1;
- return isl_pw_qpolynomial_fold_reset_dim(pwf, dim);
- }
- } else
- dim = isl_dim_drop(dim, isl_dim_set, 0, nvar);
-
bound.pwf = isl_pw_qpolynomial_fold_zero(isl_dim_copy(dim), pwf->type);
bound.pwf_tight = isl_pw_qpolynomial_fold_zero(isl_dim_copy(dim),
pwf->type);
isl_union_map_free(umap2);
}
+void test_bound(isl_ctx *ctx)
+{
+ const char *str;
+ isl_pw_qpolynomial *pwqp;
+ isl_pw_qpolynomial_fold *pwf;
+
+ str = "{ [[a, b, c, d] -> [e]] -> 0 }";
+ pwqp = isl_pw_qpolynomial_read_from_str(ctx, str);
+ pwf = isl_pw_qpolynomial_bound(pwqp, isl_fold_max, NULL);
+ assert(isl_pw_qpolynomial_fold_dim(pwf, isl_dim_set) == 4);
+ isl_pw_qpolynomial_fold_free(pwf);
+}
+
int main()
{
struct isl_ctx *ctx;
assert(srcdir);
ctx = isl_ctx_alloc();
+ test_bound(ctx);
test_union(ctx);
test_split_periods(ctx);
test_parse(ctx);