From 8113984dd153adf8555b9be486e02fa6d238ebb6 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Mon, 24 May 2010 18:04:24 +0200 Subject: [PATCH] rename isl_pw_qpolynomial_move and add isl_pw_qpolynomial_fold_move_dims --- include/isl_polynomial.h | 12 +++++++++++- isl_fold.c | 32 ++++++++++++++++++++++++++++++++ isl_polynomial.c | 35 ----------------------------------- isl_pw_templ.c | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 36 deletions(-) diff --git a/include/isl_polynomial.h b/include/isl_polynomial.h index ae6cb017..a09b3c57 100644 --- a/include/isl_polynomial.h +++ b/include/isl_polynomial.h @@ -144,7 +144,7 @@ __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_mul( __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_add_dims( __isl_take isl_pw_qpolynomial *pwqp, enum isl_dim_type type, unsigned n); -__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_move( +__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_move_dims( __isl_take isl_pw_qpolynomial *pwqp, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n); @@ -203,6 +203,11 @@ __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_fold( __isl_take isl_qpolynomial_fold *fold1, __isl_take isl_qpolynomial_fold *fold2); +__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_move_dims( + __isl_take isl_qpolynomial_fold *fold, + enum isl_dim_type dst_type, unsigned dst_pos, + enum isl_dim_type src_type, unsigned src_pos, unsigned n); + __isl_give isl_qpolynomial *isl_qpolynomial_fold_eval( __isl_take isl_qpolynomial_fold *fold, __isl_take isl_point *pnt); @@ -245,6 +250,11 @@ __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_add_disjoint( __isl_take isl_pw_qpolynomial_fold *pwf1, __isl_take isl_pw_qpolynomial_fold *pwf2); +__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_move_dims( + __isl_take isl_pw_qpolynomial_fold *pwf, + enum isl_dim_type dst_type, unsigned dst_pos, + enum isl_dim_type src_type, unsigned src_pos, unsigned n); + __isl_give isl_qpolynomial *isl_pw_qpolynomial_fold_eval( __isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_point *pnt); diff --git a/isl_fold.c b/isl_fold.c index 99f5fa48..5d5caad1 100644 --- a/isl_fold.c +++ b/isl_fold.c @@ -755,3 +755,35 @@ error: isl_morph_free(morph); return NULL; } + +__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_move_dims( + __isl_take isl_qpolynomial_fold *fold, + enum isl_dim_type dst_type, unsigned dst_pos, + enum isl_dim_type src_type, unsigned src_pos, unsigned n) +{ + int i; + + if (n == 0) + return fold; + + fold = isl_qpolynomial_fold_cow(fold); + if (!fold) + return NULL; + + fold->dim = isl_dim_move(fold->dim, dst_type, dst_pos, + src_type, src_pos, n); + if (!fold->dim) + goto error; + + for (i = 0; i < fold->n; ++i) { + fold->qp[i] = isl_qpolynomial_move_dims(fold->qp[i], + dst_type, dst_pos, src_type, src_pos, n); + if (!fold->qp[i]) + goto error; + } + + return fold; +error: + isl_qpolynomial_fold_free(fold); + return NULL; +} diff --git a/isl_polynomial.c b/isl_polynomial.c index 74982c21..622dcd74 100644 --- a/isl_polynomial.c +++ b/isl_polynomial.c @@ -2222,41 +2222,6 @@ error: return NULL; } -__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_move( - __isl_take isl_pw_qpolynomial *pwqp, - enum isl_dim_type dst_type, unsigned dst_pos, - enum isl_dim_type src_type, unsigned src_pos, unsigned n) -{ - int i; - - pwqp = isl_pw_qpolynomial_cow(pwqp); - if (!pwqp) - return NULL; - - pwqp->dim = isl_dim_move(pwqp->dim, - dst_type, dst_pos, src_type, src_pos, n); - if (!pwqp->dim) - goto error; - - for (i = 0; i < pwqp->n; ++i) { - pwqp->p[i].set = isl_set_move_dims(pwqp->p[i].set, - dst_type, dst_pos, - src_type, src_pos, n); - if (!pwqp->p[i].set) - goto error; - pwqp->p[i].qp = isl_qpolynomial_move_dims(pwqp->p[i].qp, - dst_type, dst_pos, src_type, src_pos, n); - if (!pwqp->p[i].qp) - goto error; - } - - return pwqp; -error: - isl_pw_qpolynomial_free(pwqp); - return NULL; -} - - __isl_give struct isl_upoly *isl_upoly_from_affine(isl_ctx *ctx, isl_int *f, isl_int denom, unsigned len) { diff --git a/isl_pw_templ.c b/isl_pw_templ.c index 7f1af486..d470d6f5 100644 --- a/isl_pw_templ.c +++ b/isl_pw_templ.c @@ -591,3 +591,35 @@ error: isl_morph_free(morph); return NULL; } + +__isl_give PW *FN(PW,move_dims)(__isl_take PW *pw, + enum isl_dim_type dst_type, unsigned dst_pos, + enum isl_dim_type src_type, unsigned src_pos, unsigned n) +{ + int i; + + pw = FN(PW,cow)(pw); + if (!pw) + return NULL; + + pw->dim = isl_dim_move(pw->dim, dst_type, dst_pos, src_type, src_pos, n); + if (!pw->dim) + goto error; + + for (i = 0; i < pw->n; ++i) { + pw->p[i].set = isl_set_move_dims(pw->p[i].set, + dst_type, dst_pos, + src_type, src_pos, n); + if (!pw->p[i].set) + goto error; + pw->p[i].FIELD = FN(EL,move_dims)(pw->p[i].FIELD, + dst_type, dst_pos, src_type, src_pos, n); + if (!pw->p[i].FIELD) + goto error; + } + + return pw; +error: + FN(PW,free)(pw); + return NULL; +} -- 2.11.4.GIT