add isl_qpolynomial_val_on_domain
authorSven Verdoolaege <skimo@kotnet.org>
Sun, 26 May 2013 17:06:16 +0000 (19:06 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 28 May 2013 16:27:12 +0000 (18:27 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/polynomial.h
isl_polynomial.c

index 24735f8..a9cdc39 100644 (file)
@@ -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);
index 3dc08c4..e9aa59e 100644 (file)
@@ -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);
index 4e74e52..4aacfc8 100644 (file)
@@ -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;