add isl_pw_qpolynomial_pow
authorSven Verdoolaege <skimo@kotnet.org>
Mon, 25 Jul 2011 07:00:14 +0000 (09:00 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Thu, 28 Jul 2011 14:44:21 +0000 (16:44 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/polynomial.h
isl_polynomial.c

index 96020d2..96107d1 100644 (file)
@@ -2959,6 +2959,8 @@ are returned in C<*n> and C<*d>, respectively.
        __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_mul(
                __isl_take isl_pw_qpolynomial *pwqp1,
                __isl_take isl_pw_qpolynomial *pwqp2);
+       __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_pow(
+               __isl_take isl_pw_qpolynomial *pwqp, unsigned exponent);
 
        __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_add(
                __isl_take isl_union_pw_qpolynomial *upwqp1,
index bcd5b45..efefe74 100644 (file)
@@ -195,6 +195,8 @@ __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_mul(
        __isl_take isl_pw_qpolynomial *pwqp2);
 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_mul_isl_int(
        __isl_take isl_pw_qpolynomial *pwqp, isl_int v);
+__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_pow(
+       __isl_take isl_pw_qpolynomial *pwqp, unsigned exponent);
 
 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_insert_dims(
        __isl_take isl_pw_qpolynomial *pwqp, enum isl_dim_type type,
index b566902..5a78619 100644 (file)
@@ -1471,6 +1471,27 @@ error:
        return NULL;
 }
 
+__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_pow(
+       __isl_take isl_pw_qpolynomial *pwqp, unsigned power)
+{
+       int i;
+
+       if (power == 1)
+               return pwqp;
+
+       pwqp = isl_pw_qpolynomial_cow(pwqp);
+       if (!pwqp)
+               return NULL;
+
+       for (i = 0; i < pwqp->n; ++i) {
+               pwqp->p[i].qp = isl_qpolynomial_pow(pwqp->p[i].qp, power);
+               if (!pwqp->p[i].qp)
+                       return isl_pw_qpolynomial_free(pwqp);
+       }
+
+       return pwqp;
+}
+
 __isl_give isl_qpolynomial *isl_qpolynomial_zero(__isl_take isl_dim *dim)
 {
        if (!dim)