Home | History | Annotate | Download | only in isl
      1 #ifndef ISL_POLYNOMIAL_H
      2 #define ISL_POLYNOMIAL_H
      3 
      4 #include <isl/ctx.h>
      5 #include <isl/constraint.h>
      6 #include <isl/space.h>
      7 #include <isl/set_type.h>
      8 #include <isl/point.h>
      9 #include <isl/printer.h>
     10 #include <isl/union_set_type.h>
     11 #include <isl/aff_type.h>
     12 #include <isl/polynomial_type.h>
     13 
     14 #if defined(__cplusplus)
     15 extern "C" {
     16 #endif
     17 
     18 isl_ctx *isl_qpolynomial_get_ctx(__isl_keep isl_qpolynomial *qp);
     19 __isl_give isl_space *isl_qpolynomial_get_domain_space(
     20 	__isl_keep isl_qpolynomial *qp);
     21 __isl_give isl_space *isl_qpolynomial_get_space(__isl_keep isl_qpolynomial *qp);
     22 unsigned isl_qpolynomial_dim(__isl_keep isl_qpolynomial *qp,
     23 	enum isl_dim_type type);
     24 int isl_qpolynomial_involves_dims(__isl_keep isl_qpolynomial *qp,
     25 	enum isl_dim_type type, unsigned first, unsigned n);
     26 
     27 __isl_give isl_qpolynomial *isl_qpolynomial_set_dim_name(
     28 	__isl_take isl_qpolynomial *qp,
     29 	enum isl_dim_type type, unsigned pos, const char *s);
     30 
     31 __isl_give isl_qpolynomial *isl_qpolynomial_zero_on_domain(__isl_take isl_space *dim);
     32 __isl_give isl_qpolynomial *isl_qpolynomial_one_on_domain(__isl_take isl_space *dim);
     33 __isl_give isl_qpolynomial *isl_qpolynomial_infty_on_domain(__isl_take isl_space *dim);
     34 __isl_give isl_qpolynomial *isl_qpolynomial_neginfty_on_domain(__isl_take isl_space *dim);
     35 __isl_give isl_qpolynomial *isl_qpolynomial_nan_on_domain(__isl_take isl_space *dim);
     36 __isl_give isl_qpolynomial *isl_qpolynomial_rat_cst_on_domain(__isl_take isl_space *dim,
     37 	const isl_int n, const isl_int d);
     38 __isl_give isl_qpolynomial *isl_qpolynomial_var_on_domain(__isl_take isl_space *dim,
     39 	enum isl_dim_type type, unsigned pos);
     40 __isl_give isl_qpolynomial *isl_qpolynomial_copy(__isl_keep isl_qpolynomial *qp);
     41 void *isl_qpolynomial_free(__isl_take isl_qpolynomial *qp);
     42 
     43 int isl_qpolynomial_plain_is_equal(__isl_keep isl_qpolynomial *qp1,
     44 	__isl_keep isl_qpolynomial *qp2);
     45 int isl_qpolynomial_is_zero(__isl_keep isl_qpolynomial *qp);
     46 int isl_qpolynomial_is_nan(__isl_keep isl_qpolynomial *qp);
     47 int isl_qpolynomial_is_infty(__isl_keep isl_qpolynomial *qp);
     48 int isl_qpolynomial_is_neginfty(__isl_keep isl_qpolynomial *qp);
     49 int isl_qpolynomial_sgn(__isl_keep isl_qpolynomial *qp);
     50 int isl_qpolynomial_is_cst(__isl_keep isl_qpolynomial *qp,
     51 	isl_int *n, isl_int *d);
     52 void isl_qpolynomial_get_den(__isl_keep isl_qpolynomial *qp, isl_int *d);
     53 
     54 __isl_give isl_qpolynomial *isl_qpolynomial_neg(__isl_take isl_qpolynomial *qp);
     55 __isl_give isl_qpolynomial *isl_qpolynomial_add(__isl_take isl_qpolynomial *qp1,
     56 	__isl_take isl_qpolynomial *qp2);
     57 __isl_give isl_qpolynomial *isl_qpolynomial_sub(__isl_take isl_qpolynomial *qp1,
     58 	__isl_take isl_qpolynomial *qp2);
     59 __isl_give isl_qpolynomial *isl_qpolynomial_mul(__isl_take isl_qpolynomial *qp1,
     60 	__isl_take isl_qpolynomial *qp2);
     61 __isl_give isl_qpolynomial *isl_qpolynomial_pow(__isl_take isl_qpolynomial *qp,
     62 	unsigned power);
     63 __isl_give isl_qpolynomial *isl_qpolynomial_add_isl_int(
     64 	__isl_take isl_qpolynomial *qp, isl_int v);
     65 __isl_give isl_qpolynomial *isl_qpolynomial_mul_isl_int(
     66 	__isl_take isl_qpolynomial *qp, isl_int v);
     67 __isl_give isl_qpolynomial *isl_qpolynomial_scale(
     68 	__isl_take isl_qpolynomial *qp, isl_int v);
     69 
     70 __isl_give isl_qpolynomial *isl_qpolynomial_insert_dims(
     71 	__isl_take isl_qpolynomial *qp, enum isl_dim_type type,
     72 	unsigned first, unsigned n);
     73 __isl_give isl_qpolynomial *isl_qpolynomial_add_dims(
     74 	__isl_take isl_qpolynomial *qp, enum isl_dim_type type, unsigned n);
     75 __isl_give isl_qpolynomial *isl_qpolynomial_move_dims(
     76 	__isl_take isl_qpolynomial *qp,
     77 	enum isl_dim_type dst_type, unsigned dst_pos,
     78 	enum isl_dim_type src_type, unsigned src_pos, unsigned n);
     79 __isl_give isl_qpolynomial *isl_qpolynomial_project_domain_on_params(
     80 	__isl_take isl_qpolynomial *qp);
     81 __isl_give isl_qpolynomial *isl_qpolynomial_drop_dims(
     82 	__isl_take isl_qpolynomial *qp,
     83 	enum isl_dim_type type, unsigned first, unsigned n);
     84 
     85 __isl_give isl_qpolynomial *isl_qpolynomial_substitute(
     86 	__isl_take isl_qpolynomial *qp,
     87 	enum isl_dim_type type, unsigned first, unsigned n,
     88 	__isl_keep isl_qpolynomial **subs);
     89 
     90 int isl_qpolynomial_as_polynomial_on_domain(__isl_keep isl_qpolynomial *qp,
     91 	__isl_keep isl_basic_set *bset,
     92 	int (*fn)(__isl_take isl_basic_set *bset,
     93 		  __isl_take isl_qpolynomial *poly, void *user), void *user);
     94 
     95 __isl_give isl_qpolynomial *isl_qpolynomial_homogenize(
     96 	__isl_take isl_qpolynomial *poly);
     97 
     98 __isl_give isl_qpolynomial *isl_qpolynomial_align_params(
     99 	__isl_take isl_qpolynomial *qp, __isl_take isl_space *model);
    100 
    101 isl_ctx *isl_term_get_ctx(__isl_keep isl_term *term);
    102 
    103 __isl_give isl_term *isl_term_copy(__isl_keep isl_term *term);
    104 void isl_term_free(__isl_take isl_term *term);
    105 
    106 unsigned isl_term_dim(__isl_keep isl_term *term, enum isl_dim_type type);
    107 void isl_term_get_num(__isl_keep isl_term *term, isl_int *n);
    108 void isl_term_get_den(__isl_keep isl_term *term, isl_int *d);
    109 int isl_term_get_exp(__isl_keep isl_term *term,
    110 	enum isl_dim_type type, unsigned pos);
    111 __isl_give isl_aff *isl_term_get_div(__isl_keep isl_term *term, unsigned pos);
    112 
    113 int isl_qpolynomial_foreach_term(__isl_keep isl_qpolynomial *qp,
    114 	int (*fn)(__isl_take isl_term *term, void *user), void *user);
    115 
    116 __isl_give isl_qpolynomial *isl_qpolynomial_eval(
    117 	__isl_take isl_qpolynomial *qp, __isl_take isl_point *pnt);
    118 
    119 __isl_give isl_qpolynomial *isl_qpolynomial_gist_params(
    120 	__isl_take isl_qpolynomial *qp, __isl_take isl_set *context);
    121 __isl_give isl_qpolynomial *isl_qpolynomial_gist(
    122 	__isl_take isl_qpolynomial *qp, __isl_take isl_set *context);
    123 
    124 __isl_give isl_qpolynomial *isl_qpolynomial_from_constraint(
    125 	__isl_take isl_constraint *c, enum isl_dim_type type, unsigned pos);
    126 __isl_give isl_qpolynomial *isl_qpolynomial_from_term(__isl_take isl_term *term);
    127 __isl_give isl_qpolynomial *isl_qpolynomial_from_aff(__isl_take isl_aff *aff);
    128 __isl_give isl_basic_map *isl_basic_map_from_qpolynomial(
    129 	__isl_take isl_qpolynomial *qp);
    130 
    131 __isl_give isl_printer *isl_printer_print_qpolynomial(
    132 	__isl_take isl_printer *p, __isl_keep isl_qpolynomial *qp);
    133 void isl_qpolynomial_print(__isl_keep isl_qpolynomial *qp, FILE *out,
    134 	unsigned output_format);
    135 void isl_qpolynomial_dump(__isl_keep isl_qpolynomial *qp);
    136 
    137 isl_ctx *isl_pw_qpolynomial_get_ctx(__isl_keep isl_pw_qpolynomial *pwqp);
    138 
    139 int isl_pw_qpolynomial_plain_is_equal(__isl_keep isl_pw_qpolynomial *pwqp1,
    140 	__isl_keep isl_pw_qpolynomial *pwqp2);
    141 
    142 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_zero(__isl_take isl_space *dim);
    143 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_alloc(__isl_take isl_set *set,
    144 	__isl_take isl_qpolynomial *qp);
    145 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_from_qpolynomial(
    146 	__isl_take isl_qpolynomial *qp);
    147 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_copy(
    148 	__isl_keep isl_pw_qpolynomial *pwqp);
    149 void *isl_pw_qpolynomial_free(__isl_take isl_pw_qpolynomial *pwqp);
    150 
    151 int isl_pw_qpolynomial_is_zero(__isl_keep isl_pw_qpolynomial *pwqp);
    152 
    153 __isl_give isl_space *isl_pw_qpolynomial_get_domain_space(
    154 	__isl_keep isl_pw_qpolynomial *pwqp);
    155 __isl_give isl_space *isl_pw_qpolynomial_get_space(
    156 	__isl_keep isl_pw_qpolynomial *pwqp);
    157 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_reset_domain_space(
    158 	__isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_space *dim);
    159 unsigned isl_pw_qpolynomial_dim(__isl_keep isl_pw_qpolynomial *pwqp,
    160 	enum isl_dim_type type);
    161 int isl_pw_qpolynomial_involves_dims(__isl_keep isl_pw_qpolynomial *pwqp,
    162 	enum isl_dim_type type, unsigned first, unsigned n);
    163 int isl_pw_qpolynomial_has_equal_space(__isl_keep isl_pw_qpolynomial *pwqp1,
    164 	__isl_keep isl_pw_qpolynomial *pwqp2);
    165 
    166 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_set_dim_name(
    167 	__isl_take isl_pw_qpolynomial *pwqp,
    168 	enum isl_dim_type type, unsigned pos, const char *s);
    169 
    170 __isl_give isl_set *isl_pw_qpolynomial_domain(__isl_take isl_pw_qpolynomial *pwqp);
    171 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_intersect_domain(
    172 	__isl_take isl_pw_qpolynomial *pwpq, __isl_take isl_set *set);
    173 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_intersect_params(
    174 	__isl_take isl_pw_qpolynomial *pwpq, __isl_take isl_set *set);
    175 
    176 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_project_domain_on_params(
    177 	__isl_take isl_pw_qpolynomial *pwqp);
    178 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_drop_dims(
    179 	__isl_take isl_pw_qpolynomial *pwqp,
    180 	enum isl_dim_type type, unsigned first, unsigned n);
    181 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_split_dims(
    182 	__isl_take isl_pw_qpolynomial *pwqp,
    183 	enum isl_dim_type type, unsigned first, unsigned n);
    184 
    185 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_add(
    186 	__isl_take isl_pw_qpolynomial *pwqp1,
    187 	__isl_take isl_pw_qpolynomial *pwqp2);
    188 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_sub(
    189 	__isl_take isl_pw_qpolynomial *pwqp1,
    190 	__isl_take isl_pw_qpolynomial *pwqp2);
    191 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_add_disjoint(
    192 	__isl_take isl_pw_qpolynomial *pwqp1,
    193 	__isl_take isl_pw_qpolynomial *pwqp2);
    194 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_neg(
    195 	__isl_take isl_pw_qpolynomial *pwqp);
    196 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_mul(
    197 	__isl_take isl_pw_qpolynomial *pwqp1,
    198 	__isl_take isl_pw_qpolynomial *pwqp2);
    199 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_mul_isl_int(
    200 	__isl_take isl_pw_qpolynomial *pwqp, isl_int v);
    201 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_pow(
    202 	__isl_take isl_pw_qpolynomial *pwqp, unsigned exponent);
    203 
    204 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_insert_dims(
    205 	__isl_take isl_pw_qpolynomial *pwqp, enum isl_dim_type type,
    206 	unsigned first, unsigned n);
    207 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_add_dims(
    208 	__isl_take isl_pw_qpolynomial *pwqp,
    209 	enum isl_dim_type type, unsigned n);
    210 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_move_dims(
    211 	__isl_take isl_pw_qpolynomial *pwqp,
    212 	enum isl_dim_type dst_type, unsigned dst_pos,
    213 	enum isl_dim_type src_type, unsigned src_pos, unsigned n);
    214 
    215 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_fix_dim(
    216 	__isl_take isl_pw_qpolynomial *pwqp,
    217 	enum isl_dim_type type, unsigned n, isl_int v);
    218 
    219 __isl_give isl_qpolynomial *isl_pw_qpolynomial_eval(
    220 	__isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_point *pnt);
    221 
    222 __isl_give isl_qpolynomial *isl_pw_qpolynomial_max(
    223 	__isl_take isl_pw_qpolynomial *pwqp);
    224 __isl_give isl_qpolynomial *isl_pw_qpolynomial_min(
    225 	__isl_take isl_pw_qpolynomial *pwqp);
    226 
    227 int isl_pw_qpolynomial_foreach_piece(__isl_keep isl_pw_qpolynomial *pwqp,
    228 	int (*fn)(__isl_take isl_set *set, __isl_take isl_qpolynomial *qp,
    229 		    void *user), void *user);
    230 int isl_pw_qpolynomial_foreach_lifted_piece(__isl_keep isl_pw_qpolynomial *pwqp,
    231 	int (*fn)(__isl_take isl_set *set, __isl_take isl_qpolynomial *qp,
    232 		    void *user), void *user);
    233 
    234 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_from_pw_aff(
    235 	__isl_take isl_pw_aff *pwaff);
    236 
    237 __isl_constructor
    238 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_read_from_str(isl_ctx *ctx,
    239 		const char *str);
    240 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_read_from_file(isl_ctx *ctx,
    241 		FILE *input);
    242 __isl_give isl_printer *isl_printer_print_pw_qpolynomial(
    243 	__isl_take isl_printer *p, __isl_keep isl_pw_qpolynomial *pwqp);
    244 void isl_pw_qpolynomial_print(__isl_keep isl_pw_qpolynomial *pwqp, FILE *out,
    245 	unsigned output_format);
    246 void isl_pw_qpolynomial_dump(__isl_keep isl_pw_qpolynomial *pwqp);
    247 
    248 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_coalesce(
    249 	__isl_take isl_pw_qpolynomial *pwqp);
    250 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_gist(
    251 	__isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_set *context);
    252 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_gist_params(
    253 	__isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_set *context);
    254 
    255 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_split_periods(
    256 	__isl_take isl_pw_qpolynomial *pwqp, int max_periods);
    257 
    258 __isl_give isl_pw_qpolynomial *isl_basic_set_multiplicative_call(
    259 	__isl_take isl_basic_set *bset,
    260 	__isl_give isl_pw_qpolynomial *(*fn)(__isl_take isl_basic_set *bset));
    261 
    262 isl_ctx *isl_qpolynomial_fold_get_ctx(__isl_keep isl_qpolynomial_fold *fold);
    263 enum isl_fold isl_qpolynomial_fold_get_type(__isl_keep isl_qpolynomial_fold *fold);
    264 
    265 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_empty(enum isl_fold type,
    266 	__isl_take isl_space *dim);
    267 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_alloc(
    268 	enum isl_fold type, __isl_take isl_qpolynomial *qp);
    269 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_copy(
    270 	__isl_keep isl_qpolynomial_fold *fold);
    271 void isl_qpolynomial_fold_free(__isl_take isl_qpolynomial_fold *fold);
    272 
    273 int isl_qpolynomial_fold_is_empty(__isl_keep isl_qpolynomial_fold *fold);
    274 int isl_qpolynomial_fold_plain_is_equal(__isl_keep isl_qpolynomial_fold *fold1,
    275 	__isl_keep isl_qpolynomial_fold *fold2);
    276 
    277 __isl_give isl_space *isl_qpolynomial_fold_get_space(
    278 	__isl_keep isl_qpolynomial_fold *fold);
    279 
    280 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_fold(
    281 	__isl_take isl_qpolynomial_fold *fold1,
    282 	__isl_take isl_qpolynomial_fold *fold2);
    283 
    284 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_mul_isl_int(
    285 	__isl_take isl_qpolynomial_fold *fold, isl_int v);
    286 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_scale(
    287 	__isl_take isl_qpolynomial_fold *fold, isl_int v);
    288 
    289 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_move_dims(
    290 	__isl_take isl_qpolynomial_fold *fold,
    291 	enum isl_dim_type dst_type, unsigned dst_pos,
    292 	enum isl_dim_type src_type, unsigned src_pos, unsigned n);
    293 
    294 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_substitute(
    295 	__isl_take isl_qpolynomial_fold *fold,
    296 	enum isl_dim_type type, unsigned first, unsigned n,
    297 	__isl_keep isl_qpolynomial **subs);
    298 
    299 __isl_give isl_qpolynomial *isl_qpolynomial_fold_eval(
    300 	__isl_take isl_qpolynomial_fold *fold, __isl_take isl_point *pnt);
    301 
    302 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_gist_params(
    303 	__isl_take isl_qpolynomial_fold *fold, __isl_take isl_set *context);
    304 __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_gist(
    305 	__isl_take isl_qpolynomial_fold *fold, __isl_take isl_set *context);
    306 
    307 int isl_qpolynomial_fold_foreach_qpolynomial(
    308 	__isl_keep isl_qpolynomial_fold *fold,
    309 	int (*fn)(__isl_take isl_qpolynomial *qp, void *user), void *user);
    310 
    311 __isl_give isl_printer *isl_printer_print_qpolynomial_fold(
    312 	__isl_take isl_printer *p, __isl_keep isl_qpolynomial_fold *fold);
    313 void isl_qpolynomial_fold_print(__isl_keep isl_qpolynomial_fold *fold, FILE *out,
    314 	unsigned output_format);
    315 void isl_qpolynomial_fold_dump(__isl_keep isl_qpolynomial_fold *fold);
    316 
    317 isl_ctx *isl_pw_qpolynomial_fold_get_ctx(__isl_keep isl_pw_qpolynomial_fold *pwf);
    318 
    319 int isl_pw_qpolynomial_fold_plain_is_equal(
    320 	__isl_keep isl_pw_qpolynomial_fold *pwf1,
    321 	__isl_keep isl_pw_qpolynomial_fold *pwf2);
    322 
    323 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_from_pw_qpolynomial(
    324 	enum isl_fold type, __isl_take isl_pw_qpolynomial *pwqp);
    325 
    326 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_alloc(
    327 	enum isl_fold type,
    328 	__isl_take isl_set *set, __isl_take isl_qpolynomial_fold *fold);
    329 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_copy(
    330 	__isl_keep isl_pw_qpolynomial_fold *pwf);
    331 void *isl_pw_qpolynomial_fold_free(__isl_take isl_pw_qpolynomial_fold *pwf);
    332 
    333 int isl_pw_qpolynomial_fold_is_zero(__isl_keep isl_pw_qpolynomial_fold *pwf);
    334 
    335 __isl_give isl_space *isl_pw_qpolynomial_fold_get_domain_space(
    336 	__isl_keep isl_pw_qpolynomial_fold *pwf);
    337 __isl_give isl_space *isl_pw_qpolynomial_fold_get_space(
    338 	__isl_keep isl_pw_qpolynomial_fold *pwf);
    339 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_reset_space(
    340 	__isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_space *dim);
    341 unsigned isl_pw_qpolynomial_fold_dim(__isl_keep isl_pw_qpolynomial_fold *pwf,
    342 	enum isl_dim_type type);
    343 int isl_pw_qpolynomial_fold_has_equal_space(
    344 	__isl_keep isl_pw_qpolynomial_fold *pwf1,
    345 	__isl_keep isl_pw_qpolynomial_fold *pwf2);
    346 
    347 size_t isl_pw_qpolynomial_fold_size(__isl_keep isl_pw_qpolynomial_fold *pwf);
    348 
    349 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_zero(
    350 	__isl_take isl_space *dim, enum isl_fold type);
    351 
    352 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_set_dim_name(
    353 	__isl_take isl_pw_qpolynomial_fold *pwf,
    354 	enum isl_dim_type type, unsigned pos, const char *s);
    355 
    356 __isl_give isl_set *isl_pw_qpolynomial_fold_domain(
    357 	__isl_take isl_pw_qpolynomial_fold *pwf);
    358 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_intersect_domain(
    359 	__isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_set *set);
    360 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_intersect_params(
    361 	__isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_set *set);
    362 
    363 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_add(
    364 	__isl_take isl_pw_qpolynomial_fold *pwf1,
    365 	__isl_take isl_pw_qpolynomial_fold *pwf2);
    366 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_fold(
    367 	__isl_take isl_pw_qpolynomial_fold *pwf1,
    368 	__isl_take isl_pw_qpolynomial_fold *pwf2);
    369 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_add_disjoint(
    370 	__isl_take isl_pw_qpolynomial_fold *pwf1,
    371 	__isl_take isl_pw_qpolynomial_fold *pwf2);
    372 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_mul_isl_int(
    373 	__isl_take isl_pw_qpolynomial_fold *pwf, isl_int v);
    374 
    375 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_project_domain_on_params(
    376 	__isl_take isl_pw_qpolynomial_fold *pwf);
    377 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_drop_dims(
    378 	__isl_take isl_pw_qpolynomial_fold *pwf,
    379 	enum isl_dim_type type, unsigned first, unsigned n);
    380 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_move_dims(
    381 	__isl_take isl_pw_qpolynomial_fold *pwf,
    382 	enum isl_dim_type dst_type, unsigned dst_pos,
    383 	enum isl_dim_type src_type, unsigned src_pos, unsigned n);
    384 
    385 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_fix_dim(
    386 	__isl_take isl_pw_qpolynomial_fold *pwf,
    387 	enum isl_dim_type type, unsigned n, isl_int v);
    388 
    389 __isl_give isl_qpolynomial *isl_pw_qpolynomial_fold_eval(
    390 	__isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_point *pnt);
    391 
    392 int isl_pw_qpolynomial_fold_foreach_piece(
    393 	__isl_keep isl_pw_qpolynomial_fold *pwf,
    394 	int (*fn)(__isl_take isl_set *set, __isl_take isl_qpolynomial_fold *fold,
    395 		    void *user), void *user);
    396 int isl_pw_qpolynomial_fold_foreach_lifted_piece(
    397 	__isl_keep isl_pw_qpolynomial_fold *pwf,
    398 	int (*fn)(__isl_take isl_set *set, __isl_take isl_qpolynomial_fold *fold,
    399 		    void *user), void *user);
    400 
    401 __isl_give isl_printer *isl_printer_print_pw_qpolynomial_fold(
    402 	__isl_take isl_printer *p, __isl_keep isl_pw_qpolynomial_fold *pwf);
    403 void isl_pw_qpolynomial_fold_print(__isl_keep isl_pw_qpolynomial_fold *pwf,
    404 	FILE *out, unsigned output_format);
    405 void isl_pw_qpolynomial_fold_dump(__isl_keep isl_pw_qpolynomial_fold *pwf);
    406 
    407 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_coalesce(
    408 	__isl_take isl_pw_qpolynomial_fold *pwf);
    409 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_gist(
    410 	__isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_set *context);
    411 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_gist_params(
    412 	__isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_set *context);
    413 
    414 __isl_give isl_qpolynomial *isl_pw_qpolynomial_fold_max(
    415 	__isl_take isl_pw_qpolynomial_fold *pwf);
    416 __isl_give isl_qpolynomial *isl_pw_qpolynomial_fold_min(
    417 	__isl_take isl_pw_qpolynomial_fold *pwf);
    418 
    419 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_bound(
    420 	__isl_take isl_pw_qpolynomial *pwqp, enum isl_fold type, int *tight);
    421 __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_bound(
    422 	__isl_take isl_pw_qpolynomial_fold *pwf, int *tight);
    423 __isl_give isl_pw_qpolynomial_fold *isl_set_apply_pw_qpolynomial_fold(
    424 	__isl_take isl_set *set, __isl_take isl_pw_qpolynomial_fold *pwf,
    425 	int *tight);
    426 __isl_give isl_pw_qpolynomial_fold *isl_map_apply_pw_qpolynomial_fold(
    427 	__isl_take isl_map *map, __isl_take isl_pw_qpolynomial_fold *pwf,
    428 	int *tight);
    429 
    430 __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_to_polynomial(
    431 	__isl_take isl_pw_qpolynomial *pwqp, int sign);
    432 
    433 isl_ctx *isl_union_pw_qpolynomial_get_ctx(
    434 	__isl_keep isl_union_pw_qpolynomial *upwqp);
    435 
    436 int isl_union_pw_qpolynomial_plain_is_equal(
    437 	__isl_keep isl_union_pw_qpolynomial *upwqp1,
    438 	__isl_keep isl_union_pw_qpolynomial *upwqp2);
    439 
    440 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_from_pw_qpolynomial(__isl_take isl_pw_qpolynomial *pwqp);
    441 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_zero(
    442 	__isl_take isl_space *dim);
    443 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_add_pw_qpolynomial(
    444 	__isl_take isl_union_pw_qpolynomial *upwqp,
    445 	__isl_take isl_pw_qpolynomial *pwqp);
    446 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_copy(
    447 	__isl_keep isl_union_pw_qpolynomial *upwqp);
    448 void *isl_union_pw_qpolynomial_free(__isl_take isl_union_pw_qpolynomial *upwqp);
    449 
    450 __isl_constructor
    451 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_read_from_str(
    452 	isl_ctx *ctx, const char *str);
    453 
    454 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_add(
    455 	__isl_take isl_union_pw_qpolynomial *upwqp1,
    456 	__isl_take isl_union_pw_qpolynomial *upwqp2);
    457 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_sub(
    458 	__isl_take isl_union_pw_qpolynomial *upwqp1,
    459 	__isl_take isl_union_pw_qpolynomial *upwqp2);
    460 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_mul(
    461 	__isl_take isl_union_pw_qpolynomial *upwqp1,
    462 	__isl_take isl_union_pw_qpolynomial *upwqp2);
    463 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_mul_isl_int(
    464 	__isl_take isl_union_pw_qpolynomial *upwqp, isl_int v);
    465 
    466 __isl_give isl_union_set *isl_union_pw_qpolynomial_domain(
    467 	__isl_take isl_union_pw_qpolynomial *upwqp);
    468 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_intersect_domain(
    469 	__isl_take isl_union_pw_qpolynomial *upwpq,
    470 	__isl_take isl_union_set *uset);
    471 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_intersect_params(
    472 	__isl_take isl_union_pw_qpolynomial *upwpq,
    473 	__isl_take isl_set *set);
    474 
    475 __isl_give isl_space *isl_union_pw_qpolynomial_get_space(
    476 	__isl_keep isl_union_pw_qpolynomial *upwqp);
    477 
    478 __isl_give isl_qpolynomial *isl_union_pw_qpolynomial_eval(
    479 	__isl_take isl_union_pw_qpolynomial *upwqp, __isl_take isl_point *pnt);
    480 
    481 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_coalesce(
    482 	__isl_take isl_union_pw_qpolynomial *upwqp);
    483 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_gist(
    484 	__isl_take isl_union_pw_qpolynomial *upwqp,
    485 	__isl_take isl_union_set *context);
    486 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_gist_params(
    487 	__isl_take isl_union_pw_qpolynomial *upwqp,
    488 	__isl_take isl_set *context);
    489 
    490 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_align_params(
    491 	__isl_take isl_union_pw_qpolynomial *upwqp,
    492 	__isl_take isl_space *model);
    493 
    494 int isl_union_pw_qpolynomial_foreach_pw_qpolynomial(
    495 	__isl_keep isl_union_pw_qpolynomial *upwqp,
    496 	int (*fn)(__isl_take isl_pw_qpolynomial *pwqp, void *user), void *user);
    497 __isl_give isl_pw_qpolynomial *isl_union_pw_qpolynomial_extract_pw_qpolynomial(
    498 	__isl_keep isl_union_pw_qpolynomial *upwqp, __isl_take isl_space *dim);
    499 
    500 __isl_give isl_printer *isl_printer_print_union_pw_qpolynomial(
    501 	__isl_take isl_printer *p, __isl_keep isl_union_pw_qpolynomial *upwqp);
    502 
    503 isl_ctx *isl_union_pw_qpolynomial_fold_get_ctx(
    504 	__isl_keep isl_union_pw_qpolynomial_fold *upwf);
    505 
    506 int isl_union_pw_qpolynomial_fold_plain_is_equal(
    507 	__isl_keep isl_union_pw_qpolynomial_fold *upwf1,
    508 	__isl_keep isl_union_pw_qpolynomial_fold *upwf2);
    509 
    510 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_from_pw_qpolynomial_fold(__isl_take isl_pw_qpolynomial_fold *pwf);
    511 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_zero(
    512 	__isl_take isl_space *dim, enum isl_fold type);
    513 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_fold_pw_qpolynomial_fold(
    514 	__isl_take isl_union_pw_qpolynomial_fold *upwqp,
    515 	__isl_take isl_pw_qpolynomial_fold *pwqp);
    516 void *isl_union_pw_qpolynomial_fold_free(
    517 	__isl_take isl_union_pw_qpolynomial_fold *upwf);
    518 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_copy(
    519 	__isl_keep isl_union_pw_qpolynomial_fold *upwf);
    520 
    521 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_fold(
    522 	__isl_take isl_union_pw_qpolynomial_fold *upwf1,
    523 	__isl_take isl_union_pw_qpolynomial_fold *upwf2);
    524 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_add_union_pw_qpolynomial(
    525 	__isl_take isl_union_pw_qpolynomial_fold *upwf,
    526 	__isl_take isl_union_pw_qpolynomial *upwqp);
    527 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_mul_isl_int(
    528 	__isl_take isl_union_pw_qpolynomial_fold *upwf, isl_int v);
    529 
    530 __isl_give isl_union_set *isl_union_pw_qpolynomial_fold_domain(
    531 	__isl_take isl_union_pw_qpolynomial_fold *upwf);
    532 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_intersect_domain(
    533 	__isl_take isl_union_pw_qpolynomial_fold *upwf,
    534 	__isl_take isl_union_set *uset);
    535 __isl_give isl_union_pw_qpolynomial_fold *
    536 isl_union_pw_qpolynomial_fold_intersect_params(
    537 	__isl_take isl_union_pw_qpolynomial_fold *upwf,
    538 	__isl_take isl_set *set);
    539 
    540 enum isl_fold isl_union_pw_qpolynomial_fold_get_type(
    541 	__isl_keep isl_union_pw_qpolynomial_fold *upwf);
    542 __isl_give isl_space *isl_union_pw_qpolynomial_fold_get_space(
    543 	__isl_keep isl_union_pw_qpolynomial_fold *upwf);
    544 
    545 __isl_give isl_qpolynomial *isl_union_pw_qpolynomial_fold_eval(
    546 	__isl_take isl_union_pw_qpolynomial_fold *upwf,
    547 	__isl_take isl_point *pnt);
    548 
    549 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_coalesce(
    550 	__isl_take isl_union_pw_qpolynomial_fold *upwf);
    551 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_gist(
    552 	__isl_take isl_union_pw_qpolynomial_fold *upwf,
    553 	__isl_take isl_union_set *context);
    554 __isl_give isl_union_pw_qpolynomial_fold *
    555 isl_union_pw_qpolynomial_fold_gist_params(
    556 	__isl_take isl_union_pw_qpolynomial_fold *upwf,
    557 	__isl_take isl_set *context);
    558 
    559 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_align_params(
    560 	__isl_take isl_union_pw_qpolynomial_fold *upwf,
    561 	__isl_take isl_space *model);
    562 
    563 int isl_union_pw_qpolynomial_fold_foreach_pw_qpolynomial_fold(
    564 	__isl_keep isl_union_pw_qpolynomial_fold *upwf,
    565 	int (*fn)(__isl_take isl_pw_qpolynomial_fold *pwf,
    566 		    void *user), void *user);
    567 __isl_give isl_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_extract_pw_qpolynomial_fold(
    568 	__isl_keep isl_union_pw_qpolynomial_fold *upwf, __isl_take isl_space *dim);
    569 
    570 __isl_give isl_printer *isl_printer_print_union_pw_qpolynomial_fold(
    571 	__isl_take isl_printer *p,
    572 	__isl_keep isl_union_pw_qpolynomial_fold *upwf);
    573 
    574 __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_bound(
    575 	__isl_take isl_union_pw_qpolynomial *upwqp,
    576 	enum isl_fold type, int *tight);
    577 __isl_give isl_union_pw_qpolynomial_fold *isl_union_set_apply_union_pw_qpolynomial_fold(
    578 	__isl_take isl_union_set *uset,
    579 	__isl_take isl_union_pw_qpolynomial_fold *upwf, int *tight);
    580 __isl_give isl_union_pw_qpolynomial_fold *isl_union_map_apply_union_pw_qpolynomial_fold(
    581 	__isl_take isl_union_map *umap,
    582 	__isl_take isl_union_pw_qpolynomial_fold *upwf, int *tight);
    583 
    584 __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_to_polynomial(
    585 	__isl_take isl_union_pw_qpolynomial *upwqp, int sign);
    586 
    587 #if defined(__cplusplus)
    588 }
    589 #endif
    590 
    591 #include <isl/dim.h>
    592 
    593 #endif
    594