add isl_aff_mod_val
[platform/upstream/isl.git] / isl_polynomial_private.h
index 8f6a7b7..7370731 100644 (file)
@@ -1,5 +1,4 @@
 #include <stdio.h>
-#include <isl/div.h>
 #include <isl/map.h>
 #include <isl/mat.h>
 #include <isl_morph.h>
@@ -27,10 +26,12 @@ struct isl_upoly_rec {
        struct isl_upoly *p[];
 };
 
+/* dim represents the domain space.
+ */
 struct isl_qpolynomial {
        int ref;
 
-       struct isl_dim *dim;
+       isl_space *dim;
        struct isl_mat *div;
        struct isl_upoly *upoly;
 };
@@ -41,7 +42,7 @@ struct isl_term {
        isl_int n;
        isl_int d;
 
-       struct isl_dim *dim;
+       isl_space *dim;
        struct isl_mat *div;
 
        int pow[1];
@@ -55,7 +56,7 @@ struct isl_pw_qpolynomial_piece {
 struct isl_pw_qpolynomial {
        int ref;
 
-       struct isl_dim *dim;
+       isl_space *dim;
 
        int n;
 
@@ -63,11 +64,13 @@ struct isl_pw_qpolynomial {
        struct isl_pw_qpolynomial_piece p[1];
 };
 
+/* dim represents the domain space.
+ */
 struct isl_qpolynomial_fold {
        int ref;
 
        enum isl_fold type;
-       struct isl_dim *dim;
+       isl_space *dim;
 
        int n;
 
@@ -84,7 +87,7 @@ struct isl_pw_qpolynomial_fold {
        int ref;
 
        enum isl_fold type;
-       struct isl_dim *dim;
+       isl_space *dim;
 
        int n;
 
@@ -112,17 +115,15 @@ __isl_give struct isl_upoly *isl_upoly_sum(__isl_take struct isl_upoly *up1,
 __isl_give struct isl_upoly *isl_upoly_mul_isl_int(
        __isl_take struct isl_upoly *up, isl_int v);
 
-__isl_give isl_qpolynomial *isl_qpolynomial_alloc(__isl_take isl_dim *dim,
+__isl_give isl_qpolynomial *isl_qpolynomial_alloc(__isl_take isl_space *dim,
        unsigned n_div, __isl_take struct isl_upoly *up);
 __isl_give isl_qpolynomial *isl_qpolynomial_cow(__isl_take isl_qpolynomial *qp);
 __isl_give isl_qpolynomial *isl_qpolynomial_dup(__isl_keep isl_qpolynomial *qp);
 
-__isl_give isl_qpolynomial *isl_qpolynomial_cst(__isl_take isl_dim *dim,
+__isl_give isl_qpolynomial *isl_qpolynomial_cst_on_domain(__isl_take isl_space *dim,
        isl_int v);
-__isl_give isl_qpolynomial *isl_qpolynomial_var_pow(__isl_take isl_dim *dim,
+__isl_give isl_qpolynomial *isl_qpolynomial_var_pow_on_domain(__isl_take isl_space *dim,
        int pos, int power);
-__isl_give isl_qpolynomial *isl_qpolynomial_div_pow(__isl_take isl_div *div,
-       int power);
 int isl_qpolynomial_is_one(__isl_keep isl_qpolynomial *qp);
 int isl_qpolynomial_is_affine(__isl_keep isl_qpolynomial *qp);
 
@@ -145,7 +146,7 @@ __isl_give isl_qpolynomial *isl_qpolynomial_coeff(
 
 __isl_give isl_vec *isl_qpolynomial_extract_affine(
        __isl_keep isl_qpolynomial *qp);
-__isl_give isl_qpolynomial *isl_qpolynomial_from_affine(__isl_take isl_dim *dim,
+__isl_give isl_qpolynomial *isl_qpolynomial_from_affine(__isl_take isl_space *dim,
        isl_int *f, isl_int denom);
 
 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_cow(
@@ -156,6 +157,10 @@ __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_add_piece(
        __isl_take isl_set *set, __isl_take isl_qpolynomial *qp);
 int isl_pw_qpolynomial_is_one(__isl_keep isl_pw_qpolynomial *pwqp);
 
+__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_project_out(
+       __isl_take isl_pw_qpolynomial *pwqp,
+       enum isl_dim_type type, unsigned first, unsigned n);
+
 __isl_give isl_qpolynomial *isl_qpolynomial_opt_on_domain(
        __isl_take isl_qpolynomial *qp, __isl_take isl_set *set, int max);
 
@@ -184,19 +189,19 @@ __isl_give isl_qpolynomial *isl_qpolynomial_fold_opt_on_domain(
 int isl_pw_qpolynomial_fold_covers(__isl_keep isl_pw_qpolynomial_fold *pwf1,
        __isl_keep isl_pw_qpolynomial_fold *pwf2);
 
-__isl_give isl_qpolynomial *isl_qpolynomial_morph(__isl_take isl_qpolynomial *qp,
-       __isl_take isl_morph *morph);
-__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_morph(
+__isl_give isl_qpolynomial *isl_qpolynomial_morph_domain(
+       __isl_take isl_qpolynomial *qp, __isl_take isl_morph *morph);
+__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_morph_domain(
        __isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_morph *morph);
-__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_morph(
+__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_morph_domain(
        __isl_take isl_qpolynomial_fold *fold, __isl_take isl_morph *morph);
-__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_morph(
+__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_morph_domain(
        __isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_morph *morph);
 
 __isl_give isl_qpolynomial *isl_qpolynomial_lift(__isl_take isl_qpolynomial *qp,
-       __isl_take isl_dim *dim);
+       __isl_take isl_space *dim);
 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_lift(
-       __isl_take isl_qpolynomial_fold *fold, __isl_take isl_dim *dim);
+       __isl_take isl_qpolynomial_fold *fold, __isl_take isl_space *dim);
 
 __isl_give isl_qpolynomial *isl_qpolynomial_substitute_equalities(
        __isl_take isl_qpolynomial *qp, __isl_take isl_basic_set *eq);
@@ -205,11 +210,24 @@ __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_substitute_equalities(
 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_gist(
        __isl_take isl_qpolynomial_fold *fold, __isl_take isl_set *context);
 
-__isl_give isl_qpolynomial *isl_qpolynomial_realign(
+__isl_give isl_qpolynomial *isl_qpolynomial_realign_domain(
        __isl_take isl_qpolynomial *qp, __isl_take isl_reordering *r);
-__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_realign(
+__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_realign_domain(
        __isl_take isl_qpolynomial_fold *fold, __isl_take isl_reordering *r);
-__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_realign(
+__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_realign_domain(
        __isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_reordering *r);
-__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_realign(
+__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_realign_domain(
        __isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_reordering *r);
+
+__isl_give isl_qpolynomial *isl_qpolynomial_reset_domain_space(
+       __isl_take isl_qpolynomial *qp, __isl_take isl_space *dim);
+__isl_give isl_qpolynomial *isl_qpolynomial_reset_space_and_domain(
+       __isl_take isl_qpolynomial *qp, __isl_take isl_space *space,
+       __isl_take isl_space *domain);
+__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_reset_domain_space(
+       __isl_take isl_qpolynomial_fold *fold, __isl_take isl_space *dim);
+__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_reset_space_and_domain(
+       __isl_take isl_qpolynomial_fold *fold, __isl_take isl_space *space,
+       __isl_take isl_space *domain);
+__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_reset_domain_space(
+       __isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_space *dim);