From: Sven Verdoolaege Date: Tue, 20 Sep 2011 13:59:19 +0000 (+0200) Subject: isl_qpolynomial_morph: properly handle denominators in morph X-Git-Tag: isl-0.08~19^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=85c8918f345d1690c20ddc9f7a23fce63f50d846;p=platform%2Fupstream%2Fisl.git 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 --- 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);