From: Sven Verdoolaege Date: Sun, 26 May 2013 17:06:16 +0000 (+0200) Subject: add isl_qpolynomial_val_on_domain X-Git-Tag: isl-0.12~75 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Fisl.git;a=commitdiff_plain;h=761e8797207a4953b2da4ddaf83b987b09fa366f add isl_qpolynomial_val_on_domain Signed-off-by: Sven Verdoolaege --- diff --git a/doc/user.pod b/doc/user.pod index 24735f8..a9cdc39 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -4596,6 +4596,9 @@ on the resulting quasipolynomials __isl_give isl_qpolynomial *isl_qpolynomial_rat_cst_on_domain( __isl_take isl_space *domain, const isl_int n, const isl_int d); + __isl_give isl_qpolynomial *isl_qpolynomial_val_on_domain( + __isl_take isl_space *domain, + __isl_take isl_val *val); __isl_give isl_qpolynomial *isl_qpolynomial_var_on_domain( __isl_take isl_space *domain, enum isl_dim_type type, unsigned pos); diff --git a/include/isl/polynomial.h b/include/isl/polynomial.h index 3dc08c4..e9aa59e 100644 --- a/include/isl/polynomial.h +++ b/include/isl/polynomial.h @@ -39,6 +39,8 @@ __isl_give isl_qpolynomial *isl_qpolynomial_neginfty_on_domain(__isl_take isl_sp __isl_give isl_qpolynomial *isl_qpolynomial_nan_on_domain(__isl_take isl_space *dim); __isl_give isl_qpolynomial *isl_qpolynomial_rat_cst_on_domain(__isl_take isl_space *dim, const isl_int n, const isl_int d); +__isl_give isl_qpolynomial *isl_qpolynomial_val_on_domain( + __isl_take isl_space *space, __isl_take isl_val *val); __isl_give isl_qpolynomial *isl_qpolynomial_var_on_domain(__isl_take isl_space *dim, enum isl_dim_type type, unsigned pos); __isl_give isl_qpolynomial *isl_qpolynomial_copy(__isl_keep isl_qpolynomial *qp); diff --git a/isl_polynomial.c b/isl_polynomial.c index 4e74e52..4aacfc8 100644 --- a/isl_polynomial.c +++ b/isl_polynomial.c @@ -2183,6 +2183,33 @@ __isl_give isl_qpolynomial *isl_qpolynomial_rat_cst_on_domain( return qp; } +/* Return an isl_qpolynomial that is equal to "val" on domain space "domain". + */ +__isl_give isl_qpolynomial *isl_qpolynomial_val_on_domain( + __isl_take isl_space *domain, __isl_take isl_val *val) +{ + isl_qpolynomial *qp; + struct isl_upoly_cst *cst; + + if (!domain || !val) + goto error; + + qp = isl_qpolynomial_alloc(domain, 0, isl_upoly_zero(domain->ctx)); + if (!qp) + goto error; + + cst = isl_upoly_as_cst(qp->upoly); + isl_int_set(cst->n, val->n); + isl_int_set(cst->d, val->d); + + isl_val_free(val); + return qp; +error: + isl_space_free(domain); + isl_val_free(val); + return NULL; +} + static int up_set_active(__isl_keep struct isl_upoly *up, int *active, int d) { struct isl_upoly_rec *rec;