From 85c8918f345d1690c20ddc9f7a23fce63f50d846 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Tue, 20 Sep 2011 15:59:19 +0200 Subject: [PATCH] isl_qpolynomial_morph: properly handle denominators in morph Before, the denominator would get ignored during the morphing of the divs. Signed-off-by: Sven Verdoolaege --- isl_polynomial.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/isl_polynomial.c b/isl_polynomial.c index 7e486a6..75908af 100644 --- a/isl_polynomial.c +++ b/isl_polynomial.c @@ -3741,7 +3741,7 @@ __isl_give isl_qpolynomial *isl_qpolynomial_morph(__isl_take isl_qpolynomial *qp 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) @@ -3771,8 +3771,10 @@ __isl_give isl_qpolynomial *isl_qpolynomial_morph(__isl_take isl_qpolynomial *qp 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_dim_free(qp->dim); qp->dim = isl_dim_copy(morph->ran->dim); -- 2.7.4