1 #ifndef ISL_AFF_H
2 #define ISL_AFF_H
3 
4 #include <isl/stdint.h>
5 #include <isl/local_space.h>
6 #include <isl/printer.h>
7 #include <isl/id_type.h>
8 #include <isl/set_type.h>
9 #include <isl/aff_type.h>
10 #include <isl/list.h>
11 #include <isl/multi.h>
12 #include <isl/union_set_type.h>
13 #include <isl/val_type.h>
14 #include <isl/point.h>
15 
16 #if defined(__cplusplus)
17 extern "C" {
18 #endif
19 
20 __isl_overload
21 __isl_give isl_aff *isl_aff_zero_on_domain_space(__isl_take isl_space *space);
22 __isl_give isl_aff *isl_aff_zero_on_domain(__isl_take isl_local_space *ls);
23 __isl_give isl_aff *isl_aff_val_on_domain_space(__isl_take isl_space *space,
24 	__isl_take isl_val *val);
25 __isl_give isl_aff *isl_aff_val_on_domain(__isl_take isl_local_space *ls,
26 	__isl_take isl_val *val);
27 __isl_give isl_aff *isl_aff_var_on_domain(__isl_take isl_local_space *ls,
28 	enum isl_dim_type type, unsigned pos);
29 __isl_give isl_aff *isl_aff_nan_on_domain(__isl_take isl_local_space *ls);
30 __isl_give isl_aff *isl_aff_param_on_domain_space_id(
31 	__isl_take isl_space *space, __isl_take isl_id *id);
32 
33 __isl_give isl_aff *isl_aff_copy(__isl_keep isl_aff *aff);
34 __isl_null isl_aff *isl_aff_free(__isl_take isl_aff *aff);
35 
36 isl_ctx *isl_aff_get_ctx(__isl_keep isl_aff *aff);
37 uint32_t isl_aff_get_hash(__isl_keep isl_aff *aff);
38 
39 isl_bool isl_aff_involves_locals(__isl_keep isl_aff *aff);
40 
41 isl_size isl_aff_dim(__isl_keep isl_aff *aff, enum isl_dim_type type);
42 isl_bool isl_aff_involves_dims(__isl_keep isl_aff *aff,
43 	enum isl_dim_type type, unsigned first, unsigned n);
44 
45 __isl_give isl_space *isl_aff_get_domain_space(__isl_keep isl_aff *aff);
46 __isl_give isl_space *isl_aff_get_space(__isl_keep isl_aff *aff);
47 __isl_give isl_local_space *isl_aff_get_domain_local_space(
48 	__isl_keep isl_aff *aff);
49 __isl_give isl_local_space *isl_aff_get_local_space(__isl_keep isl_aff *aff);
50 
51 const char *isl_aff_get_dim_name(__isl_keep isl_aff *aff,
52 	enum isl_dim_type type, unsigned pos);
53 __isl_give isl_val *isl_aff_get_constant_val(__isl_keep isl_aff *aff);
54 __isl_give isl_val *isl_aff_get_coefficient_val(__isl_keep isl_aff *aff,
55 	enum isl_dim_type type, int pos);
56 int isl_aff_coefficient_sgn(__isl_keep isl_aff *aff,
57 	enum isl_dim_type type, int pos);
58 __isl_give isl_val *isl_aff_get_denominator_val(__isl_keep isl_aff *aff);
59 __isl_give isl_aff *isl_aff_set_constant_si(__isl_take isl_aff *aff, int v);
60 __isl_give isl_aff *isl_aff_set_constant_val(__isl_take isl_aff *aff,
61 	__isl_take isl_val *v);
62 __isl_give isl_aff *isl_aff_set_coefficient_si(__isl_take isl_aff *aff,
63 	enum isl_dim_type type, int pos, int v);
64 __isl_give isl_aff *isl_aff_set_coefficient_val(__isl_take isl_aff *aff,
65 	enum isl_dim_type type, int pos, __isl_take isl_val *v);
66 __isl_give isl_aff *isl_aff_add_constant_si(__isl_take isl_aff *aff, int v);
67 __isl_overload
68 __isl_give isl_aff *isl_aff_add_constant_val(__isl_take isl_aff *aff,
69 	__isl_take isl_val *v);
70 __isl_give isl_aff *isl_aff_add_constant_num_si(__isl_take isl_aff *aff, int v);
71 __isl_give isl_aff *isl_aff_add_coefficient_si(__isl_take isl_aff *aff,
72 	enum isl_dim_type type, int pos, int v);
73 __isl_give isl_aff *isl_aff_add_coefficient_val(__isl_take isl_aff *aff,
74 	enum isl_dim_type type, int pos, __isl_take isl_val *v);
75 
76 isl_bool isl_aff_is_cst(__isl_keep isl_aff *aff);
77 
78 __isl_give isl_aff *isl_aff_set_tuple_id(__isl_take isl_aff *aff,
79 	enum isl_dim_type type, __isl_take isl_id *id);
80 __isl_give isl_aff *isl_aff_set_dim_name(__isl_take isl_aff *aff,
81 	enum isl_dim_type type, unsigned pos, const char *s);
82 __isl_give isl_aff *isl_aff_set_dim_id(__isl_take isl_aff *aff,
83 	enum isl_dim_type type, unsigned pos, __isl_take isl_id *id);
84 
85 int isl_aff_find_dim_by_name(__isl_keep isl_aff *aff, enum isl_dim_type type,
86 	const char *name);
87 
88 isl_bool isl_aff_plain_is_equal(__isl_keep isl_aff *aff1,
89 	__isl_keep isl_aff *aff2);
90 isl_bool isl_aff_plain_is_zero(__isl_keep isl_aff *aff);
91 isl_bool isl_aff_is_nan(__isl_keep isl_aff *aff);
92 
93 __isl_give isl_aff *isl_aff_get_div(__isl_keep isl_aff *aff, int pos);
94 
95 __isl_give isl_aff *isl_aff_from_range(__isl_take isl_aff *aff);
96 
97 __isl_export
98 __isl_give isl_aff *isl_aff_neg(__isl_take isl_aff *aff);
99 __isl_export
100 __isl_give isl_aff *isl_aff_ceil(__isl_take isl_aff *aff);
101 __isl_export
102 __isl_give isl_aff *isl_aff_floor(__isl_take isl_aff *aff);
103 __isl_overload
104 __isl_give isl_aff *isl_aff_mod_val(__isl_take isl_aff *aff,
105 	__isl_take isl_val *mod);
106 
107 __isl_export
108 __isl_give isl_aff *isl_aff_mul(__isl_take isl_aff *aff1,
109 	__isl_take isl_aff *aff2);
110 __isl_export
111 __isl_give isl_aff *isl_aff_div(__isl_take isl_aff *aff1,
112 	__isl_take isl_aff *aff2);
113 __isl_export
114 __isl_give isl_aff *isl_aff_add(__isl_take isl_aff *aff1,
115 	__isl_take isl_aff *aff2);
116 __isl_export
117 __isl_give isl_aff *isl_aff_sub(__isl_take isl_aff *aff1,
118 	__isl_take isl_aff *aff2);
119 
120 __isl_overload
121 __isl_give isl_aff *isl_aff_scale_val(__isl_take isl_aff *aff,
122 	__isl_take isl_val *v);
123 __isl_give isl_aff *isl_aff_scale_down_ui(__isl_take isl_aff *aff, unsigned f);
124 __isl_overload
125 __isl_give isl_aff *isl_aff_scale_down_val(__isl_take isl_aff *aff,
126 	__isl_take isl_val *v);
127 
128 __isl_give isl_aff *isl_aff_insert_dims(__isl_take isl_aff *aff,
129 	enum isl_dim_type type, unsigned first, unsigned n);
130 __isl_give isl_aff *isl_aff_add_dims(__isl_take isl_aff *aff,
131 	enum isl_dim_type type, unsigned n);
132 __isl_give isl_aff *isl_aff_move_dims(__isl_take isl_aff *aff,
133 	enum isl_dim_type dst_type, unsigned dst_pos,
134 	enum isl_dim_type src_type, unsigned src_pos, unsigned n);
135 __isl_give isl_aff *isl_aff_drop_dims(__isl_take isl_aff *aff,
136 	enum isl_dim_type type, unsigned first, unsigned n);
137 __isl_give isl_aff *isl_aff_project_domain_on_params(__isl_take isl_aff *aff);
138 __isl_export
139 __isl_give isl_aff *isl_aff_unbind_params_insert_domain(
140 	__isl_take isl_aff *aff, __isl_take isl_multi_id *domain);
141 
142 __isl_give isl_aff *isl_aff_align_params(__isl_take isl_aff *aff,
143 	__isl_take isl_space *model);
144 
145 __isl_export
146 __isl_give isl_aff *isl_aff_gist(__isl_take isl_aff *aff,
147 	__isl_take isl_set *context);
148 __isl_give isl_aff *isl_aff_gist_params(__isl_take isl_aff *aff,
149 	__isl_take isl_set *context);
150 
151 __isl_export
152 __isl_give isl_val *isl_aff_eval(__isl_take isl_aff *aff,
153 	__isl_take isl_point *pnt);
154 
155 __isl_give isl_aff *isl_aff_pullback_aff(__isl_take isl_aff *aff1,
156 	__isl_take isl_aff *aff2);
157 __isl_overload
158 __isl_give isl_aff *isl_aff_pullback_multi_aff(__isl_take isl_aff *aff,
159 	__isl_take isl_multi_aff *ma);
160 
161 __isl_give isl_basic_set *isl_aff_zero_basic_set(__isl_take isl_aff *aff);
162 __isl_give isl_basic_set *isl_aff_neg_basic_set(__isl_take isl_aff *aff);
163 
164 __isl_give isl_basic_set *isl_aff_eq_basic_set(__isl_take isl_aff *aff1,
165 	__isl_take isl_aff *aff2);
166 __isl_export
167 __isl_give isl_set *isl_aff_eq_set(__isl_take isl_aff *aff1,
168 	__isl_take isl_aff *aff2);
169 __isl_export
170 __isl_give isl_set *isl_aff_ne_set(__isl_take isl_aff *aff1,
171 	__isl_take isl_aff *aff2);
172 __isl_give isl_basic_set *isl_aff_le_basic_set(__isl_take isl_aff *aff1,
173 	__isl_take isl_aff *aff2);
174 __isl_export
175 __isl_give isl_set *isl_aff_le_set(__isl_take isl_aff *aff1,
176 	__isl_take isl_aff *aff2);
177 __isl_give isl_basic_set *isl_aff_lt_basic_set(__isl_take isl_aff *aff1,
178 	__isl_take isl_aff *aff2);
179 __isl_export
180 __isl_give isl_set *isl_aff_lt_set(__isl_take isl_aff *aff1,
181 	__isl_take isl_aff *aff2);
182 __isl_give isl_basic_set *isl_aff_ge_basic_set(__isl_take isl_aff *aff1,
183 	__isl_take isl_aff *aff2);
184 __isl_export
185 __isl_give isl_set *isl_aff_ge_set(__isl_take isl_aff *aff1,
186 	__isl_take isl_aff *aff2);
187 __isl_give isl_basic_set *isl_aff_gt_basic_set(__isl_take isl_aff *aff1,
188 	__isl_take isl_aff *aff2);
189 __isl_export
190 __isl_give isl_set *isl_aff_gt_set(__isl_take isl_aff *aff1,
191 	__isl_take isl_aff *aff2);
192 
193 __isl_overload
194 __isl_give isl_basic_set *isl_aff_bind_id(__isl_take isl_aff *aff,
195 	__isl_take isl_id *id);
196 
197 __isl_constructor
198 __isl_give isl_aff *isl_aff_read_from_str(isl_ctx *ctx, const char *str);
199 __isl_give char *isl_aff_to_str(__isl_keep isl_aff *aff);
200 __isl_give isl_printer *isl_printer_print_aff(__isl_take isl_printer *p,
201 	__isl_keep isl_aff *aff);
202 void isl_aff_dump(__isl_keep isl_aff *aff);
203 
204 isl_ctx *isl_pw_aff_get_ctx(__isl_keep isl_pw_aff *pwaff);
205 uint32_t isl_pw_aff_get_hash(__isl_keep isl_pw_aff *pa);
206 __isl_give isl_space *isl_pw_aff_get_domain_space(__isl_keep isl_pw_aff *pwaff);
207 __isl_give isl_space *isl_pw_aff_get_space(__isl_keep isl_pw_aff *pwaff);
208 
209 __isl_constructor
210 __isl_give isl_pw_aff *isl_pw_aff_from_aff(__isl_take isl_aff *aff);
211 __isl_give isl_pw_aff *isl_pw_aff_empty(__isl_take isl_space *space);
212 __isl_give isl_pw_aff *isl_pw_aff_alloc(__isl_take isl_set *set,
213 	__isl_take isl_aff *aff);
214 __isl_give isl_pw_aff *isl_pw_aff_zero_on_domain(
215 	__isl_take isl_local_space *ls);
216 __isl_give isl_pw_aff *isl_pw_aff_var_on_domain(__isl_take isl_local_space *ls,
217 	enum isl_dim_type type, unsigned pos);
218 __isl_give isl_pw_aff *isl_pw_aff_nan_on_domain(__isl_take isl_local_space *ls);
219 __isl_give isl_pw_aff *isl_pw_aff_val_on_domain(__isl_take isl_set *domain,
220 	__isl_take isl_val *v);
221 __isl_overload
222 __isl_give isl_pw_aff *isl_pw_aff_param_on_domain_id(
223 	__isl_take isl_set *domain, __isl_take isl_id *id);
224 
225 __isl_export
226 __isl_give isl_pw_aff *isl_set_indicator_function(__isl_take isl_set *set);
227 
228 const char *isl_pw_aff_get_dim_name(__isl_keep isl_pw_aff *pa,
229 	enum isl_dim_type type, unsigned pos);
230 isl_bool isl_pw_aff_has_dim_id(__isl_keep isl_pw_aff *pa,
231 	enum isl_dim_type type, unsigned pos);
232 __isl_give isl_id *isl_pw_aff_get_dim_id(__isl_keep isl_pw_aff *pa,
233 	enum isl_dim_type type, unsigned pos);
234 __isl_give isl_pw_aff *isl_pw_aff_set_dim_id(__isl_take isl_pw_aff *pma,
235 	enum isl_dim_type type, unsigned pos, __isl_take isl_id *id);
236 
237 int isl_pw_aff_find_dim_by_name(__isl_keep isl_pw_aff *pa,
238 	enum isl_dim_type type, const char *name);
239 
240 isl_bool isl_pw_aff_is_empty(__isl_keep isl_pw_aff *pwaff);
241 isl_bool isl_pw_aff_involves_nan(__isl_keep isl_pw_aff *pa);
242 int isl_pw_aff_plain_cmp(__isl_keep isl_pw_aff *pa1,
243 	__isl_keep isl_pw_aff *pa2);
244 isl_bool isl_pw_aff_plain_is_equal(__isl_keep isl_pw_aff *pwaff1,
245 	__isl_keep isl_pw_aff *pwaff2);
246 isl_bool isl_pw_aff_is_equal(__isl_keep isl_pw_aff *pa1,
247 	__isl_keep isl_pw_aff *pa2);
248 
249 __isl_give isl_pw_aff *isl_pw_aff_union_min(__isl_take isl_pw_aff *pwaff1,
250 	__isl_take isl_pw_aff *pwaff2);
251 __isl_give isl_pw_aff *isl_pw_aff_union_max(__isl_take isl_pw_aff *pwaff1,
252 	__isl_take isl_pw_aff *pwaff2);
253 __isl_export
254 __isl_give isl_pw_aff *isl_pw_aff_union_add(__isl_take isl_pw_aff *pwaff1,
255 	__isl_take isl_pw_aff *pwaff2);
256 
257 __isl_give isl_pw_aff *isl_pw_aff_copy(__isl_keep isl_pw_aff *pwaff);
258 __isl_null isl_pw_aff *isl_pw_aff_free(__isl_take isl_pw_aff *pwaff);
259 
260 isl_size isl_pw_aff_dim(__isl_keep isl_pw_aff *pwaff, enum isl_dim_type type);
261 isl_bool isl_pw_aff_involves_param_id(__isl_keep isl_pw_aff *pa,
262 	__isl_keep isl_id *id);
263 isl_bool isl_pw_aff_involves_dims(__isl_keep isl_pw_aff *pwaff,
264 	enum isl_dim_type type, unsigned first, unsigned n);
265 
266 isl_bool isl_pw_aff_is_cst(__isl_keep isl_pw_aff *pwaff);
267 
268 __isl_export
269 __isl_give isl_pw_aff *isl_pw_aff_insert_domain(__isl_take isl_pw_aff *pa,
270 	__isl_take isl_space *domain);
271 __isl_give isl_pw_aff *isl_pw_aff_project_domain_on_params(
272 	__isl_take isl_pw_aff *pa);
273 
274 __isl_give isl_pw_aff *isl_pw_aff_align_params(__isl_take isl_pw_aff *pwaff,
275 	__isl_take isl_space *model);
276 __isl_give isl_pw_aff *isl_pw_aff_drop_unused_params(
277 	__isl_take isl_pw_aff *pa);
278 
279 isl_bool isl_pw_aff_has_tuple_id(__isl_keep isl_pw_aff *pa,
280 	enum isl_dim_type type);
281 __isl_give isl_id *isl_pw_aff_get_tuple_id(__isl_keep isl_pw_aff *pa,
282 	enum isl_dim_type type);
283 __isl_give isl_pw_aff *isl_pw_aff_set_tuple_id(__isl_take isl_pw_aff *pwaff,
284 	enum isl_dim_type type, __isl_take isl_id *id);
285 __isl_give isl_pw_aff *isl_pw_aff_reset_tuple_id(__isl_take isl_pw_aff *pa,
286 	enum isl_dim_type type);
287 __isl_give isl_pw_aff *isl_pw_aff_reset_user(__isl_take isl_pw_aff *pa);
288 
289 __isl_give isl_set *isl_pw_aff_params(__isl_take isl_pw_aff *pwa);
290 __isl_export
291 __isl_give isl_set *isl_pw_aff_domain(__isl_take isl_pw_aff *pwaff);
292 __isl_give isl_pw_aff *isl_pw_aff_from_range(__isl_take isl_pw_aff *pwa);
293 
294 __isl_export
295 __isl_give isl_pw_aff *isl_pw_aff_min(__isl_take isl_pw_aff *pwaff1,
296 	__isl_take isl_pw_aff *pwaff2);
297 __isl_export
298 __isl_give isl_pw_aff *isl_pw_aff_max(__isl_take isl_pw_aff *pwaff1,
299 	__isl_take isl_pw_aff *pwaff2);
300 __isl_export
301 __isl_give isl_pw_aff *isl_pw_aff_mul(__isl_take isl_pw_aff *pwaff1,
302 	__isl_take isl_pw_aff *pwaff2);
303 __isl_export
304 __isl_give isl_pw_aff *isl_pw_aff_div(__isl_take isl_pw_aff *pa1,
305 	__isl_take isl_pw_aff *pa2);
306 __isl_export
307 __isl_give isl_pw_aff *isl_pw_aff_add(__isl_take isl_pw_aff *pwaff1,
308 	__isl_take isl_pw_aff *pwaff2);
309 __isl_export
310 __isl_give isl_pw_aff *isl_pw_aff_sub(__isl_take isl_pw_aff *pwaff1,
311 	__isl_take isl_pw_aff *pwaff2);
312 __isl_export
313 __isl_give isl_pw_aff *isl_pw_aff_neg(__isl_take isl_pw_aff *pwaff);
314 __isl_export
315 __isl_give isl_pw_aff *isl_pw_aff_ceil(__isl_take isl_pw_aff *pwaff);
316 __isl_export
317 __isl_give isl_pw_aff *isl_pw_aff_floor(__isl_take isl_pw_aff *pwaff);
318 __isl_overload
319 __isl_give isl_pw_aff *isl_pw_aff_mod_val(__isl_take isl_pw_aff *pa,
320 	__isl_take isl_val *mod);
321 __isl_export
322 __isl_give isl_pw_aff *isl_pw_aff_tdiv_q(__isl_take isl_pw_aff *pa1,
323 	__isl_take isl_pw_aff *pa2);
324 __isl_export
325 __isl_give isl_pw_aff *isl_pw_aff_tdiv_r(__isl_take isl_pw_aff *pa1,
326 	__isl_take isl_pw_aff *pa2);
327 
328 __isl_export
329 __isl_give isl_pw_aff *isl_pw_aff_intersect_params(__isl_take isl_pw_aff *pa,
330 	__isl_take isl_set *set);
331 __isl_export
332 __isl_give isl_pw_aff *isl_pw_aff_intersect_domain(__isl_take isl_pw_aff *pa,
333 	__isl_take isl_set *set);
334 __isl_give isl_pw_aff *isl_pw_aff_intersect_domain_wrapped_domain(
335 	__isl_take isl_pw_aff *pa, __isl_take isl_set *set);
336 __isl_give isl_pw_aff *isl_pw_aff_intersect_domain_wrapped_range(
337 	__isl_take isl_pw_aff *pa, __isl_take isl_set *set);
338 __isl_export
339 __isl_give isl_pw_aff *isl_pw_aff_subtract_domain(__isl_take isl_pw_aff *pa,
340 	__isl_take isl_set *set);
341 
342 __isl_export
343 __isl_give isl_pw_aff *isl_pw_aff_cond(__isl_take isl_pw_aff *cond,
344 	__isl_take isl_pw_aff *pwaff_true, __isl_take isl_pw_aff *pwaff_false);
345 
346 __isl_overload
347 __isl_give isl_pw_aff *isl_pw_aff_add_constant_val(__isl_take isl_pw_aff *pa,
348 	__isl_take isl_val *v);
349 __isl_overload
350 __isl_give isl_pw_aff *isl_pw_aff_scale_val(__isl_take isl_pw_aff *pa,
351 	__isl_take isl_val *v);
352 __isl_overload
353 __isl_give isl_pw_aff *isl_pw_aff_scale_down_val(__isl_take isl_pw_aff *pa,
354 	__isl_take isl_val *f);
355 
356 __isl_give isl_pw_aff *isl_pw_aff_insert_dims(__isl_take isl_pw_aff *pwaff,
357 	enum isl_dim_type type, unsigned first, unsigned n);
358 __isl_give isl_pw_aff *isl_pw_aff_add_dims(__isl_take isl_pw_aff *pwaff,
359 	enum isl_dim_type type, unsigned n);
360 __isl_give isl_pw_aff *isl_pw_aff_move_dims(__isl_take isl_pw_aff *pa,
361 	enum isl_dim_type dst_type, unsigned dst_pos,
362 	enum isl_dim_type src_type, unsigned src_pos, unsigned n);
363 __isl_give isl_pw_aff *isl_pw_aff_drop_dims(__isl_take isl_pw_aff *pwaff,
364 	enum isl_dim_type type, unsigned first, unsigned n);
365 
366 __isl_export
367 __isl_give isl_pw_aff *isl_pw_aff_coalesce(__isl_take isl_pw_aff *pa);
368 __isl_export
369 __isl_give isl_pw_aff *isl_pw_aff_gist(__isl_take isl_pw_aff *pwaff,
370 	__isl_take isl_set *context);
371 __isl_give isl_pw_aff *isl_pw_aff_gist_params(__isl_take isl_pw_aff *pwaff,
372 	__isl_take isl_set *context);
373 
374 __isl_export
375 __isl_give isl_val *isl_pw_aff_eval(__isl_take isl_pw_aff *pa,
376 	__isl_take isl_point *pnt);
377 
378 __isl_overload
379 __isl_give isl_pw_aff *isl_pw_aff_pullback_multi_aff(
380 	__isl_take isl_pw_aff *pa, __isl_take isl_multi_aff *ma);
381 __isl_overload
382 __isl_give isl_pw_aff *isl_pw_aff_pullback_pw_multi_aff(
383 	__isl_take isl_pw_aff *pa, __isl_take isl_pw_multi_aff *pma);
384 __isl_overload
385 __isl_give isl_pw_aff *isl_pw_aff_pullback_multi_pw_aff(
386 	__isl_take isl_pw_aff *pa, __isl_take isl_multi_pw_aff *mpa);
387 
388 isl_size isl_pw_aff_n_piece(__isl_keep isl_pw_aff *pwaff);
389 isl_stat isl_pw_aff_foreach_piece(__isl_keep isl_pw_aff *pwaff,
390 	isl_stat (*fn)(__isl_take isl_set *set, __isl_take isl_aff *aff,
391 		    void *user), void *user);
392 isl_bool isl_pw_aff_every_piece(__isl_keep isl_pw_aff *pa,
393 	isl_bool (*test)(__isl_keep isl_set *set, __isl_keep isl_aff *aff,
394 		void *user), void *user);
395 __isl_export
396 isl_bool isl_pw_aff_isa_aff(__isl_keep isl_pw_aff *pa);
397 __isl_export
398 __isl_give isl_aff *isl_pw_aff_as_aff(__isl_take isl_pw_aff *pa);
399 
400 __isl_give isl_set *isl_set_from_pw_aff(__isl_take isl_pw_aff *pwaff);
401 __isl_give isl_map *isl_map_from_pw_aff(__isl_take isl_pw_aff *pwaff);
402 
403 __isl_give isl_set *isl_pw_aff_pos_set(__isl_take isl_pw_aff *pa);
404 __isl_give isl_set *isl_pw_aff_nonneg_set(__isl_take isl_pw_aff *pwaff);
405 __isl_give isl_set *isl_pw_aff_zero_set(__isl_take isl_pw_aff *pwaff);
406 __isl_give isl_set *isl_pw_aff_non_zero_set(__isl_take isl_pw_aff *pwaff);
407 
408 __isl_export
409 __isl_give isl_set *isl_pw_aff_eq_set(__isl_take isl_pw_aff *pwaff1,
410 	__isl_take isl_pw_aff *pwaff2);
411 __isl_export
412 __isl_give isl_set *isl_pw_aff_ne_set(__isl_take isl_pw_aff *pwaff1,
413 	__isl_take isl_pw_aff *pwaff2);
414 __isl_export
415 __isl_give isl_set *isl_pw_aff_le_set(__isl_take isl_pw_aff *pwaff1,
416 	__isl_take isl_pw_aff *pwaff2);
417 __isl_export
418 __isl_give isl_set *isl_pw_aff_lt_set(__isl_take isl_pw_aff *pwaff1,
419 	__isl_take isl_pw_aff *pwaff2);
420 __isl_export
421 __isl_give isl_set *isl_pw_aff_ge_set(__isl_take isl_pw_aff *pwaff1,
422 	__isl_take isl_pw_aff *pwaff2);
423 __isl_export
424 __isl_give isl_set *isl_pw_aff_gt_set(__isl_take isl_pw_aff *pwaff1,
425 	__isl_take isl_pw_aff *pwaff2);
426 
427 __isl_give isl_map *isl_pw_aff_eq_map(__isl_take isl_pw_aff *pa1,
428 	__isl_take isl_pw_aff *pa2);
429 __isl_give isl_map *isl_pw_aff_le_map(__isl_take isl_pw_aff *pa1,
430 	__isl_take isl_pw_aff *pa2);
431 __isl_give isl_map *isl_pw_aff_lt_map(__isl_take isl_pw_aff *pa1,
432 	__isl_take isl_pw_aff *pa2);
433 __isl_give isl_map *isl_pw_aff_ge_map(__isl_take isl_pw_aff *pa1,
434 	__isl_take isl_pw_aff *pa2);
435 __isl_give isl_map *isl_pw_aff_gt_map(__isl_take isl_pw_aff *pa1,
436 	__isl_take isl_pw_aff *pa2);
437 
438 __isl_export
439 __isl_give isl_pw_aff *isl_pw_aff_bind_domain(__isl_take isl_pw_aff *pa,
440 	__isl_take isl_multi_id *tuple);
441 __isl_export
442 __isl_give isl_pw_aff *isl_pw_aff_bind_domain_wrapped_domain(
443 	__isl_take isl_pw_aff *pa, __isl_take isl_multi_id *tuple);
444 __isl_overload
445 __isl_give isl_set *isl_pw_aff_bind_id(__isl_take isl_pw_aff *pa,
446 	__isl_take isl_id *id);
447 
448 __isl_constructor
449 __isl_give isl_pw_aff *isl_pw_aff_read_from_str(isl_ctx *ctx, const char *str);
450 __isl_give char *isl_pw_aff_to_str(__isl_keep isl_pw_aff *pa);
451 __isl_give isl_printer *isl_printer_print_pw_aff(__isl_take isl_printer *p,
452 	__isl_keep isl_pw_aff *pwaff);
453 void isl_pw_aff_dump(__isl_keep isl_pw_aff *pwaff);
454 
455 __isl_give isl_pw_aff *isl_pw_aff_list_min(__isl_take isl_pw_aff_list *list);
456 __isl_give isl_pw_aff *isl_pw_aff_list_max(__isl_take isl_pw_aff_list *list);
457 
458 __isl_give isl_set *isl_pw_aff_list_eq_set(__isl_take isl_pw_aff_list *list1,
459 	__isl_take isl_pw_aff_list *list2);
460 __isl_give isl_set *isl_pw_aff_list_ne_set(__isl_take isl_pw_aff_list *list1,
461 	__isl_take isl_pw_aff_list *list2);
462 __isl_give isl_set *isl_pw_aff_list_le_set(__isl_take isl_pw_aff_list *list1,
463 	__isl_take isl_pw_aff_list *list2);
464 __isl_give isl_set *isl_pw_aff_list_lt_set(__isl_take isl_pw_aff_list *list1,
465 	__isl_take isl_pw_aff_list *list2);
466 __isl_give isl_set *isl_pw_aff_list_ge_set(__isl_take isl_pw_aff_list *list1,
467 	__isl_take isl_pw_aff_list *list2);
468 __isl_give isl_set *isl_pw_aff_list_gt_set(__isl_take isl_pw_aff_list *list1,
469 	__isl_take isl_pw_aff_list *list2);
470 
471 ISL_DECLARE_MULTI(aff)
472 ISL_DECLARE_MULTI_IDENTITY(aff)
473 ISL_DECLARE_MULTI_CMP(aff)
474 ISL_DECLARE_MULTI_ARITH(aff)
475 ISL_DECLARE_MULTI_ADD_CONSTANT(aff)
476 ISL_DECLARE_MULTI_ZERO(aff)
477 ISL_DECLARE_MULTI_NAN(aff)
478 ISL_DECLARE_MULTI_DIMS(aff)
479 ISL_DECLARE_MULTI_INSERT_DOMAIN(aff)
480 ISL_DECLARE_MULTI_LOCALS(aff)
481 ISL_DECLARE_MULTI_DIM_ID(aff)
482 ISL_DECLARE_MULTI_TUPLE_ID(aff)
483 ISL_DECLARE_MULTI_WITH_DOMAIN(aff)
484 ISL_DECLARE_MULTI_BIND_DOMAIN(aff)
485 ISL_DECLARE_MULTI_UNBIND_PARAMS(aff)
486 
487 __isl_constructor
488 __isl_give isl_multi_aff *isl_multi_aff_from_aff(__isl_take isl_aff *aff);
489 __isl_export
490 __isl_give isl_multi_aff *isl_multi_aff_domain_map(__isl_take isl_space *space);
491 __isl_export
492 __isl_give isl_multi_aff *isl_multi_aff_range_map(__isl_take isl_space *space);
493 __isl_give isl_multi_aff *isl_multi_aff_project_out_map(
494 	__isl_take isl_space *space, enum isl_dim_type type,
495 	unsigned first, unsigned n);
496 
497 __isl_give isl_multi_aff *isl_multi_aff_multi_val_on_space(
498 	__isl_take isl_space *space, __isl_take isl_multi_val *mv);
499 
500 __isl_export
501 __isl_give isl_multi_val *isl_multi_aff_get_constant_multi_val(
502 	__isl_keep isl_multi_aff *ma);
503 
504 __isl_export
505 __isl_give isl_multi_aff *isl_multi_aff_floor(__isl_take isl_multi_aff *ma);
506 
507 __isl_give isl_multi_aff *isl_multi_aff_gist_params(
508 	__isl_take isl_multi_aff *maff, __isl_take isl_set *context);
509 __isl_export
510 __isl_give isl_multi_aff *isl_multi_aff_gist(__isl_take isl_multi_aff *maff,
511 	__isl_take isl_set *context);
512 
513 __isl_give isl_multi_aff *isl_multi_aff_lift(__isl_take isl_multi_aff *maff,
514 	__isl_give isl_local_space **ls);
515 
516 __isl_overload
517 __isl_give isl_multi_aff *isl_multi_aff_pullback_multi_aff(
518 	__isl_take isl_multi_aff *ma1, __isl_take isl_multi_aff *ma2);
519 
520 __isl_give isl_multi_aff *isl_multi_aff_move_dims(__isl_take isl_multi_aff *ma,
521 	enum isl_dim_type dst_type, unsigned dst_pos,
522 	enum isl_dim_type src_type, unsigned src_pos, unsigned n);
523 
524 __isl_give isl_set *isl_multi_aff_lex_lt_set(__isl_take isl_multi_aff *ma1,
525 	__isl_take isl_multi_aff *ma2);
526 __isl_give isl_set *isl_multi_aff_lex_le_set(__isl_take isl_multi_aff *ma1,
527 	__isl_take isl_multi_aff *ma2);
528 __isl_give isl_set *isl_multi_aff_lex_gt_set(__isl_take isl_multi_aff *ma1,
529 	__isl_take isl_multi_aff *ma2);
530 __isl_give isl_set *isl_multi_aff_lex_ge_set(__isl_take isl_multi_aff *ma1,
531 	__isl_take isl_multi_aff *ma2);
532 
533 __isl_export
534 __isl_give isl_basic_set *isl_multi_aff_bind(__isl_take isl_multi_aff *ma,
535 	__isl_take isl_multi_id *tuple);
536 
537 __isl_give char *isl_multi_aff_to_str(__isl_keep isl_multi_aff *ma);
538 __isl_give isl_printer *isl_printer_print_multi_aff(__isl_take isl_printer *p,
539 	__isl_keep isl_multi_aff *maff);
540 
541 __isl_constructor
542 __isl_give isl_multi_aff *isl_multi_aff_read_from_str(isl_ctx *ctx,
543 		const char *str);
544 void isl_multi_aff_dump(__isl_keep isl_multi_aff *maff);
545 
546 ISL_DECLARE_MULTI(pw_aff)
547 ISL_DECLARE_MULTI_IDENTITY(pw_aff)
548 ISL_DECLARE_MULTI_ARITH(pw_aff)
549 ISL_DECLARE_MULTI_MIN_MAX(pw_aff)
550 ISL_DECLARE_MULTI_ADD_CONSTANT(pw_aff)
551 ISL_DECLARE_MULTI_ZERO(pw_aff)
552 ISL_DECLARE_MULTI_NAN(pw_aff)
553 ISL_DECLARE_MULTI_DIMS(pw_aff)
554 ISL_DECLARE_MULTI_DIM_ID(pw_aff)
555 ISL_DECLARE_MULTI_INSERT_DOMAIN(pw_aff)
556 ISL_DECLARE_MULTI_TUPLE_ID(pw_aff)
557 ISL_DECLARE_MULTI_WITH_DOMAIN(pw_aff)
558 ISL_DECLARE_MULTI_BIND_DOMAIN(pw_aff)
559 ISL_DECLARE_MULTI_PARAM(pw_aff)
560 ISL_DECLARE_MULTI_UNBIND_PARAMS(pw_aff)
561 
562 __isl_export
563 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_zero(__isl_take isl_space *space);
564 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity(
565 	__isl_take isl_space *space);
566 __isl_export
567 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_domain_map(
568 	__isl_take isl_space *space);
569 __isl_export
570 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_map(
571 	__isl_take isl_space *space);
572 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_out_map(
573 	__isl_take isl_space *space, enum isl_dim_type type,
574 	unsigned first, unsigned n);
575 __isl_constructor
576 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_multi_aff(
577 	__isl_take isl_multi_aff *ma);
578 __isl_constructor
579 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_pw_aff(
580 	__isl_take isl_pw_aff *pa);
581 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_alloc(__isl_take isl_set *set,
582 	__isl_take isl_multi_aff *maff);
583 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_copy(
584 	__isl_keep isl_pw_multi_aff *pma);
585 __isl_null isl_pw_multi_aff *isl_pw_multi_aff_free(
586 	__isl_take isl_pw_multi_aff *pma);
587 
588 isl_size isl_pw_multi_aff_dim(__isl_keep isl_pw_multi_aff *pma,
589 	enum isl_dim_type type);
590 __isl_export
591 isl_bool isl_pw_multi_aff_involves_locals(__isl_keep isl_pw_multi_aff *pma);
592 isl_bool isl_pw_multi_aff_involves_param_id(__isl_keep isl_pw_multi_aff *pma,
593 	__isl_keep isl_id *id);
594 isl_bool isl_pw_multi_aff_involves_dims(__isl_keep isl_pw_multi_aff *pma,
595 	enum isl_dim_type type, unsigned first, unsigned n);
596 __isl_give isl_pw_aff *isl_pw_multi_aff_get_pw_aff(
597 	__isl_keep isl_pw_multi_aff *pma, int pos);
598 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_pw_aff(
599 	__isl_take isl_pw_multi_aff *pma, unsigned pos,
600 	__isl_take isl_pw_aff *pa);
601 
602 isl_ctx *isl_pw_multi_aff_get_ctx(__isl_keep isl_pw_multi_aff *pma);
603 __isl_give isl_space *isl_pw_multi_aff_get_domain_space(
604 	__isl_keep isl_pw_multi_aff *pma);
605 __isl_export
606 __isl_give isl_space *isl_pw_multi_aff_get_space(
607 	__isl_keep isl_pw_multi_aff *pma);
608 isl_bool isl_pw_multi_aff_has_tuple_name(__isl_keep isl_pw_multi_aff *pma,
609 	enum isl_dim_type type);
610 const char *isl_pw_multi_aff_get_tuple_name(__isl_keep isl_pw_multi_aff *pma,
611 	enum isl_dim_type type);
612 __isl_give isl_id *isl_pw_multi_aff_get_tuple_id(
613 	__isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type);
614 isl_bool isl_pw_multi_aff_has_tuple_id(__isl_keep isl_pw_multi_aff *pma,
615 	enum isl_dim_type type);
616 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_tuple_id(
617 	__isl_take isl_pw_multi_aff *pma,
618 	enum isl_dim_type type, __isl_take isl_id *id);
619 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_tuple_id(
620 	__isl_take isl_pw_multi_aff *pma, enum isl_dim_type type);
621 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_user(
622 	__isl_take isl_pw_multi_aff *pma);
623 
624 int isl_pw_multi_aff_find_dim_by_name(__isl_keep isl_pw_multi_aff *pma,
625 	enum isl_dim_type type, const char *name);
626 
627 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_drop_dims(
628 	__isl_take isl_pw_multi_aff *pma,
629 	enum isl_dim_type type, unsigned first, unsigned n);
630 
631 __isl_export
632 __isl_give isl_set *isl_pw_multi_aff_domain(__isl_take isl_pw_multi_aff *pma);
633 
634 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_empty(__isl_take isl_space *space);
635 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_domain(
636 	__isl_take isl_set *set);
637 
638 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_multi_val_on_domain(
639 	__isl_take isl_set *domain, __isl_take isl_multi_val *mv);
640 
641 const char *isl_pw_multi_aff_get_dim_name(__isl_keep isl_pw_multi_aff *pma,
642 	enum isl_dim_type type, unsigned pos);
643 __isl_give isl_id *isl_pw_multi_aff_get_dim_id(
644 	__isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type,
645 	unsigned pos);
646 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_dim_id(
647 	__isl_take isl_pw_multi_aff *pma,
648 	enum isl_dim_type type, unsigned pos, __isl_take isl_id *id);
649 
650 isl_bool isl_pw_multi_aff_involves_nan(__isl_keep isl_pw_multi_aff *pma);
651 isl_bool isl_pw_multi_aff_plain_is_equal(__isl_keep isl_pw_multi_aff *pma1,
652 	__isl_keep isl_pw_multi_aff *pma2);
653 isl_bool isl_pw_multi_aff_is_equal(__isl_keep isl_pw_multi_aff *pma1,
654 	__isl_keep isl_pw_multi_aff *pma2);
655 
656 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_fix_si(
657 	__isl_take isl_pw_multi_aff *pma, enum isl_dim_type type,
658 	unsigned pos, int value);
659 
660 __isl_export
661 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_add(
662 	__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2);
663 
664 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_neg(
665 	__isl_take isl_pw_multi_aff *pma);
666 
667 __isl_export
668 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add(
669 	__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2);
670 __isl_export
671 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_sub(
672 	__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2);
673 
674 __isl_overload
675 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add_constant_val(
676 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v);
677 __isl_overload
678 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add_constant_multi_val(
679 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_val *mv);
680 __isl_overload
681 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_val(
682 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v);
683 __isl_overload
684 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_down_val(
685 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v);
686 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_multi_val(
687 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_val *mv);
688 
689 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_lexmin(
690 	__isl_take isl_pw_multi_aff *pma1,
691 	__isl_take isl_pw_multi_aff *pma2);
692 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_lexmax(
693 	__isl_take isl_pw_multi_aff *pma1,
694 	__isl_take isl_pw_multi_aff *pma2);
695 
696 __isl_give isl_multi_aff *isl_multi_aff_flatten_domain(
697 	__isl_take isl_multi_aff *ma);
698 
699 __isl_export
700 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_product(
701 	__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2);
702 __isl_export
703 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_flat_range_product(
704 	__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2);
705 __isl_export
706 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_product(
707 	__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2);
708 __isl_export
709 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_factor_domain(
710 	__isl_take isl_pw_multi_aff *pma);
711 __isl_export
712 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_factor_range(
713 	__isl_take isl_pw_multi_aff *pma);
714 
715 __isl_export
716 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_params(
717 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set);
718 __isl_export
719 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_domain(
720 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set);
721 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_domain_wrapped_domain(
722 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set);
723 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_domain_wrapped_range(
724 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set);
725 __isl_export
726 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_subtract_domain(
727 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set);
728 
729 __isl_export
730 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_insert_domain(
731 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_space *domain);
732 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_domain_on_params(
733 	__isl_take isl_pw_multi_aff *pma);
734 
735 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_align_params(
736 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_space *model);
737 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_drop_unused_params(
738 	__isl_take isl_pw_multi_aff *pma);
739 
740 __isl_export
741 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_coalesce(
742 	__isl_take isl_pw_multi_aff *pma);
743 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist_params(
744 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set);
745 __isl_export
746 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist(
747 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set);
748 
749 __isl_overload
750 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_pullback_multi_aff(
751 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_aff *ma);
752 __isl_overload
753 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_pullback_pw_multi_aff(
754 	__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2);
755 
756 __isl_export
757 isl_size isl_pw_multi_aff_n_piece(__isl_keep isl_pw_multi_aff *pma);
758 __isl_export
759 isl_stat isl_pw_multi_aff_foreach_piece(__isl_keep isl_pw_multi_aff *pma,
760 	isl_stat (*fn)(__isl_take isl_set *set, __isl_take isl_multi_aff *maff,
761 		    void *user), void *user);
762 isl_bool isl_pw_multi_aff_every_piece(__isl_keep isl_pw_multi_aff *pma,
763 	isl_bool (*test)(__isl_keep isl_set *set, __isl_keep isl_multi_aff *ma,
764 		void *user), void *user);
765 __isl_export
766 isl_bool isl_pw_multi_aff_isa_multi_aff(__isl_keep isl_pw_multi_aff *pma);
767 __isl_export
768 __isl_give isl_multi_aff *isl_pw_multi_aff_as_multi_aff(
769 	__isl_take isl_pw_multi_aff *pma);
770 
771 __isl_give isl_map *isl_map_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma);
772 __isl_give isl_set *isl_set_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma);
773 
774 __isl_give char *isl_pw_multi_aff_to_str(__isl_keep isl_pw_multi_aff *pma);
775 __isl_give isl_printer *isl_printer_print_pw_multi_aff(__isl_take isl_printer *p,
776 	__isl_keep isl_pw_multi_aff *pma);
777 
778 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_set(__isl_take isl_set *set);
779 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_map(__isl_take isl_map *map);
780 
781 __isl_export
782 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_bind_domain(
783 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_id *tuple);
784 __isl_export
785 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_bind_domain_wrapped_domain(
786 	__isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_id *tuple);
787 
788 __isl_constructor
789 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_read_from_str(isl_ctx *ctx,
790 	const char *str);
791 void isl_pw_multi_aff_dump(__isl_keep isl_pw_multi_aff *pma);
792 
793 
794 __isl_overload
795 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_empty_ctx(
796 	isl_ctx *ctx);
797 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_empty_space(
798 	__isl_take isl_space *space);
799 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_empty(
800 	__isl_take isl_space *space);
801 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_aff(
802 	__isl_take isl_aff *aff);
803 __isl_constructor
804 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_multi_aff(
805 	__isl_take isl_multi_aff *ma);
806 __isl_constructor
807 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_pw_multi_aff(
808 	__isl_take isl_pw_multi_aff *pma);
809 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_domain(
810 	__isl_take isl_union_set *uset);
811 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_multi_val_on_domain(
812 	__isl_take isl_union_set *domain, __isl_take isl_multi_val *mv);
813 __isl_give isl_union_pw_aff *isl_union_pw_aff_param_on_domain_id(
814 	__isl_take isl_union_set *domain, __isl_take isl_id *id);
815 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_copy(
816 	__isl_keep isl_union_pw_multi_aff *upma);
817 __isl_null isl_union_pw_multi_aff *isl_union_pw_multi_aff_free(
818 	__isl_take isl_union_pw_multi_aff *upma);
819 
820 __isl_give isl_union_pw_multi_aff *isl_union_set_identity_union_pw_multi_aff(
821 	__isl_take isl_union_set *uset);
822 
823 __isl_give isl_union_pw_aff *isl_union_pw_multi_aff_get_union_pw_aff(
824 	__isl_keep isl_union_pw_multi_aff *upma, int pos);
825 
826 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_add_pw_multi_aff(
827 	__isl_take isl_union_pw_multi_aff *upma,
828 	__isl_take isl_pw_multi_aff *pma);
829 
830 isl_ctx *isl_union_pw_multi_aff_get_ctx(
831 	__isl_keep isl_union_pw_multi_aff *upma);
832 __isl_export
833 __isl_give isl_space *isl_union_pw_multi_aff_get_space(
834 	__isl_keep isl_union_pw_multi_aff *upma);
835 __isl_give isl_pw_multi_aff_list *isl_union_pw_multi_aff_get_pw_multi_aff_list(
836 	__isl_keep isl_union_pw_multi_aff *upma);
837 
838 isl_size isl_union_pw_multi_aff_dim(__isl_keep isl_union_pw_multi_aff *upma,
839 	enum isl_dim_type type);
840 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_set_dim_name(
841 	__isl_take isl_union_pw_multi_aff *upma,
842 	enum isl_dim_type type, unsigned pos, const char *s);
843 
844 int isl_union_pw_multi_aff_find_dim_by_name(
845 	__isl_keep isl_union_pw_multi_aff *upma, enum isl_dim_type type,
846 	const char *name);
847 
848 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_drop_dims(
849 	__isl_take isl_union_pw_multi_aff *upma,
850 	enum isl_dim_type type, unsigned first, unsigned n);
851 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_reset_user(
852 	__isl_take isl_union_pw_multi_aff *upma);
853 
854 __isl_export
855 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_coalesce(
856 	__isl_take isl_union_pw_multi_aff *upma);
857 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_gist_params(
858 	__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_set *context);
859 __isl_export
860 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_gist(
861 	__isl_take isl_union_pw_multi_aff *upma,
862 	__isl_take isl_union_set *context);
863 
864 __isl_overload
865 __isl_give isl_union_pw_multi_aff *
866 isl_union_pw_multi_aff_pullback_union_pw_multi_aff(
867 	__isl_take isl_union_pw_multi_aff *upma1,
868 	__isl_take isl_union_pw_multi_aff *upma2);
869 __isl_overload
870 __isl_give isl_union_pw_multi_aff *
871 isl_union_pw_multi_aff_apply_union_pw_multi_aff(
872 	__isl_take isl_union_pw_multi_aff *upma1,
873 	__isl_take isl_union_pw_multi_aff *upma2);
874 
875 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_align_params(
876 	__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_space *model);
877 
878 isl_size isl_union_pw_multi_aff_n_pw_multi_aff(
879 	__isl_keep isl_union_pw_multi_aff *upma);
880 
881 isl_stat isl_union_pw_multi_aff_foreach_pw_multi_aff(
882 	__isl_keep isl_union_pw_multi_aff *upma,
883 	isl_stat (*fn)(__isl_take isl_pw_multi_aff *pma, void *user),
884 	void *user);
885 isl_bool isl_union_pw_multi_aff_every_pw_multi_aff(
886 	__isl_keep isl_union_pw_multi_aff *upma,
887 	isl_bool (*test)(__isl_keep isl_pw_multi_aff *pma, void *user),
888 	void *user);
889 __isl_export
890 __isl_give isl_pw_multi_aff *isl_union_pw_multi_aff_extract_pw_multi_aff(
891 	__isl_keep isl_union_pw_multi_aff *upma, __isl_take isl_space *space);
892 __isl_export
893 isl_bool isl_union_pw_multi_aff_isa_pw_multi_aff(
894 	__isl_keep isl_union_pw_multi_aff *upma);
895 __isl_export
896 __isl_give isl_pw_multi_aff *isl_union_pw_multi_aff_as_pw_multi_aff(
897 	__isl_take isl_union_pw_multi_aff *upma);
898 
899 __isl_export
900 isl_bool isl_union_pw_multi_aff_plain_is_empty(
901 	__isl_keep isl_union_pw_multi_aff *upma);
902 __isl_export
903 isl_bool isl_union_pw_multi_aff_involves_locals(
904 	__isl_keep isl_union_pw_multi_aff *upma);
905 isl_bool isl_union_pw_multi_aff_involves_nan(
906 	__isl_keep isl_union_pw_multi_aff *upma);
907 isl_bool isl_union_pw_multi_aff_plain_is_equal(
908 	__isl_keep isl_union_pw_multi_aff *upma1,
909 	__isl_keep isl_union_pw_multi_aff *upma2);
910 
911 __isl_export
912 __isl_give isl_union_set *isl_union_pw_multi_aff_domain(
913 	__isl_take isl_union_pw_multi_aff *upma);
914 
915 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_neg(
916 	__isl_take isl_union_pw_multi_aff *upma);
917 
918 __isl_export
919 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_add(
920 	__isl_take isl_union_pw_multi_aff *upma1,
921 	__isl_take isl_union_pw_multi_aff *upma2);
922 __isl_export
923 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_union_add(
924 	__isl_take isl_union_pw_multi_aff *upma1,
925 	__isl_take isl_union_pw_multi_aff *upma2);
926 __isl_export
927 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_sub(
928 	__isl_take isl_union_pw_multi_aff *upma1,
929 	__isl_take isl_union_pw_multi_aff *upma2);
930 
931 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_scale_val(
932 	__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_val *val);
933 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_scale_down_val(
934 	__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_val *val);
935 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_scale_multi_val(
936 	__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_multi_val *mv);
937 
938 __isl_export
939 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_range_product(
940 	__isl_take isl_union_pw_multi_aff *upma1,
941 	__isl_take isl_union_pw_multi_aff *upma2);
942 __isl_export
943 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_flat_range_product(
944 	__isl_take isl_union_pw_multi_aff *upma1,
945 	__isl_take isl_union_pw_multi_aff *upma2);
946 __isl_export
947 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_range_factor_domain(
948 	__isl_take isl_union_pw_multi_aff *upma);
949 __isl_export
950 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_range_factor_range(
951 	__isl_take isl_union_pw_multi_aff *upma);
952 
953 __isl_export
954 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_intersect_params(
955 	__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_set *set);
956 __isl_overload
957 __isl_give isl_union_pw_multi_aff *
958 isl_union_pw_multi_aff_intersect_domain_union_set(
959 	__isl_take isl_union_pw_multi_aff *upma,
960 	__isl_take isl_union_set *uset);
961 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_intersect_domain(
962 	__isl_take isl_union_pw_multi_aff *upma,
963 	__isl_take isl_union_set *uset);
964 __isl_overload
965 __isl_give isl_union_pw_multi_aff *
966 isl_union_pw_multi_aff_intersect_domain_space(
967 	__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_space *space);
968 __isl_export
969 __isl_give isl_union_pw_multi_aff *
970 isl_union_pw_multi_aff_intersect_domain_wrapped_domain(
971 	__isl_take isl_union_pw_multi_aff *upma,
972 	__isl_take isl_union_set *uset);
973 __isl_export
974 __isl_give isl_union_pw_multi_aff *
975 isl_union_pw_multi_aff_intersect_domain_wrapped_range(
976 	__isl_take isl_union_pw_multi_aff *upma,
977 	__isl_take isl_union_set *uset);
978 __isl_overload
979 __isl_give isl_union_pw_multi_aff *
980 isl_union_pw_multi_aff_subtract_domain_union_set(
981 	__isl_take isl_union_pw_multi_aff *upma,
982 	__isl_take isl_union_set *uset);
983 __isl_overload
984 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_subtract_domain_space(
985 	__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_space *space);
986 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_subtract_domain(
987 	__isl_take isl_union_pw_multi_aff *upma,
988 	__isl_take isl_union_set *uset);
989 
990 __isl_overload
991 __isl_give isl_union_map *isl_union_map_from_union_pw_multi_aff(
992 	__isl_take isl_union_pw_multi_aff *upma);
993 
994 __isl_give isl_printer *isl_printer_print_union_pw_multi_aff(
995 	__isl_take isl_printer *p, __isl_keep isl_union_pw_multi_aff *upma);
996 
997 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_set(
998 	__isl_take isl_union_set *uset);
999 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_map(
1000 	__isl_take isl_union_map *umap);
1001 
1002 __isl_constructor
1003 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_read_from_str(
1004 	isl_ctx *ctx, const char *str);
1005 void isl_union_pw_multi_aff_dump(__isl_keep isl_union_pw_multi_aff *upma);
1006 __isl_give char *isl_union_pw_multi_aff_to_str(
1007 	__isl_keep isl_union_pw_multi_aff *upma);
1008 
1009 uint32_t isl_multi_pw_aff_get_hash(__isl_keep isl_multi_pw_aff *mpa);
1010 
1011 __isl_constructor
1012 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_aff(__isl_take isl_aff *aff);
1013 __isl_constructor
1014 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_multi_aff(
1015 	__isl_take isl_multi_aff *ma);
1016 __isl_constructor
1017 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_pw_aff(
1018 	__isl_take isl_pw_aff *pa);
1019 __isl_export
1020 __isl_give isl_set *isl_multi_pw_aff_domain(__isl_take isl_multi_pw_aff *mpa);
1021 __isl_export
1022 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_intersect_params(
1023 	__isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set);
1024 __isl_export
1025 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_intersect_domain(
1026 	__isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *domain);
1027 
1028 __isl_export
1029 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_coalesce(
1030 	__isl_take isl_multi_pw_aff *mpa);
1031 __isl_export
1032 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_gist(
1033 	__isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set);
1034 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_gist_params(
1035 	__isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set);
1036 
1037 isl_bool isl_multi_pw_aff_is_cst(__isl_keep isl_multi_pw_aff *mpa);
1038 isl_bool isl_multi_pw_aff_is_equal(__isl_keep isl_multi_pw_aff *mpa1,
1039 	__isl_keep isl_multi_pw_aff *mpa2);
1040 
1041 __isl_overload
1042 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_pullback_multi_aff(
1043 	__isl_take isl_multi_pw_aff *mpa, __isl_take isl_multi_aff *ma);
1044 __isl_overload
1045 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_pullback_pw_multi_aff(
1046 	__isl_take isl_multi_pw_aff *mpa, __isl_take isl_pw_multi_aff *pma);
1047 __isl_overload
1048 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_pullback_multi_pw_aff(
1049 	__isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2);
1050 
1051 __isl_export
1052 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_union_add(
1053 	__isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2);
1054 
1055 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_move_dims(
1056 	__isl_take isl_multi_pw_aff *pma,
1057 	enum isl_dim_type dst_type, unsigned dst_pos,
1058 	enum isl_dim_type src_type, unsigned src_pos, unsigned n);
1059 
1060 __isl_give isl_set *isl_set_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa);
1061 __isl_give isl_map *isl_map_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa);
1062 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_multi_pw_aff(
1063 	__isl_take isl_multi_pw_aff *mpa);
1064 __isl_constructor
1065 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_pw_multi_aff(
1066 	__isl_take isl_pw_multi_aff *pma);
1067 
1068 __isl_give isl_map *isl_multi_pw_aff_eq_map(__isl_take isl_multi_pw_aff *mpa1,
1069 	__isl_take isl_multi_pw_aff *mpa2);
1070 __isl_give isl_map *isl_multi_pw_aff_lex_le_map(
1071 	__isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2);
1072 __isl_give isl_map *isl_multi_pw_aff_lex_lt_map(
1073 	__isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2);
1074 __isl_give isl_map *isl_multi_pw_aff_lex_ge_map(
1075 	__isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2);
1076 __isl_give isl_map *isl_multi_pw_aff_lex_gt_map(
1077 	__isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2);
1078 
1079 __isl_export
1080 __isl_give isl_set *isl_multi_pw_aff_bind(__isl_take isl_multi_pw_aff *mpa,
1081 	__isl_take isl_multi_id *tuple);
1082 
1083 __isl_constructor
1084 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_read_from_str(isl_ctx *ctx,
1085 	const char *str);
1086 __isl_give char *isl_multi_pw_aff_to_str(__isl_keep isl_multi_pw_aff *mpa);
1087 __isl_give isl_printer *isl_printer_print_multi_pw_aff(
1088 	__isl_take isl_printer *p, __isl_keep isl_multi_pw_aff *mpa);
1089 void isl_multi_pw_aff_dump(__isl_keep isl_multi_pw_aff *mpa);
1090 
1091 __isl_give isl_union_pw_aff *isl_union_pw_aff_copy(
1092 	__isl_keep isl_union_pw_aff *upa);
1093 __isl_null isl_union_pw_aff *isl_union_pw_aff_free(
1094 	__isl_take isl_union_pw_aff *upa);
1095 
1096 isl_ctx *isl_union_pw_aff_get_ctx(__isl_keep isl_union_pw_aff *upa);
1097 __isl_export
1098 __isl_give isl_space *isl_union_pw_aff_get_space(
1099 	__isl_keep isl_union_pw_aff *upa);
1100 __isl_give isl_pw_aff_list *isl_union_pw_aff_get_pw_aff_list(
1101 	__isl_keep isl_union_pw_aff *upa);
1102 
1103 isl_size isl_union_pw_aff_dim(__isl_keep isl_union_pw_aff *upa,
1104 	enum isl_dim_type type);
1105 __isl_give isl_union_pw_aff *isl_union_pw_aff_set_dim_name(
1106 	__isl_take isl_union_pw_aff *upa, enum isl_dim_type type,
1107 	unsigned pos, const char *s);
1108 
1109 int isl_union_pw_aff_find_dim_by_name(__isl_keep isl_union_pw_aff *upa,
1110 	enum isl_dim_type type, const char *name);
1111 
1112 __isl_give isl_union_pw_aff *isl_union_pw_aff_drop_dims(
1113 	__isl_take isl_union_pw_aff *upa,
1114 	enum isl_dim_type type, unsigned first, unsigned n);
1115 __isl_give isl_union_pw_aff *isl_union_pw_aff_reset_user(
1116 	__isl_take isl_union_pw_aff *upa);
1117 
1118 __isl_give isl_union_pw_aff *isl_union_pw_aff_empty_ctx(isl_ctx *ctx);
1119 __isl_give isl_union_pw_aff *isl_union_pw_aff_empty_space(
1120 	__isl_take isl_space *space);
1121 __isl_give isl_union_pw_aff *isl_union_pw_aff_empty(
1122 	__isl_take isl_space *space);
1123 __isl_constructor
1124 __isl_give isl_union_pw_aff *isl_union_pw_aff_from_aff(__isl_take isl_aff *aff);
1125 __isl_constructor
1126 __isl_give isl_union_pw_aff *isl_union_pw_aff_from_pw_aff(
1127 	__isl_take isl_pw_aff *pa);
1128 __isl_give isl_union_pw_aff *isl_union_pw_aff_val_on_domain(
1129 	__isl_take isl_union_set *domain, __isl_take isl_val *v);
1130 __isl_give isl_union_pw_aff *isl_union_pw_aff_aff_on_domain(
1131 	__isl_take isl_union_set *domain, __isl_take isl_aff *aff);
1132 __isl_give isl_union_pw_aff *isl_union_pw_aff_pw_aff_on_domain(
1133 	__isl_take isl_union_set *domain, __isl_take isl_pw_aff *pa);
1134 __isl_give isl_union_pw_aff *isl_union_pw_aff_add_pw_aff(
1135 	__isl_take isl_union_pw_aff *upa, __isl_take isl_pw_aff *pa);
1136 
1137 __isl_constructor
1138 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_pw_aff(
1139 	__isl_take isl_union_pw_aff *upa);
1140 
1141 isl_size isl_union_pw_aff_n_pw_aff(__isl_keep isl_union_pw_aff *upa);
1142 
1143 isl_stat isl_union_pw_aff_foreach_pw_aff(__isl_keep isl_union_pw_aff *upa,
1144 	isl_stat (*fn)(__isl_take isl_pw_aff *pa, void *user), void *user);
1145 isl_bool isl_union_pw_aff_every_pw_aff(__isl_keep isl_union_pw_aff *upa,
1146 	isl_bool (*test)(__isl_keep isl_pw_aff *pa, void *user), void *user);
1147 __isl_give isl_pw_aff *isl_union_pw_aff_extract_pw_aff(
1148 	__isl_keep isl_union_pw_aff *upa, __isl_take isl_space *space);
1149 
1150 isl_bool isl_union_pw_aff_involves_nan(__isl_keep isl_union_pw_aff *upa);
1151 isl_bool isl_union_pw_aff_plain_is_equal(__isl_keep isl_union_pw_aff *upa1,
1152 	__isl_keep isl_union_pw_aff *upa2);
1153 
1154 __isl_export
1155 __isl_give isl_union_set *isl_union_pw_aff_domain(
1156 	__isl_take isl_union_pw_aff *upa);
1157 
1158 __isl_give isl_union_pw_aff *isl_union_pw_aff_neg(
1159 	__isl_take isl_union_pw_aff *upa);
1160 
1161 __isl_export
1162 __isl_give isl_union_pw_aff *isl_union_pw_aff_add(
1163 	__isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2);
1164 __isl_export
1165 __isl_give isl_union_pw_aff *isl_union_pw_aff_union_add(
1166 	__isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2);
1167 __isl_export
1168 __isl_give isl_union_pw_aff *isl_union_pw_aff_sub(
1169 	__isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2);
1170 
1171 __isl_export
1172 __isl_give isl_union_pw_aff *isl_union_pw_aff_coalesce(
1173 	__isl_take isl_union_pw_aff *upa);
1174 __isl_export
1175 __isl_give isl_union_pw_aff *isl_union_pw_aff_gist(
1176 	__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *context);
1177 __isl_give isl_union_pw_aff *isl_union_pw_aff_gist_params(
1178 	__isl_take isl_union_pw_aff *upa, __isl_take isl_set *context);
1179 
1180 __isl_overload
1181 __isl_give isl_union_pw_aff *isl_union_pw_aff_pullback_union_pw_multi_aff(
1182 	__isl_take isl_union_pw_aff *upa,
1183 	__isl_take isl_union_pw_multi_aff *upma);
1184 
1185 __isl_give isl_union_pw_aff *isl_union_pw_aff_floor(
1186 	__isl_take isl_union_pw_aff *upa);
1187 
1188 __isl_give isl_union_pw_aff *isl_union_pw_aff_scale_val(
1189 	__isl_take isl_union_pw_aff *upa, __isl_take isl_val *v);
1190 __isl_give isl_union_pw_aff *isl_union_pw_aff_scale_down_val(
1191 	__isl_take isl_union_pw_aff *upa, __isl_take isl_val *v);
1192 __isl_give isl_union_pw_aff *isl_union_pw_aff_mod_val(
1193 	__isl_take isl_union_pw_aff *upa, __isl_take isl_val *f);
1194 
1195 __isl_give isl_union_pw_aff *isl_union_pw_aff_align_params(
1196 	__isl_take isl_union_pw_aff *upa, __isl_take isl_space *model);
1197 
1198 __isl_export
1199 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_params(
1200 	__isl_take isl_union_pw_aff *upa, __isl_take isl_set *set);
1201 __isl_overload
1202 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain_space(
1203 	__isl_take isl_union_pw_aff *upa, __isl_take isl_space *space);
1204 __isl_overload
1205 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain_union_set(
1206 	__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset);
1207 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain(
1208 	__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset);
1209 __isl_export
1210 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain_wrapped_domain(
1211 	__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset);
1212 __isl_export
1213 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain_wrapped_range(
1214 	__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset);
1215 __isl_overload
1216 __isl_give isl_union_pw_aff *isl_union_pw_aff_subtract_domain_union_set(
1217 	__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset);
1218 __isl_overload
1219 __isl_give isl_union_pw_aff *isl_union_pw_aff_subtract_domain_space(
1220 	__isl_take isl_union_pw_aff *upa, __isl_take isl_space *space);
1221 __isl_give isl_union_pw_aff *isl_union_pw_aff_subtract_domain(
1222 	__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset);
1223 
1224 __isl_give isl_union_pw_aff *isl_union_pw_aff_set_dim_name(
1225 	__isl_take isl_union_pw_aff *upa,
1226 	enum isl_dim_type type, unsigned pos, const char *s);
1227 
1228 __isl_give isl_union_set *isl_union_pw_aff_zero_union_set(
1229 	__isl_take isl_union_pw_aff *upa);
1230 
1231 __isl_give isl_union_map *isl_union_map_from_union_pw_aff(
1232 	__isl_take isl_union_pw_aff *upa);
1233 
1234 __isl_overload
1235 __isl_give isl_union_set *isl_union_pw_aff_bind_id(
1236 	__isl_take isl_union_pw_aff *upa, __isl_take isl_id *id);
1237 
1238 __isl_constructor
1239 __isl_give isl_union_pw_aff *isl_union_pw_aff_read_from_str(isl_ctx *ctx,
1240 	const char *str);
1241 __isl_give char *isl_union_pw_aff_to_str(__isl_keep isl_union_pw_aff *upa);
1242 __isl_give isl_printer *isl_printer_print_union_pw_aff(
1243 	__isl_take isl_printer *p, __isl_keep isl_union_pw_aff *upa);
1244 void isl_union_pw_aff_dump(__isl_keep isl_union_pw_aff *upa);
1245 
1246 ISL_DECLARE_MULTI(union_pw_aff)
1247 ISL_DECLARE_MULTI_ARITH(union_pw_aff)
1248 ISL_DECLARE_MULTI_ZERO(union_pw_aff)
1249 ISL_DECLARE_MULTI_NAN(union_pw_aff)
1250 ISL_DECLARE_MULTI_DROP_DIMS(union_pw_aff)
1251 ISL_DECLARE_MULTI_DIM_ID(union_pw_aff)
1252 ISL_DECLARE_MULTI_TUPLE_ID(union_pw_aff)
1253 
1254 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_multi_aff(
1255 	__isl_take isl_multi_aff *ma);
1256 __isl_constructor
1257 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_union_pw_aff(
1258 	__isl_take isl_union_pw_aff *upa);
1259 __isl_constructor
1260 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_multi_pw_aff(
1261 	__isl_take isl_multi_pw_aff *mpa);
1262 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_multi_val_on_domain(
1263 	__isl_take isl_union_set *domain, __isl_take isl_multi_val *mv);
1264 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_multi_aff_on_domain(
1265 	__isl_take isl_union_set *domain, __isl_take isl_multi_aff *ma);
1266 __isl_give isl_multi_union_pw_aff *
1267 isl_multi_union_pw_aff_pw_multi_aff_on_domain(__isl_take isl_union_set *domain,
1268 	__isl_take isl_pw_multi_aff *pma);
1269 
1270 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_floor(
1271 	__isl_take isl_multi_union_pw_aff *mupa);
1272 
1273 __isl_export
1274 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_intersect_domain(
1275 	__isl_take isl_multi_union_pw_aff *mupa,
1276 	__isl_take isl_union_set *uset);
1277 __isl_export
1278 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_intersect_params(
1279 	__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_set *params);
1280 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_intersect_range(
1281 	__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_set *set);
1282 
1283 __isl_export
1284 __isl_give isl_union_set *isl_multi_union_pw_aff_domain(
1285 	__isl_take isl_multi_union_pw_aff *mupa);
1286 
1287 __isl_export
1288 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_coalesce(
1289 	__isl_take isl_multi_union_pw_aff *mupa);
1290 __isl_export
1291 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_gist(
1292 	__isl_take isl_multi_union_pw_aff *mupa,
1293 	__isl_take isl_union_set *context);
1294 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_gist_params(
1295 	__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_set *context);
1296 
1297 __isl_give isl_union_pw_aff *isl_multi_union_pw_aff_apply_aff(
1298 	__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_aff *aff);
1299 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_apply_multi_aff(
1300 	__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_multi_aff *ma);
1301 __isl_give isl_union_pw_aff *isl_multi_union_pw_aff_apply_pw_aff(
1302 	__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_pw_aff *pa);
1303 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_apply_pw_multi_aff(
1304 	__isl_take isl_multi_union_pw_aff *mupa,
1305 	__isl_take isl_pw_multi_aff *pma);
1306 
1307 __isl_overload
1308 __isl_give isl_multi_union_pw_aff *
1309 isl_multi_union_pw_aff_pullback_union_pw_multi_aff(
1310 	__isl_take isl_multi_union_pw_aff *mupa,
1311 	__isl_take isl_union_pw_multi_aff *upma);
1312 
1313 __isl_give isl_union_pw_multi_aff *
1314 isl_union_pw_multi_aff_from_multi_union_pw_aff(
1315 	__isl_take isl_multi_union_pw_aff *mupa);
1316 
1317 __isl_export
1318 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_union_add(
1319 	__isl_take isl_multi_union_pw_aff *mupa1,
1320 	__isl_take isl_multi_union_pw_aff *mupa2);
1321 
1322 __isl_give isl_multi_union_pw_aff *
1323 isl_multi_union_pw_aff_from_union_pw_multi_aff(
1324 	__isl_take isl_union_pw_multi_aff *upma);
1325 
1326 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_union_map(
1327 	__isl_take isl_union_map *umap);
1328 __isl_overload
1329 __isl_give isl_union_map *isl_union_map_from_multi_union_pw_aff(
1330 	__isl_take isl_multi_union_pw_aff *mupa);
1331 
1332 __isl_give isl_union_set *isl_multi_union_pw_aff_zero_union_set(
1333 	__isl_take isl_multi_union_pw_aff *mupa);
1334 __isl_export
1335 __isl_give isl_union_set *isl_multi_union_pw_aff_bind(
1336 	__isl_take isl_multi_union_pw_aff *mupa,
1337 	__isl_take isl_multi_id *tuple);
1338 
1339 __isl_give isl_multi_pw_aff *isl_multi_union_pw_aff_extract_multi_pw_aff(
1340 	__isl_keep isl_multi_union_pw_aff *mupa, __isl_take isl_space *space);
1341 
1342 __isl_constructor
1343 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_read_from_str(
1344 	isl_ctx *ctx, const char *str);
1345 __isl_give char *isl_multi_union_pw_aff_to_str(
1346 	__isl_keep isl_multi_union_pw_aff *mupa);
1347 __isl_give isl_printer *isl_printer_print_multi_union_pw_aff(
1348 	__isl_take isl_printer *p, __isl_keep isl_multi_union_pw_aff *mupa);
1349 void isl_multi_union_pw_aff_dump(__isl_keep isl_multi_union_pw_aff *mupa);
1350 
1351 ISL_DECLARE_EXPORTED_LIST_FN(aff)
1352 ISL_DECLARE_EXPORTED_LIST_FN(pw_aff)
1353 ISL_DECLARE_EXPORTED_LIST_FN(pw_multi_aff)
1354 ISL_DECLARE_EXPORTED_LIST_FN(union_pw_aff)
1355 ISL_DECLARE_LIST_FN(union_pw_multi_aff)
1356 
1357 #if defined(__cplusplus)
1358 }
1359 #endif
1360 
1361 #endif
1362