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