return NULL;
}
+__isl_give isl_qpolynomial *isl_qpolynomial_gist_params(
+ __isl_take isl_qpolynomial *qp, __isl_take isl_set *context)
+{
+ isl_space *space = isl_qpolynomial_get_domain_space(qp);
+ isl_set *dom_context = isl_set_universe(space);
+ dom_context = isl_set_intersect_params(dom_context, context);
+ return isl_qpolynomial_gist(qp, dom_context);
+}
+
__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_from_qpolynomial(
__isl_take isl_qpolynomial *qp)
{
return isl_qpolynomial_is_one(pwqp->p[0].qp);
}
+__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_add(
+ __isl_take isl_pw_qpolynomial *pwqp1,
+ __isl_take isl_pw_qpolynomial *pwqp2)
+{
+ return isl_pw_qpolynomial_union_add_(pwqp1, pwqp2);
+}
+
__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_mul(
__isl_take isl_pw_qpolynomial *pwqp1,
__isl_take isl_pw_qpolynomial *pwqp2)
int n_sub;
isl_ctx *ctx;
struct isl_upoly **subs;
- isl_mat *mat;
+ isl_mat *mat, *diag;
qp = isl_qpolynomial_cow(qp);
if (!qp || !morph)
isl_upoly_free(subs[i]);
free(subs);
- mat = isl_mat_diagonal(isl_mat_identity(ctx, 1), isl_mat_copy(morph->inv));
- mat = isl_mat_diagonal(mat, isl_mat_identity(ctx, qp->div->n_row));
+ diag = isl_mat_diag(ctx, 1, morph->inv->row[0][0]);
+ mat = isl_mat_diagonal(diag, isl_mat_copy(morph->inv));
+ diag = isl_mat_diag(ctx, qp->div->n_row, morph->inv->row[0][0]);
+ mat = isl_mat_diagonal(mat, diag);
qp->div = isl_mat_product(qp->div, mat);
isl_space_free(qp->dim);
qp->dim = isl_space_copy(morph->ran->dim);