* ZAC des vignes, 4 rue Jacques Monod, 91893 Orsay, France
*/
-#include <isl_set.h>
-#include <isl_seq.h>
+#include <isl_ctx_private.h>
+#include <isl_map_private.h>
+#include <isl/set.h>
+#include <isl/seq.h>
#include <isl_morph.h>
#include <isl_factorization.h>
#include <isl_vertices_private.h>
return 0;
continue;
}
- v = cell->vertices->c[cell->id].vertices[n - 1 - i];
+ v = cell->ids[n - 1 - i];
return vertex_is_integral(cell->vertices->v[v].vertex);
}
isl_qpolynomial **subs;
isl_pw_qpolynomial_fold *pwf;
isl_set *dom;
+ isl_ctx *ctx;
nvar = isl_qpolynomial_dim(poly, isl_dim_set) - 1;
- n_vertices = cell->vertices->c[cell->id].n_vertices;
+ n_vertices = cell->n_vertices;
+
+ ctx = isl_qpolynomial_get_ctx(poly);
+ if (n_vertices > nvar + 1 && ctx->opt->bernstein_triangulate)
+ return isl_cell_foreach_simplex(cell,
+ &bernstein_coefficients_cell, user);
- subs = isl_alloc_array(data->poly->dim->ctx, isl_qpolynomial *,
- 1 + nvar);
+ subs = isl_alloc_array(ctx, isl_qpolynomial *, 1 + nvar);
if (!subs)
goto error;
c = isl_qpolynomial_var(isl_dim_copy(dim_dst), isl_dim_set,
1 + nvar + i);
for (j = 0; j < nvar; ++j) {
- int k = cell->vertices->c[cell->id].vertices[i];
+ int k = cell->ids[i];
isl_qpolynomial *v;
v = vertex_coordinate(cell->vertices->v[k].vertex, j,
isl_dim_copy(dim_param));
data->fold_tight = isl_qpolynomial_fold_empty(data->type, dim_param);
extract_coefficients(poly, dom, data);
- pwf = isl_pw_qpolynomial_fold_alloc(isl_set_copy(dom), data->fold);
- data->pwf = isl_pw_qpolynomial_fold_add(data->pwf, pwf);
- pwf = isl_pw_qpolynomial_fold_alloc(dom, data->fold_tight);
- data->pwf_tight = isl_pw_qpolynomial_fold_add(data->pwf_tight, pwf);
+ pwf = isl_pw_qpolynomial_fold_alloc(data->type, isl_set_copy(dom),
+ data->fold);
+ data->pwf = isl_pw_qpolynomial_fold_fold(data->pwf, pwf);
+ pwf = isl_pw_qpolynomial_fold_alloc(data->type, dom, data->fold_tight);
+ data->pwf_tight = isl_pw_qpolynomial_fold_fold(data->pwf_tight, pwf);
isl_qpolynomial_free(poly);
isl_cell_free(cell);
dom = isl_set_from_basic_set(bset);
if (tight)
*tight = 1;
- return isl_pw_qpolynomial_fold_alloc(dom, fold);
+ return isl_pw_qpolynomial_fold_alloc(data->type, dom, fold);
}
if (isl_qpolynomial_is_zero(poly)) {
isl_qpolynomial_fold *fold;
fold = isl_qpolynomial_fold_alloc(data->type, poly);
dom = isl_set_from_basic_set(bset);
- pwf = isl_pw_qpolynomial_fold_alloc(dom, fold);
+ pwf = isl_pw_qpolynomial_fold_alloc(data->type, dom, fold);
if (tight)
*tight = 1;
return isl_pw_qpolynomial_fold_drop_dims(pwf,
dim = isl_basic_set_get_dim(bset);
dim = isl_dim_drop(dim, isl_dim_set, 0, nvar);
- data->pwf = isl_pw_qpolynomial_fold_zero(isl_dim_copy(dim));
- data->pwf_tight = isl_pw_qpolynomial_fold_zero(dim);
+ data->pwf = isl_pw_qpolynomial_fold_zero(isl_dim_copy(dim), data->type);
+ data->pwf_tight = isl_pw_qpolynomial_fold_zero(dim, data->type);
data->poly = isl_qpolynomial_homogenize(isl_qpolynomial_copy(poly));
vertices = isl_basic_set_compute_vertices(bset);
isl_vertices_foreach_disjoint_cell(vertices,
return data->pwf_tight;
}
- data->pwf = isl_pw_qpolynomial_fold_add(data->pwf, data->pwf_tight);
+ data->pwf = isl_pw_qpolynomial_fold_fold(data->pwf, data->pwf_tight);
return data->pwf;
error:
pwf = bernstein_coefficients_base(bset, poly, &data, tp);
if (tight)
- bound->pwf_tight = isl_pw_qpolynomial_fold_add(bound->pwf_tight, pwf);
+ bound->pwf_tight = isl_pw_qpolynomial_fold_fold(bound->pwf_tight, pwf);
else
- bound->pwf = isl_pw_qpolynomial_fold_add(bound->pwf, pwf);
+ bound->pwf = isl_pw_qpolynomial_fold_fold(bound->pwf, pwf);
return 0;
error: