isl_arg_parse: support ISL_ARG_BOOL_ARG flag
[platform/upstream/isl.git] / isl_polynomial_private.h
index efba8b1..10682b0 100644 (file)
@@ -1,9 +1,10 @@
 #include <stdio.h>
-#include <isl_div.h>
-#include <isl_map.h>
-#include <isl_mat.h>
+#include <isl/div.h>
+#include <isl/map.h>
+#include <isl/mat.h>
 #include <isl_morph.h>
-#include <isl_polynomial.h>
+#include <isl/polynomial.h>
+#include <isl_reordering.h>
 
 struct isl_upoly {
        int ref;
@@ -82,6 +83,7 @@ struct isl_pw_qpolynomial_fold_piece {
 struct isl_pw_qpolynomial_fold {
        int ref;
 
+       enum isl_fold type;
        struct isl_dim *dim;
 
        int n;
@@ -120,10 +122,14 @@ __isl_give isl_qpolynomial *isl_qpolynomial_pow(__isl_take isl_dim *dim,
        int pos, int power);
 __isl_give isl_qpolynomial *isl_qpolynomial_div_pow(__isl_take isl_div *div,
        int power);
-int isl_qpolynomial_is_zero(__isl_keep isl_qpolynomial *qp);
 int isl_qpolynomial_is_one(__isl_keep isl_qpolynomial *qp);
 int isl_qpolynomial_is_affine(__isl_keep isl_qpolynomial *qp);
 
+__isl_give isl_qpolynomial *isl_qpolynomial_add_on_domain(
+       __isl_keep isl_set *dom,
+       __isl_take isl_qpolynomial *qp1,
+       __isl_take isl_qpolynomial *qp2);
+
 int isl_qpolynomial_le_cst(__isl_keep isl_qpolynomial *qp1,
        __isl_keep isl_qpolynomial *qp2);
 __isl_give isl_qpolynomial *isl_qpolynomial_max_cst(
@@ -131,8 +137,15 @@ __isl_give isl_qpolynomial *isl_qpolynomial_max_cst(
 __isl_give isl_qpolynomial *isl_qpolynomial_min_cst(
        __isl_take isl_qpolynomial *qp1, __isl_take isl_qpolynomial *qp2);
 
+int isl_qpolynomial_degree(__isl_keep isl_qpolynomial *poly);
+__isl_give isl_qpolynomial *isl_qpolynomial_coeff(
+       __isl_keep isl_qpolynomial *poly,
+       enum isl_dim_type type, unsigned pos, int deg);
+
 __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_int *f, isl_int denom);
 
 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_cow(
        __isl_take isl_pw_qpolynomial *pwqp);
@@ -153,6 +166,15 @@ __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_dup(
 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_cow(
        __isl_take isl_pw_qpolynomial_fold *pwf);
 
+__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_add_on_domain(
+       __isl_keep isl_set *set,
+       __isl_take isl_qpolynomial_fold *fold1,
+       __isl_take isl_qpolynomial_fold *fold2);
+__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_fold_on_domain(
+       __isl_keep isl_set *set,
+       __isl_take isl_qpolynomial_fold *fold1,
+       __isl_take isl_qpolynomial_fold *fold2);
+
 __isl_give isl_qpolynomial *isl_qpolynomial_fold_opt_on_domain(
        __isl_take isl_qpolynomial_fold *fold, __isl_take isl_set *set, int max);
 
@@ -172,3 +194,21 @@ __isl_give isl_qpolynomial *isl_qpolynomial_lift(__isl_take isl_qpolynomial *qp,
        __isl_take isl_dim *dim);
 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_lift(
        __isl_take isl_qpolynomial_fold *fold, __isl_take isl_dim *dim);
+
+__isl_give isl_qpolynomial *isl_qpolynomial_substitute_equalities(
+       __isl_take isl_qpolynomial *qp, __isl_take isl_basic_set *eq);
+__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_substitute_equalities(
+       __isl_take isl_qpolynomial_fold *fold, __isl_take isl_basic_set *eq);
+__isl_give isl_qpolynomial *isl_qpolynomial_gist(
+       __isl_take isl_qpolynomial *qp, __isl_take isl_set *context);
+__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_take isl_qpolynomial *qp, __isl_take isl_reordering *r);
+__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_realign(
+       __isl_take isl_qpolynomial_fold *fold, __isl_take isl_reordering *r);
+__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_realign(
+       __isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_reordering *r);
+__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_realign(
+       __isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_reordering *r);