-/* Assumes each div only depends on earlier divs.
- */
-__isl_give isl_qpolynomial *isl_qpolynomial_div_pow(__isl_take isl_div *div,
- int power)
-{
- struct isl_qpolynomial *qp = NULL;
- struct isl_upoly_rec *rec;
- struct isl_upoly_cst *cst;
- int i, d;
- int pos;
-
- if (!div)
- return NULL;
-
- d = div->line - div->bmap->div;
-
- pos = isl_space_dim(div->bmap->dim, isl_dim_all) + d;
- rec = isl_upoly_alloc_rec(div->ctx, pos, 1 + power);
- qp = isl_qpolynomial_alloc(isl_basic_map_get_space(div->bmap),
- div->bmap->n_div, &rec->up);
- if (!qp)
- goto error;
-
- for (i = 0; i < div->bmap->n_div; ++i)
- isl_seq_cpy(qp->div->row[i], div->bmap->div[i], qp->div->n_col);
-
- for (i = 0; i < 1 + power; ++i) {
- rec->p[i] = isl_upoly_zero(div->ctx);
- if (!rec->p[i])
- goto error;
- rec->n++;
- }
- cst = isl_upoly_as_cst(rec->p[power]);
- isl_int_set_si(cst->n, 1);
-
- isl_div_free(div);
-
- qp = reduce_divs(qp);
-
- return qp;
-error:
- isl_qpolynomial_free(qp);
- isl_div_free(div);
- return NULL;
-}
-
-__isl_give isl_qpolynomial *isl_qpolynomial_div(__isl_take isl_div *div)
-{
- return isl_qpolynomial_div_pow(div, 1);
-}
-
-__isl_give isl_qpolynomial *isl_qpolynomial_rat_cst(__isl_take isl_space *dim,
- const isl_int n, const isl_int d)