Lines Matching +full:- +full:p
2 * Copyright 2008-2009 Katholieke Universiteit Leuven
4 * Copyright 2012-2013 Ecole Normale Superieure
10 * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium
11 * and INRIA Saclay - Ile-de-France, Parc Club Orsay Universite,
45 static const char *s_to[2] = { " -> ", " \\to " };
59 static const char *s_param_prefix[2] = { "p", "p_" };
64 struct isl_basic_map *bmap, int ineq, int n, __isl_take isl_printer *p) in print_constraint_polylib() argument
70 isl_int *c = ineq ? bmap->ineq[n] : bmap->eq[n]; in print_constraint_polylib()
73 return isl_printer_free(p); in print_constraint_polylib()
75 p = isl_printer_start_line(p); in print_constraint_polylib()
76 p = isl_printer_print_int(p, ineq); in print_constraint_polylib()
78 p = isl_printer_print_str(p, " "); in print_constraint_polylib()
79 p = isl_printer_print_isl_int(p, c[1+nparam+n_in+i]); in print_constraint_polylib()
82 p = isl_printer_print_str(p, " "); in print_constraint_polylib()
83 p = isl_printer_print_isl_int(p, c[1+nparam+i]); in print_constraint_polylib()
85 for (i = 0; i < bmap->n_div; ++i) { in print_constraint_polylib()
86 p = isl_printer_print_str(p, " "); in print_constraint_polylib()
87 p = isl_printer_print_isl_int(p, c[1+nparam+n_in+n_out+i]); in print_constraint_polylib()
90 p = isl_printer_print_str(p, " "); in print_constraint_polylib()
91 p = isl_printer_print_isl_int(p, c[1+i]); in print_constraint_polylib()
93 p = isl_printer_print_str(p, " "); in print_constraint_polylib()
94 p = isl_printer_print_isl_int(p, c[0]); in print_constraint_polylib()
95 p = isl_printer_end_line(p); in print_constraint_polylib()
96 return p; in print_constraint_polylib()
100 struct isl_basic_map *bmap, __isl_take isl_printer *p) in print_constraints_polylib() argument
104 p = isl_printer_set_isl_int_width(p, 5); in print_constraints_polylib()
106 for (i = 0; i < bmap->n_eq; ++i) in print_constraints_polylib()
107 p = print_constraint_polylib(bmap, 0, i, p); in print_constraints_polylib()
108 for (i = 0; i < bmap->n_ineq; ++i) in print_constraints_polylib()
109 p = print_constraint_polylib(bmap, 1, i, p); in print_constraints_polylib()
111 return p; in print_constraints_polylib()
115 struct isl_basic_set *bset, __isl_take isl_printer *p) in bset_print_constraints_polylib() argument
117 return print_constraints_polylib(bset_to_bmap(bset), p); in bset_print_constraints_polylib()
121 __isl_keep isl_basic_map *bmap, __isl_take isl_printer *p, int ext) in isl_basic_map_print_polylib() argument
127 return isl_printer_free(p); in isl_basic_map_print_polylib()
128 p = isl_printer_start_line(p); in isl_basic_map_print_polylib()
129 p = isl_printer_print_int(p, bmap->n_eq + bmap->n_ineq); in isl_basic_map_print_polylib()
130 p = isl_printer_print_str(p, " "); in isl_basic_map_print_polylib()
131 p = isl_printer_print_int(p, 1 + total + 1); in isl_basic_map_print_polylib()
139 return isl_printer_free(p); in isl_basic_map_print_polylib()
141 p = isl_printer_print_str(p, " "); in isl_basic_map_print_polylib()
142 p = isl_printer_print_int(p, n_out); in isl_basic_map_print_polylib()
143 p = isl_printer_print_str(p, " "); in isl_basic_map_print_polylib()
144 p = isl_printer_print_int(p, n_in); in isl_basic_map_print_polylib()
145 p = isl_printer_print_str(p, " "); in isl_basic_map_print_polylib()
146 p = isl_printer_print_int(p, n_div); in isl_basic_map_print_polylib()
147 p = isl_printer_print_str(p, " "); in isl_basic_map_print_polylib()
148 p = isl_printer_print_int(p, nparam); in isl_basic_map_print_polylib()
150 p = isl_printer_end_line(p); in isl_basic_map_print_polylib()
151 return print_constraints_polylib(bmap, p); in isl_basic_map_print_polylib()
155 __isl_keep isl_basic_set *bset, __isl_take isl_printer *p, int ext) in isl_basic_set_print_polylib() argument
157 return isl_basic_map_print_polylib(bset_to_bmap(bset), p, ext); in isl_basic_set_print_polylib()
161 __isl_take isl_printer *p, int ext) in isl_map_print_polylib() argument
165 p = isl_printer_start_line(p); in isl_map_print_polylib()
166 p = isl_printer_print_int(p, map->n); in isl_map_print_polylib()
167 p = isl_printer_end_line(p); in isl_map_print_polylib()
168 for (i = 0; i < map->n; ++i) { in isl_map_print_polylib()
169 p = isl_printer_start_line(p); in isl_map_print_polylib()
170 p = isl_printer_end_line(p); in isl_map_print_polylib()
171 p = isl_basic_map_print_polylib(map->p[i], p, ext); in isl_map_print_polylib()
173 return p; in isl_map_print_polylib()
177 __isl_take isl_printer *p, int ext) in isl_set_print_polylib() argument
179 return isl_map_print_polylib(set_to_map(set), p, ext); in isl_set_print_polylib()
186 int p; in count_same_name() local
194 for (p = 0; p < s; ++p) { in count_same_name()
195 const char *n = isl_space_get_dim_name(space, t, p); in count_same_name()
204 * in "space" to "p".
207 __isl_take isl_printer *p, enum isl_dim_type type, unsigned pos, in print_name() argument
233 return isl_printer_free(p); in print_name()
234 p = isl_printer_print_str(p, name); in print_name()
235 while (primes-- > 0) in print_name()
236 p = isl_printer_print_str(p, "'"); in print_name()
237 return p; in print_name()
252 *pos -= 1; in pos2type()
255 *pos -= 1 + nparam; in pos2type()
258 *pos -= 1 + nparam + n_in; in pos2type()
261 *pos -= 1 + nparam + n_in + n_out; in pos2type()
274 static isl_bool can_print_div_expr(__isl_keep isl_printer *p, in can_print_div_expr() argument
277 if (p->output_format == ISL_FORMAT_OMEGA) in can_print_div_expr()
285 __isl_keep isl_mat *div, int pos, __isl_take isl_printer *p);
289 isl_int c, unsigned pos, __isl_take isl_printer *p, int latex) in print_term() argument
294 if (!p || !space) in print_term()
295 return isl_printer_free(p); in print_term()
298 return isl_printer_print_isl_int(p, c); in print_term()
301 return isl_printer_free(p); in print_term()
302 print_div_def = type == isl_dim_div && can_print_div_expr(p, div, pos); in print_term()
307 p = isl_printer_print_str(p, "-"); in print_term()
309 p = isl_printer_print_isl_int(p, c); in print_term()
310 if (p->output_format == ISL_FORMAT_C || print_div_def) in print_term()
311 p = isl_printer_print_str(p, "*"); in print_term()
314 p = print_div(space, div, pos, p); in print_term()
316 p = print_name(space, p, type, pos, latex); in print_term()
317 return p; in print_term()
322 __isl_take isl_printer *p, isl_int *c, int len) in print_affine_of_len() argument
335 p = isl_printer_print_str(p, " - "); in print_affine_of_len()
337 p = isl_printer_print_str(p, " + "); in print_affine_of_len()
340 p = print_term(space, div, c[i], i, p, 0); in print_affine_of_len()
345 p = isl_printer_print_str(p, "0"); in print_affine_of_len()
346 return p; in print_affine_of_len()
350 * to "p", with the variable names taken from "space" and
353 static __isl_give isl_printer *print_affine(__isl_take isl_printer *p, in print_affine() argument
362 return isl_printer_free(p); in print_affine()
364 return print_affine_of_len(space, div, p, c, len); in print_affine()
367 /* offset is the offset of local_space inside data->type of data->space.
369 static __isl_give isl_printer *print_nested_var_list(__isl_take isl_printer *p, in print_nested_var_list() argument
376 if (data->space != local_space && local_type == isl_dim_out) in print_nested_var_list()
377 offset += local_space->n_in; in print_nested_var_list()
381 return isl_printer_free(p); in print_nested_var_list()
384 p = isl_printer_print_str(p, ", "); in print_nested_var_list()
385 if (data->print_dim) in print_nested_var_list()
386 p = data->print_dim(p, data, offset + i); in print_nested_var_list()
388 p = print_name(data->space, p, data->type, offset + i, in print_nested_var_list()
389 data->latex); in print_nested_var_list()
391 return p; in print_nested_var_list()
394 static __isl_give isl_printer *print_var_list(__isl_take isl_printer *p, in print_var_list() argument
399 return print_nested_var_list(p, space, type, &data, 0); in print_var_list()
402 static __isl_give isl_printer *print_nested_map_dim(__isl_take isl_printer *p,
406 static __isl_give isl_printer *print_nested_tuple(__isl_take isl_printer *p, in print_nested_tuple() argument
414 return isl_printer_free(p); in print_nested_tuple()
418 if (data->latex) in print_nested_tuple()
419 p = isl_printer_print_str(p, "\\mathrm{"); in print_nested_tuple()
420 p = isl_printer_print_str(p, name); in print_nested_tuple()
421 if (data->latex) in print_nested_tuple()
422 p = isl_printer_print_str(p, "}"); in print_nested_tuple()
425 if (!data->latex || n != 1 || name) in print_nested_tuple()
426 p = isl_printer_print_str(p, s_open_list[data->latex]); in print_nested_tuple()
428 local_space->nested[local_type - isl_dim_in]) { in print_nested_tuple()
429 if (data->space != local_space && local_type == isl_dim_out) in print_nested_tuple()
430 offset += local_space->n_in; in print_nested_tuple()
431 p = print_nested_map_dim(p, in print_nested_tuple()
432 local_space->nested[local_type - isl_dim_in], in print_nested_tuple()
435 p = print_nested_var_list(p, local_space, local_type, data, in print_nested_tuple()
437 if (!data->latex || n != 1 || name) in print_nested_tuple()
438 p = isl_printer_print_str(p, s_close_list[data->latex]); in print_nested_tuple()
439 return p; in print_nested_tuple()
443 __isl_take isl_printer *p, enum isl_dim_type type, in print_tuple() argument
446 data->space = space; in print_tuple()
447 data->type = type; in print_tuple()
448 return print_nested_tuple(p, space, type, data, 0); in print_tuple()
451 static __isl_give isl_printer *print_nested_map_dim(__isl_take isl_printer *p, in print_nested_map_dim() argument
455 p = print_nested_tuple(p, local_dim, isl_dim_in, data, offset); in print_nested_map_dim()
456 p = isl_printer_print_str(p, s_to[data->latex]); in print_nested_map_dim()
457 p = print_nested_tuple(p, local_dim, isl_dim_out, data, offset); in print_nested_map_dim()
459 return p; in print_nested_map_dim()
463 __isl_take isl_printer *p, int rational, in isl_print_space() argument
466 if (rational && !data->latex) in isl_print_space()
467 p = isl_printer_print_str(p, "rat: "); in isl_print_space()
471 p = print_tuple(space, p, isl_dim_set, data); in isl_print_space()
473 p = print_tuple(space, p, isl_dim_in, data); in isl_print_space()
474 p = isl_printer_print_str(p, s_to[data->latex]); in isl_print_space()
475 p = print_tuple(space, p, isl_dim_out, data); in isl_print_space()
478 return p; in isl_print_space()
482 __isl_keep isl_space *space, __isl_take isl_printer *p) in print_omega_parameters() argument
487 return isl_printer_free(p); in print_omega_parameters()
489 return p; in print_omega_parameters()
491 p = isl_printer_start_line(p); in print_omega_parameters()
492 p = isl_printer_print_str(p, "symbolic "); in print_omega_parameters()
493 p = print_var_list(p, space, isl_dim_param); in print_omega_parameters()
494 p = isl_printer_print_str(p, ";"); in print_omega_parameters()
495 p = isl_printer_end_line(p); in print_omega_parameters()
496 return p; in print_omega_parameters()
514 if (i + 1 >= bmap->n_ineq) in next_is_opposite()
516 if (isl_seq_last_non_zero(bmap->ineq[i + 1], 1 + total) != last) in next_is_opposite()
521 bmap->ineq[i + 1], last - o_div); in next_is_opposite()
527 r = isl_int_abs_eq(bmap->ineq[i][last], bmap->ineq[i + 1][last]) && in next_is_opposite()
528 !isl_int_eq(bmap->ineq[i][last], bmap->ineq[i + 1][last]); in next_is_opposite()
548 /* Print one side of a constraint "c" to "p", with
551 * "last" is the position of the last non-zero coefficient.
559 static __isl_give isl_printer *print_half_constraint(__isl_take isl_printer *p, in print_half_constraint() argument
564 p = print_affine(p, space, div, c); in print_half_constraint()
566 p = isl_printer_print_str(p, " "); in print_half_constraint()
567 p = isl_printer_print_str(p, op); in print_half_constraint()
568 p = isl_printer_print_str(p, " "); in print_half_constraint()
570 return p; in print_half_constraint()
573 /* Print a constraint "c" to "p", with the variable names
575 * "last" is the position of the last non-zero coefficient, which is
580 * -c[last] op c'
582 static __isl_give isl_printer *print_constraint(__isl_take isl_printer *p, in print_constraint() argument
588 p = print_term(space, div, c[last], last, p, latex); in print_constraint()
590 p = isl_printer_print_str(p, " "); in print_constraint()
591 p = isl_printer_print_str(p, op); in print_constraint()
592 p = isl_printer_print_str(p, " "); in print_constraint()
595 p = print_affine(p, space, div, c); in print_constraint()
597 return p; in print_constraint()
608 * to "p". The variable names are taken from "space", while any
611 static __isl_give isl_printer *print_mod(__isl_take isl_printer *p, in print_mod() argument
615 if (!p || !div) in print_mod()
616 return isl_printer_free(p); in print_mod()
618 p = isl_printer_print_str(p, "("); in print_mod()
619 p = print_affine_of_len(space, div, p, in print_mod()
620 div->row[pos] + 1, div->n_col - 1); in print_mod()
621 p = isl_printer_print_str(p, ") "); in print_mod()
622 p = isl_printer_print_str(p, s_mod[latex]); in print_mod()
623 p = isl_printer_print_str(p, " "); in print_mod()
624 p = isl_printer_print_isl_int(p, div->row[pos][0]); in print_mod()
625 return p; in print_mod()
628 /* Given an equality constraint with a non-zero coefficient "c"
643 static isl_size print_as_modulo_pos(__isl_keep isl_printer *p, in print_as_modulo_pos() argument
652 if (!p || !space || n_div < 0) in print_as_modulo_pos()
654 if (p->output_format == ISL_FORMAT_C) in print_as_modulo_pos()
660 can_print = can_print_div_expr(p, div, pos); in print_as_modulo_pos()
665 if (!isl_int_is_divisible_by(c, div->row[pos][0])) in print_as_modulo_pos()
670 /* Print equality constraint "c" to "p" as a modulo constraint,
673 * "last" is the position of the last non-zero coefficient, which is
680 * f - a m floor(g/m) = 0.
684 * a (g mod m) = -f + a g
687 __isl_take isl_printer *p, __isl_keep isl_space *space, in print_eq_mod_constraint() argument
694 ctx = isl_printer_get_ctx(p); in print_eq_mod_constraint()
695 isl_int_divexact(c[last], c[last], div->row[div_pos][0]); in print_eq_mod_constraint()
699 p = isl_printer_print_isl_int(p, c[last]); in print_eq_mod_constraint()
700 p = isl_printer_print_str(p, "*("); in print_eq_mod_constraint()
702 p = print_mod(p, space, div, div_pos, latex); in print_eq_mod_constraint()
704 p = isl_printer_print_str(p, ")"); in print_eq_mod_constraint()
705 p = isl_printer_print_str(p, " = "); in print_eq_mod_constraint()
706 isl_seq_combine(c, ctx->negone, c, in print_eq_mod_constraint()
707 c[last], div->row[div_pos] + 1, last); in print_eq_mod_constraint()
709 p = print_affine(p, space, div, c); in print_eq_mod_constraint()
710 return p; in print_eq_mod_constraint()
713 /* Print equality constraint "c" to "p", with the variable names
715 * "last" is the position of the last non-zero coefficient, which is
720 static __isl_give isl_printer *print_eq_constraint(__isl_take isl_printer *p, in print_eq_constraint() argument
728 div_pos = print_as_modulo_pos(p, space, div, last, c[last]); in print_eq_constraint()
730 return isl_printer_free(p); in print_eq_constraint()
732 return print_eq_mod_constraint(p, space, div, div_pos, in print_eq_constraint()
734 return print_constraint(p, space, div, c, last, "=", latex); in print_eq_constraint()
737 /* Print the constraints of "bmap" to "p".
743 * If x is the last variable with a non-zero coefficient,
746 * f - a x >= 0
758 * a x >= -f
767 * -f <= a x
773 * If the constant term of "f" is -1, then "f" is replaced by "f + 1" and
779 __isl_take isl_printer *p, int latex) in print_constraints() argument
789 if (total < 0 || !p) in print_constraints()
790 return isl_printer_free(p); in print_constraints()
792 dump = p->dump; in print_constraints()
798 c = isl_vec_alloc(bmap->ctx, 1 + total); in print_constraints()
802 for (i = bmap->n_eq - 1; i >= 0; --i) { in print_constraints()
803 int l = isl_seq_last_non_zero(bmap->eq[i], 1 + total); in print_constraints()
805 if (i != bmap->n_eq - 1) in print_constraints()
806 p = isl_printer_print_str(p, s_and[latex]); in print_constraints()
807 p = isl_printer_print_str(p, "0 = 0"); in print_constraints()
811 p = isl_printer_print_str(p, s_and[latex]); in print_constraints()
812 if (isl_int_is_neg(bmap->eq[i][l])) in print_constraints()
813 isl_seq_cpy(c->el, bmap->eq[i], 1 + total); in print_constraints()
815 isl_seq_neg(c->el, bmap->eq[i], 1 + total); in print_constraints()
816 p = print_eq_constraint(p, space, div, c->el, l, latex); in print_constraints()
819 for (i = 0; i < bmap->n_ineq; ++i) { in print_constraints()
821 int l = isl_seq_last_non_zero(bmap->ineq[i], 1 + total); in print_constraints()
828 can_print_div_expr(p, div, l - o_div)) { in print_constraints()
831 bmap->ineq[i], l - o_div); in print_constraints()
838 p = isl_printer_print_str(p, s_and[latex]); in print_constraints()
839 s = isl_int_sgn(bmap->ineq[i][l]); in print_constraints()
840 strict = !rational && isl_int_is_negone(bmap->ineq[i][0]); in print_constraints()
842 isl_seq_cpy(c->el, bmap->ineq[i], 1 + total); in print_constraints()
844 isl_seq_neg(c->el, bmap->ineq[i], 1 + total); in print_constraints()
846 isl_int_set_si(c->el[0], 0); in print_constraints()
851 op = constraint_op(-s, strict, latex); in print_constraints()
852 p = print_half_constraint(p, space, div, c->el, l, in print_constraints()
857 p = print_constraint(p, space, div, c->el, l, in print_constraints()
866 return p; in print_constraints()
870 isl_printer_free(p); in print_constraints()
875 __isl_keep isl_mat *div, int pos, __isl_take isl_printer *p) in print_div() argument
879 if (!p || !div) in print_div()
880 return isl_printer_free(p); in print_div()
882 c = p->output_format == ISL_FORMAT_C; in print_div()
883 p = isl_printer_print_str(p, c ? "floord(" : "floor(("); in print_div()
884 p = print_affine_of_len(space, div, p, in print_div()
885 div->row[pos] + 1, div->n_col - 1); in print_div()
886 p = isl_printer_print_str(p, c ? ", " : ")/"); in print_div()
887 p = isl_printer_print_isl_int(p, div->row[pos][0]); in print_div()
888 p = isl_printer_print_str(p, ")"); in print_div()
889 return p; in print_div()
897 static __isl_give isl_printer *print_div_list(__isl_take isl_printer *p, in print_div_list() argument
906 if (!p || !space || n_div < 0) in print_div_list()
907 return isl_printer_free(p); in print_div_list()
910 if (!print_defined_divs && can_print_div_expr(p, div, i)) in print_div_list()
913 p = isl_printer_print_str(p, ", "); in print_div_list()
914 p = print_name(space, p, isl_dim_div, i, latex); in print_div_list()
916 if (!can_print_div_expr(p, div, i)) in print_div_list()
918 p = isl_printer_print_str(p, " = "); in print_div_list()
919 p = print_div(space, div, i, p); in print_div_list()
922 return p; in print_div_list()
931 static isl_bool need_exists(__isl_keep isl_printer *p, __isl_keep isl_mat *div) in need_exists() argument
937 if (!p || n < 0) in need_exists()
941 if (p->dump) in need_exists()
944 if (!can_print_div_expr(p, div, i)) in need_exists()
956 static __isl_give isl_printer *open_exists(__isl_take isl_printer *p, in open_exists() argument
961 if (!p) in open_exists()
964 dump = p->dump; in open_exists()
965 p = isl_printer_print_str(p, s_open_exists[latex]); in open_exists()
966 p = print_div_list(p, space, div, latex, dump); in open_exists()
967 p = isl_printer_print_str(p, ": "); in open_exists()
969 return p; in open_exists()
988 /* Print the constraints of "bmap" to "p".
994 __isl_keep isl_space *space, __isl_take isl_printer *p, int latex) in print_disjunct() argument
1000 if (!p) in print_disjunct()
1002 dump = p->dump; in print_disjunct()
1004 exists = need_exists(p, div); in print_disjunct()
1006 p = open_exists(p, space, div, latex); in print_disjunct()
1010 p = print_constraints(bmap, space, div, p, latex); in print_disjunct()
1014 p = isl_printer_print_str(p, s_close_exists[latex]); in print_disjunct()
1015 return p; in print_disjunct()
1019 * to "p", provided there are any constraints.
1025 __isl_take isl_printer *p, int latex) in print_optional_disjunct() argument
1028 return p; in print_optional_disjunct()
1030 p = isl_printer_print_str(p, ": "); in print_optional_disjunct()
1031 p = print_disjunct(bmap, space, p, latex); in print_optional_disjunct()
1033 return p; in print_optional_disjunct()
1037 __isl_keep isl_basic_map *bmap, __isl_take isl_printer *p) in basic_map_print_omega() argument
1039 p = isl_printer_print_str(p, "{ ["); in basic_map_print_omega()
1040 p = print_var_list(p, bmap->dim, isl_dim_in); in basic_map_print_omega()
1041 p = isl_printer_print_str(p, "] -> ["); in basic_map_print_omega()
1042 p = print_var_list(p, bmap->dim, isl_dim_out); in basic_map_print_omega()
1043 p = isl_printer_print_str(p, "] "); in basic_map_print_omega()
1044 p = print_optional_disjunct(bmap, bmap->dim, p, 0); in basic_map_print_omega()
1045 p = isl_printer_print_str(p, " }"); in basic_map_print_omega()
1046 return p; in basic_map_print_omega()
1050 __isl_keep isl_basic_set *bset, __isl_take isl_printer *p) in basic_set_print_omega() argument
1052 p = isl_printer_print_str(p, "{ ["); in basic_set_print_omega()
1053 p = print_var_list(p, bset->dim, isl_dim_set); in basic_set_print_omega()
1054 p = isl_printer_print_str(p, "] "); in basic_set_print_omega()
1055 p = print_optional_disjunct(bset, bset->dim, p, 0); in basic_set_print_omega()
1056 p = isl_printer_print_str(p, " }"); in basic_set_print_omega()
1057 return p; in basic_set_print_omega()
1061 __isl_take isl_printer *p) in isl_map_print_omega() argument
1065 for (i = 0; i < map->n; ++i) { in isl_map_print_omega()
1067 p = isl_printer_print_str(p, " union "); in isl_map_print_omega()
1068 p = basic_map_print_omega(map->p[i], p); in isl_map_print_omega()
1070 return p; in isl_map_print_omega()
1074 __isl_take isl_printer *p) in isl_set_print_omega() argument
1078 for (i = 0; i < set->n; ++i) { in isl_set_print_omega()
1080 p = isl_printer_print_str(p, " union "); in isl_set_print_omega()
1081 p = basic_set_print_omega(set->p[i], p); in isl_set_print_omega()
1083 return p; in isl_set_print_omega()
1086 /* Print the list of parameters in "space", followed by an arrow, to "p",
1089 static __isl_give isl_printer *print_param_tuple(__isl_take isl_printer *p, in print_param_tuple() argument
1095 if (!p || nparam < 0) in print_param_tuple()
1096 return isl_printer_free(p); in print_param_tuple()
1098 return p; in print_param_tuple()
1100 p = print_tuple(space, p, isl_dim_param, data); in print_param_tuple()
1101 p = isl_printer_print_str(p, s_to[data->latex]); in print_param_tuple()
1103 return p; in print_param_tuple()
1107 __isl_keep isl_basic_map *bmap, __isl_take isl_printer *p, in isl_basic_map_print_isl() argument
1113 p = print_param_tuple(p, bmap->dim, &data); in isl_basic_map_print_isl()
1114 p = isl_printer_print_str(p, "{ "); in isl_basic_map_print_isl()
1115 p = isl_print_space(bmap->dim, p, rational, &data); in isl_basic_map_print_isl()
1116 p = isl_printer_print_str(p, " : "); in isl_basic_map_print_isl()
1117 p = print_disjunct(bmap, bmap->dim, p, latex); in isl_basic_map_print_isl()
1118 p = isl_printer_print_str(p, " }"); in isl_basic_map_print_isl()
1119 return p; in isl_basic_map_print_isl()
1122 /* Print the disjuncts of a map (or set) "map" to "p".
1127 __isl_keep isl_space *space, __isl_take isl_printer *p, int latex) in print_disjuncts_core() argument
1131 if (map->n == 0) in print_disjuncts_core()
1132 p = isl_printer_print_str(p, "false"); in print_disjuncts_core()
1133 for (i = 0; i < map->n; ++i) { in print_disjuncts_core()
1135 p = isl_printer_print_str(p, s_or[latex]); in print_disjuncts_core()
1136 if (map->n > 1 && map->p[i]->n_eq + map->p[i]->n_ineq > 1) in print_disjuncts_core()
1137 p = isl_printer_print_str(p, "("); in print_disjuncts_core()
1138 p = print_disjunct(map->p[i], space, p, latex); in print_disjuncts_core()
1139 if (map->n > 1 && map->p[i]->n_eq + map->p[i]->n_ineq > 1) in print_disjuncts_core()
1140 p = isl_printer_print_str(p, ")"); in print_disjuncts_core()
1142 return p; in print_disjuncts_core()
1145 /* Print the disjuncts of a map (or set) "map" to "p".
1156 __isl_take isl_printer *p, int latex) in print_disjuncts_in_hull() argument
1160 p = print_disjunct(hull, space, p, latex); in print_disjuncts_in_hull()
1166 p = isl_printer_print_str(p, s_and[latex]); in print_disjuncts_in_hull()
1167 p = isl_printer_print_str(p, "("); in print_disjuncts_in_hull()
1168 p = print_disjuncts_core(map, space, p, latex); in print_disjuncts_in_hull()
1169 p = isl_printer_print_str(p, ")"); in print_disjuncts_in_hull()
1173 return p; in print_disjuncts_in_hull()
1176 isl_printer_free(p); in print_disjuncts_in_hull()
1180 /* Print the disjuncts of a map (or set) "map" to "p".
1189 __isl_keep isl_space *space, __isl_take isl_printer *p, int latex) in print_disjuncts() argument
1192 return p; in print_disjuncts()
1194 p = isl_printer_print_str(p, s_such_that[latex]); in print_disjuncts()
1195 if (!p) in print_disjuncts()
1198 if (!p->dump && map->n >= 2) { in print_disjuncts()
1205 p = isl_printer_free(p); in print_disjuncts()
1208 p, latex); in print_disjuncts()
1212 return print_disjuncts_core(map, space, p, latex); in print_disjuncts()
1224 __isl_keep isl_space *space, __isl_take isl_printer *p, int latex) in print_disjuncts_map() argument
1226 if (isl_map_plain_is_universe(map) && isl_space_is_params(map->dim)) in print_disjuncts_map()
1227 return isl_printer_print_str(p, s_such_that[latex]); in print_disjuncts_map()
1229 return print_disjuncts(map, space, p, latex); in print_disjuncts_map()
1237 __isl_keep isl_space *space, __isl_take isl_printer *p, int latex) in print_disjuncts_set() argument
1239 return print_disjuncts_map(set_to_map(set), space, p, latex); in print_disjuncts_set()
1270 bmap = isl_basic_map_free_inequality(bmap, bmap->n_ineq); in get_aff()
1279 for (i = bmap->n_eq - 1; i >= 0; --i) { in get_aff()
1280 j = isl_seq_last_non_zero(bmap->eq[i] + 1, total); in get_aff()
1282 (isl_int_is_one(bmap->eq[i][1 + j]) || in get_aff()
1283 isl_int_is_negone(bmap->eq[i][1 + j]))) in get_aff()
1303 return isl_basic_map_plain_cmp(s1->aff, s2->aff); in aff_split_cmp()
1316 for (i = bmap->n_eq - 1; i >= 0; --i) { in drop_aff()
1317 if (isl_seq_first_non_zero(bmap->eq[i] + 1 + v_div, in drop_aff()
1318 bmap->n_div) != -1) in drop_aff()
1320 for (j = 0; j < aff->n_eq; ++j) { in drop_aff()
1321 if (!isl_seq_eq(bmap->eq[i], aff->eq[j], 1 + v_div) && in drop_aff()
1322 !isl_seq_is_neg(bmap->eq[i], aff->eq[j], 1 + v_div)) in drop_aff()
1343 split = isl_calloc_array(ctx, struct isl_aff_split, map->n); in split_aff()
1347 for (i = 0; i < map->n; ++i) { in split_aff()
1349 split[i].aff = get_aff(isl_basic_map_copy(map->p[i])); in split_aff()
1350 bmap = isl_basic_map_copy(map->p[i]); in split_aff()
1358 if (isl_sort(split, map->n, sizeof(struct isl_aff_split), in split_aff()
1362 n = map->n; in split_aff()
1363 for (i = n - 1; i >= 1; --i) { in split_aff()
1364 if (!isl_basic_map_plain_is_equal(split[i - 1].aff, in split_aff()
1368 split[i - 1].map = isl_map_union(split[i - 1].map, in split_aff()
1370 if (i != n - 1) in split_aff()
1371 split[i] = split[n - 1]; in split_aff()
1372 split[n - 1].aff = NULL; in split_aff()
1373 split[n - 1].map = NULL; in split_aff()
1374 --n; in split_aff()
1379 free_split(split, map->n); in split_aff()
1391 return -1; in defining_equality()
1395 for (i = 0; i < eq->n_eq; ++i) { in defining_equality()
1396 if (isl_seq_last_non_zero(eq->eq[i] + 1, total) != pos) in defining_equality()
1398 if (isl_int_is_one(eq->eq[i][1 + pos])) in defining_equality()
1399 isl_seq_neg(eq->eq[i], eq->eq[i], 1 + total); in defining_equality()
1403 return -1; in defining_equality()
1406 /* Print dimension "pos" of data->space to "p".
1408 * data->user is assumed to be an isl_basic_map keeping track of equalities.
1414 static __isl_give isl_printer *print_dim_eq(__isl_take isl_printer *p, in print_dim_eq() argument
1417 isl_basic_map *eq = data->user; in print_dim_eq()
1420 j = defining_equality(eq, data->space, data->type, pos); in print_dim_eq()
1422 if (isl_space_has_dim_name(data->space, data->type, pos)) { in print_dim_eq()
1423 p = print_name(data->space, p, data->type, pos, in print_dim_eq()
1424 data->latex); in print_dim_eq()
1425 p = isl_printer_print_str(p, " = "); in print_dim_eq()
1427 pos += 1 + isl_space_offset(data->space, data->type); in print_dim_eq()
1428 p = print_affine_of_len(data->space, NULL, p, eq->eq[j], pos); in print_dim_eq()
1430 p = print_name(data->space, p, data->type, pos, data->latex); in print_dim_eq()
1433 return p; in print_dim_eq()
1436 static __isl_give isl_printer *print_split_map(__isl_take isl_printer *p, in print_split_map() argument
1447 rational = split[i].map->n > 0 && in print_split_map()
1448 ISL_F_ISSET(split[i].map->p[0], ISL_BASIC_MAP_RATIONAL); in print_split_map()
1450 p = isl_printer_print_str(p, "; "); in print_split_map()
1452 p = isl_print_space(space, p, rational, &data); in print_split_map()
1453 p = print_disjuncts_map(split[i].map, space, p, 0); in print_split_map()
1456 return p; in print_split_map()
1459 static __isl_give isl_printer *print_body_map(__isl_take isl_printer *p, in print_body_map() argument
1466 if (!p || !map) in print_body_map()
1467 return isl_printer_free(p); in print_body_map()
1468 if (!p->dump && map->n > 0) in print_body_map()
1471 p = print_split_map(p, split, map->n, map->dim); in print_body_map()
1473 rational = map->n > 0 && in print_body_map()
1474 ISL_F_ISSET(map->p[0], ISL_BASIC_MAP_RATIONAL); in print_body_map()
1475 p = isl_print_space(map->dim, p, rational, &data); in print_body_map()
1476 p = print_disjuncts_map(map, map->dim, p, 0); in print_body_map()
1478 free_split(split, map->n); in print_body_map()
1479 return p; in print_body_map()
1483 __isl_take isl_printer *p) in isl_map_print_isl() argument
1487 p = print_param_tuple(p, map->dim, &data); in isl_map_print_isl()
1488 p = isl_printer_print_str(p, s_open_set[0]); in isl_map_print_isl()
1489 p = print_body_map(p, map); in isl_map_print_isl()
1490 p = isl_printer_print_str(p, s_close_set[0]); in isl_map_print_isl()
1491 return p; in isl_map_print_isl()
1495 __isl_take isl_printer *p, __isl_keep isl_basic_map *aff) in print_latex_map() argument
1500 p = print_param_tuple(p, map->dim, &data); in print_latex_map()
1501 p = isl_printer_print_str(p, s_open_set[1]); in print_latex_map()
1504 p = isl_print_space(map->dim, p, 0, &data); in print_latex_map()
1505 p = print_disjuncts_map(map, map->dim, p, 1); in print_latex_map()
1506 p = isl_printer_print_str(p, s_close_set[1]); in print_latex_map()
1508 return p; in print_latex_map()
1512 __isl_take isl_printer *p) in isl_map_print_latex() argument
1517 if (map->n > 0) in isl_map_print_latex()
1521 return print_latex_map(map, p, NULL); in isl_map_print_latex()
1523 for (i = 0; i < map->n; ++i) { in isl_map_print_latex()
1527 p = isl_printer_print_str(p, " \\cup "); in isl_map_print_latex()
1528 p = print_latex_map(split[i].map, p, split[i].aff); in isl_map_print_latex()
1531 free_split(split, map->n); in isl_map_print_latex()
1532 return p; in isl_map_print_latex()
1535 __isl_give isl_printer *isl_printer_print_basic_map(__isl_take isl_printer *p, in isl_printer_print_basic_map() argument
1538 if (!p || !bmap) in isl_printer_print_basic_map()
1540 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_basic_map()
1541 return isl_basic_map_print_isl(bmap, p, 0); in isl_printer_print_basic_map()
1542 else if (p->output_format == ISL_FORMAT_OMEGA) in isl_printer_print_basic_map()
1543 return basic_map_print_omega(bmap, p); in isl_printer_print_basic_map()
1544 isl_assert(bmap->ctx, 0, goto error); in isl_printer_print_basic_map()
1546 isl_printer_free(p); in isl_printer_print_basic_map()
1550 __isl_give isl_printer *isl_printer_print_basic_set(__isl_take isl_printer *p, in isl_printer_print_basic_set() argument
1553 if (!p || !bset) in isl_printer_print_basic_set()
1556 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_basic_set()
1557 return isl_basic_map_print_isl(bset, p, 0); in isl_printer_print_basic_set()
1558 else if (p->output_format == ISL_FORMAT_POLYLIB) in isl_printer_print_basic_set()
1559 return isl_basic_set_print_polylib(bset, p, 0); in isl_printer_print_basic_set()
1560 else if (p->output_format == ISL_FORMAT_EXT_POLYLIB) in isl_printer_print_basic_set()
1561 return isl_basic_set_print_polylib(bset, p, 1); in isl_printer_print_basic_set()
1562 else if (p->output_format == ISL_FORMAT_POLYLIB_CONSTRAINTS) in isl_printer_print_basic_set()
1563 return bset_print_constraints_polylib(bset, p); in isl_printer_print_basic_set()
1564 else if (p->output_format == ISL_FORMAT_OMEGA) in isl_printer_print_basic_set()
1565 return basic_set_print_omega(bset, p); in isl_printer_print_basic_set()
1566 isl_assert(p->ctx, 0, goto error); in isl_printer_print_basic_set()
1568 isl_printer_free(p); in isl_printer_print_basic_set()
1572 __isl_give isl_printer *isl_printer_print_set(__isl_take isl_printer *p, in isl_printer_print_set() argument
1575 if (!p || !set) in isl_printer_print_set()
1577 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_set()
1578 return isl_map_print_isl(set_to_map(set), p); in isl_printer_print_set()
1579 else if (p->output_format == ISL_FORMAT_POLYLIB) in isl_printer_print_set()
1580 return isl_set_print_polylib(set, p, 0); in isl_printer_print_set()
1581 else if (p->output_format == ISL_FORMAT_EXT_POLYLIB) in isl_printer_print_set()
1582 return isl_set_print_polylib(set, p, 1); in isl_printer_print_set()
1583 else if (p->output_format == ISL_FORMAT_OMEGA) in isl_printer_print_set()
1584 return isl_set_print_omega(set, p); in isl_printer_print_set()
1585 else if (p->output_format == ISL_FORMAT_LATEX) in isl_printer_print_set()
1586 return isl_map_print_latex(set_to_map(set), p); in isl_printer_print_set()
1587 isl_assert(set->ctx, 0, goto error); in isl_printer_print_set()
1589 isl_printer_free(p); in isl_printer_print_set()
1593 __isl_give isl_printer *isl_printer_print_map(__isl_take isl_printer *p, in isl_printer_print_map() argument
1596 if (!p || !map) in isl_printer_print_map()
1599 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_map()
1600 return isl_map_print_isl(map, p); in isl_printer_print_map()
1601 else if (p->output_format == ISL_FORMAT_POLYLIB) in isl_printer_print_map()
1602 return isl_map_print_polylib(map, p, 0); in isl_printer_print_map()
1603 else if (p->output_format == ISL_FORMAT_EXT_POLYLIB) in isl_printer_print_map()
1604 return isl_map_print_polylib(map, p, 1); in isl_printer_print_map()
1605 else if (p->output_format == ISL_FORMAT_OMEGA) in isl_printer_print_map()
1606 return isl_map_print_omega(map, p); in isl_printer_print_map()
1607 else if (p->output_format == ISL_FORMAT_LATEX) in isl_printer_print_map()
1608 return isl_map_print_latex(map, p); in isl_printer_print_map()
1609 isl_assert(map->ctx, 0, goto error); in isl_printer_print_map()
1611 isl_printer_free(p); in isl_printer_print_map()
1616 isl_printer *p; member
1625 * to "p" in isl format.
1628 __isl_take isl_printer *p, __isl_keep isl_union_set *uset) in isl_printer_print_union_set_isl_body() argument
1630 return print_body_union_map(p, uset_to_umap(uset)); in isl_printer_print_union_set_isl_body()
1638 if (!data->first) in print_latex_map_body()
1639 data->p = isl_printer_print_str(data->p, " \\cup "); in print_latex_map_body()
1640 data->first = 0; in print_latex_map_body()
1642 data->p = isl_map_print_latex(map, data->p); in print_latex_map_body()
1649 __isl_keep isl_union_map *umap, __isl_take isl_printer *p) in isl_union_map_print_latex() argument
1651 struct isl_union_print_data data = { p, 1 }; in isl_union_map_print_latex()
1653 p = data.p; in isl_union_map_print_latex()
1654 return p; in isl_union_map_print_latex()
1657 __isl_give isl_printer *isl_printer_print_union_map(__isl_take isl_printer *p, in isl_printer_print_union_map() argument
1660 if (!p || !umap) in isl_printer_print_union_map()
1663 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_union_map()
1664 return print_union_map_isl(p, umap); in isl_printer_print_union_map()
1665 if (p->output_format == ISL_FORMAT_LATEX) in isl_printer_print_union_map()
1666 return isl_union_map_print_latex(umap, p); in isl_printer_print_union_map()
1668 isl_die(p->ctx, isl_error_invalid, in isl_printer_print_union_map()
1671 isl_printer_free(p); in isl_printer_print_union_map()
1675 __isl_give isl_printer *isl_printer_print_union_set(__isl_take isl_printer *p, in isl_printer_print_union_set() argument
1678 if (!p || !uset) in isl_printer_print_union_set()
1681 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_union_set()
1682 return print_union_map_isl(p, uset_to_umap(uset)); in isl_printer_print_union_set()
1683 if (p->output_format == ISL_FORMAT_LATEX) in isl_printer_print_union_set()
1684 return isl_union_map_print_latex(uset_to_umap(uset), p); in isl_printer_print_union_set()
1686 isl_die(p->ctx, isl_error_invalid, in isl_printer_print_union_set()
1689 isl_printer_free(p); in isl_printer_print_union_set()
1701 for (i = 0, n = 0; i < rec->n; ++i) { in poly_rec_n_non_zero()
1702 isl_bool is_zero = isl_poly_is_zero(rec->p[i]); in poly_rec_n_non_zero()
1714 __isl_take isl_printer *p, int first) in poly_print_cst() argument
1722 neg = !first && isl_int_is_neg(cst->n); in poly_print_cst()
1724 p = isl_printer_print_str(p, neg ? " - " : " + "); in poly_print_cst()
1726 isl_int_neg(cst->n, cst->n); in poly_print_cst()
1727 if (isl_int_is_zero(cst->d)) { in poly_print_cst()
1728 int sgn = isl_int_sgn(cst->n); in poly_print_cst()
1729 p = isl_printer_print_str(p, sgn < 0 ? "-infty" : in poly_print_cst()
1732 p = isl_printer_print_isl_int(p, cst->n); in poly_print_cst()
1734 isl_int_neg(cst->n, cst->n); in poly_print_cst()
1735 if (!isl_int_is_zero(cst->d) && !isl_int_is_one(cst->d)) { in poly_print_cst()
1736 p = isl_printer_print_str(p, "/"); in poly_print_cst()
1737 p = isl_printer_print_isl_int(p, cst->d); in poly_print_cst()
1739 return p; in poly_print_cst()
1741 isl_printer_free(p); in poly_print_cst()
1745 static __isl_give isl_printer *print_base(__isl_take isl_printer *p, in print_base() argument
1752 return isl_printer_free(p); in print_base()
1754 p = print_term(space, NULL, space->ctx->one, 1 + var, p, 0); in print_base()
1756 p = print_div(space, div, var - total, p); in print_base()
1757 return p; in print_base()
1760 static __isl_give isl_printer *print_pow(__isl_take isl_printer *p, in print_pow() argument
1763 p = print_base(p, space, div, var); in print_pow()
1765 return p; in print_pow()
1766 if (p->output_format == ISL_FORMAT_C) { in print_pow()
1769 p = isl_printer_print_str(p, "*"); in print_pow()
1770 p = print_base(p, space, div, var); in print_pow()
1773 p = isl_printer_print_str(p, "^"); in print_pow()
1774 p = isl_printer_print_int(p, exp); in print_pow()
1776 return p; in print_pow()
1780 * local variables defined by "div" to "p".
1784 __isl_take isl_printer *p) in poly_print() argument
1792 if (!p || is_cst < 0 || !space || !div) in poly_print()
1796 return poly_print_cst(poly, p, 1); in poly_print()
1801 return isl_printer_free(p); in poly_print()
1804 p = isl_printer_print_str(p, "("); in poly_print()
1805 for (i = 0, first = 1; i < rec->n; ++i) { in poly_print()
1806 isl_bool is_zero = isl_poly_is_zero(rec->p[i]); in poly_print()
1807 isl_bool is_one = isl_poly_is_one(rec->p[i]); in poly_print()
1808 isl_bool is_negone = isl_poly_is_negone(rec->p[i]); in poly_print()
1809 isl_bool is_cst = isl_poly_is_cst(rec->p[i]); in poly_print()
1812 return isl_printer_free(p); in poly_print()
1817 p = isl_printer_print_str(p, "-1"); in poly_print()
1819 p = isl_printer_print_str(p, "-"); in poly_print()
1821 p = isl_printer_print_str(p, " - "); in poly_print()
1823 p = poly_print_cst(rec->p[i], p, first); in poly_print()
1826 p = isl_printer_print_str(p, " + "); in poly_print()
1828 p = poly_print(rec->p[i], space, div, p); in poly_print()
1834 p = isl_printer_print_str(p, " * "); in poly_print()
1835 p = print_pow(p, space, div, rec->poly.var, i); in poly_print()
1838 p = isl_printer_print_str(p, ")"); in poly_print()
1839 return p; in poly_print()
1841 isl_printer_free(p); in poly_print()
1845 static __isl_give isl_printer *print_qpolynomial(__isl_take isl_printer *p, in print_qpolynomial() argument
1848 if (!p || !qp) in print_qpolynomial()
1850 p = poly_print(qp->poly, qp->dim, qp->div, p); in print_qpolynomial()
1851 return p; in print_qpolynomial()
1853 isl_printer_free(p); in print_qpolynomial()
1857 static __isl_give isl_printer *print_qpolynomial_isl(__isl_take isl_printer *p, in print_qpolynomial_isl() argument
1862 if (!p || !qp) in print_qpolynomial_isl()
1865 p = print_param_tuple(p, qp->dim, &data); in print_qpolynomial_isl()
1866 p = isl_printer_print_str(p, "{ "); in print_qpolynomial_isl()
1867 if (!isl_space_is_params(qp->dim)) { in print_qpolynomial_isl()
1868 p = isl_print_space(qp->dim, p, 0, &data); in print_qpolynomial_isl()
1869 p = isl_printer_print_str(p, " -> "); in print_qpolynomial_isl()
1871 p = print_qpolynomial(p, qp); in print_qpolynomial_isl()
1872 p = isl_printer_print_str(p, " }"); in print_qpolynomial_isl()
1873 return p; in print_qpolynomial_isl()
1875 isl_printer_free(p); in print_qpolynomial_isl()
1879 /* Print the quasi-polynomial "qp" to "p" in C format, with the variable names
1882 static __isl_give isl_printer *print_qpolynomial_c(__isl_take isl_printer *p, in print_qpolynomial_c() argument
1893 p = isl_printer_free(p); in print_qpolynomial_c()
1895 p = isl_printer_print_str(p, "("); in print_qpolynomial_c()
1897 p = poly_print(qp->poly, space, qp->div, p); in print_qpolynomial_c()
1899 p = isl_printer_free(p); in print_qpolynomial_c()
1901 p = isl_printer_print_str(p, ")/"); in print_qpolynomial_c()
1902 p = isl_printer_print_val(p, den); in print_qpolynomial_c()
1906 return p; in print_qpolynomial_c()
1910 __isl_take isl_printer *p, __isl_keep isl_qpolynomial *qp) in isl_printer_print_qpolynomial() argument
1912 if (!p || !qp) in isl_printer_print_qpolynomial()
1915 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_qpolynomial()
1916 return print_qpolynomial_isl(p, qp); in isl_printer_print_qpolynomial()
1917 else if (p->output_format == ISL_FORMAT_C) in isl_printer_print_qpolynomial()
1918 return print_qpolynomial_c(p, qp->dim, qp); in isl_printer_print_qpolynomial()
1920 isl_die(qp->dim->ctx, isl_error_unsupported, in isl_printer_print_qpolynomial()
1924 isl_printer_free(p); in isl_printer_print_qpolynomial()
1931 isl_printer *p; in isl_qpolynomial_print() local
1936 isl_assert(qp->dim->ctx, output_format == ISL_FORMAT_ISL, return); in isl_qpolynomial_print()
1937 p = isl_printer_to_file(qp->dim->ctx, out); in isl_qpolynomial_print()
1938 p = isl_printer_print_qpolynomial(p, qp); in isl_qpolynomial_print()
1939 isl_printer_free(p); in isl_qpolynomial_print()
1943 __isl_keep isl_qpolynomial_fold *fold, __isl_take isl_printer *p) in qpolynomial_fold_print() argument
1952 return isl_printer_free(p); in qpolynomial_fold_print()
1953 if (fold->type == isl_fold_min) in qpolynomial_fold_print()
1954 p = isl_printer_print_str(p, "min"); in qpolynomial_fold_print()
1955 else if (fold->type == isl_fold_max) in qpolynomial_fold_print()
1956 p = isl_printer_print_str(p, "max"); in qpolynomial_fold_print()
1957 p = isl_printer_print_str(p, "("); in qpolynomial_fold_print()
1962 p = isl_printer_print_str(p, ", "); in qpolynomial_fold_print()
1964 p = print_qpolynomial(p, qp); in qpolynomial_fold_print()
1966 p = isl_printer_print_str(p, ")"); in qpolynomial_fold_print()
1967 return p; in qpolynomial_fold_print()
1973 isl_printer *p; in isl_qpolynomial_fold_print() local
1978 isl_assert(fold->dim->ctx, output_format == ISL_FORMAT_ISL, return); in isl_qpolynomial_fold_print()
1980 p = isl_printer_to_file(fold->dim->ctx, out); in isl_qpolynomial_fold_print()
1981 p = isl_printer_print_qpolynomial_fold(p, fold); in isl_qpolynomial_fold_print()
1983 isl_printer_free(p); in isl_qpolynomial_fold_print()
1987 __isl_take isl_printer *p, __isl_keep isl_pw_qpolynomial *pwqp) in print_body_pw_qpolynomial() argument
1992 for (i = 0; i < pwqp->n; ++i) { in print_body_pw_qpolynomial()
1996 p = isl_printer_print_str(p, "; "); in print_body_pw_qpolynomial()
1997 space = isl_qpolynomial_get_domain_space(pwqp->p[i].qp); in print_body_pw_qpolynomial()
1999 p = isl_print_space(space, p, 0, &data); in print_body_pw_qpolynomial()
2000 p = isl_printer_print_str(p, " -> "); in print_body_pw_qpolynomial()
2002 p = print_qpolynomial(p, pwqp->p[i].qp); in print_body_pw_qpolynomial()
2003 p = print_disjuncts(set_to_map(pwqp->p[i].set), space, p, 0); in print_body_pw_qpolynomial()
2007 return p; in print_body_pw_qpolynomial()
2011 __isl_take isl_printer *p, __isl_keep isl_pw_qpolynomial *pwqp) in print_pw_qpolynomial_isl() argument
2015 if (!p || !pwqp) in print_pw_qpolynomial_isl()
2018 p = print_param_tuple(p, pwqp->dim, &data); in print_pw_qpolynomial_isl()
2019 p = isl_printer_print_str(p, "{ "); in print_pw_qpolynomial_isl()
2020 if (pwqp->n == 0) { in print_pw_qpolynomial_isl()
2021 if (!isl_space_is_set(pwqp->dim)) { in print_pw_qpolynomial_isl()
2022 p = print_tuple(pwqp->dim, p, isl_dim_in, &data); in print_pw_qpolynomial_isl()
2023 p = isl_printer_print_str(p, " -> "); in print_pw_qpolynomial_isl()
2025 p = isl_printer_print_str(p, "0"); in print_pw_qpolynomial_isl()
2027 p = print_body_pw_qpolynomial(p, pwqp); in print_pw_qpolynomial_isl()
2028 p = isl_printer_print_str(p, " }"); in print_pw_qpolynomial_isl()
2029 return p; in print_pw_qpolynomial_isl()
2031 isl_printer_free(p); in print_pw_qpolynomial_isl()
2038 isl_printer *p; in isl_pw_qpolynomial_print() local
2043 p = isl_printer_to_file(pwqp->dim->ctx, out); in isl_pw_qpolynomial_print()
2044 p = isl_printer_set_output_format(p, output_format); in isl_pw_qpolynomial_print()
2045 p = isl_printer_print_pw_qpolynomial(p, pwqp); in isl_pw_qpolynomial_print()
2047 isl_printer_free(p); in isl_pw_qpolynomial_print()
2051 __isl_take isl_printer *p, __isl_keep isl_pw_qpolynomial_fold *pwf) in print_body_pw_qpolynomial_fold() argument
2056 for (i = 0; i < pwf->n; ++i) { in print_body_pw_qpolynomial_fold()
2060 p = isl_printer_print_str(p, "; "); in print_body_pw_qpolynomial_fold()
2061 space = isl_qpolynomial_fold_get_domain_space(pwf->p[i].fold); in print_body_pw_qpolynomial_fold()
2063 p = isl_print_space(space, p, 0, &data); in print_body_pw_qpolynomial_fold()
2064 p = isl_printer_print_str(p, " -> "); in print_body_pw_qpolynomial_fold()
2066 p = qpolynomial_fold_print(pwf->p[i].fold, p); in print_body_pw_qpolynomial_fold()
2067 p = print_disjuncts(set_to_map(pwf->p[i].set), space, p, 0); in print_body_pw_qpolynomial_fold()
2071 return p; in print_body_pw_qpolynomial_fold()
2075 __isl_take isl_printer *p, __isl_keep isl_pw_qpolynomial_fold *pwf) in print_pw_qpolynomial_fold_isl() argument
2079 p = print_param_tuple(p, pwf->dim, &data); in print_pw_qpolynomial_fold_isl()
2080 p = isl_printer_print_str(p, "{ "); in print_pw_qpolynomial_fold_isl()
2081 if (pwf->n == 0) { in print_pw_qpolynomial_fold_isl()
2082 if (!isl_space_is_set(pwf->dim)) { in print_pw_qpolynomial_fold_isl()
2083 p = print_tuple(pwf->dim, p, isl_dim_in, &data); in print_pw_qpolynomial_fold_isl()
2084 p = isl_printer_print_str(p, " -> "); in print_pw_qpolynomial_fold_isl()
2086 p = isl_printer_print_str(p, "0"); in print_pw_qpolynomial_fold_isl()
2088 p = print_body_pw_qpolynomial_fold(p, pwf); in print_pw_qpolynomial_fold_isl()
2089 p = isl_printer_print_str(p, " }"); in print_pw_qpolynomial_fold_isl()
2090 return p; in print_pw_qpolynomial_fold_isl()
2093 static __isl_give isl_printer *print_ls_affine_c(__isl_take isl_printer *p,
2101 static __isl_give isl_printer *print_constraint_c(__isl_take isl_printer *p, in print_constraint_c() argument
2111 return isl_printer_free(p); in print_constraint_c()
2116 return isl_printer_free(p); in print_constraint_c()
2118 return p; in print_constraint_c()
2122 p = isl_printer_print_str(p, " && "); in print_constraint_c()
2124 p = print_ls_affine_c(p, ls, c); in print_constraint_c()
2125 p = isl_printer_print_str(p, " "); in print_constraint_c()
2126 p = isl_printer_print_str(p, op); in print_constraint_c()
2127 p = isl_printer_print_str(p, " 0"); in print_constraint_c()
2131 return p; in print_constraint_c()
2135 __isl_take isl_printer *p, __isl_keep isl_local_space *ls,
2138 static __isl_give isl_printer *print_basic_set_c(__isl_take isl_printer *p, in print_basic_set_c() argument
2149 return isl_printer_free(p); in print_basic_set_c()
2151 total -= n_div; in print_basic_set_c()
2154 for (i = 0; i < bset->n_eq; ++i) { in print_basic_set_c()
2155 j = isl_seq_last_non_zero(bset->eq[i] + 1 + total, n_div); in print_basic_set_c()
2157 p = print_constraint_c(p, ls, in print_basic_set_c()
2158 bset->eq[i], "==", &first); in print_basic_set_c()
2161 p = isl_printer_print_str(p, " && "); in print_basic_set_c()
2162 p = isl_printer_print_str(p, "("); in print_basic_set_c()
2163 p = print_ls_partial_affine_c(p, ls, bset->eq[i], in print_basic_set_c()
2165 p = isl_printer_print_str(p, ") % "); in print_basic_set_c()
2166 p = isl_printer_print_isl_int(p, in print_basic_set_c()
2167 bset->eq[i][1 + total + j]); in print_basic_set_c()
2168 p = isl_printer_print_str(p, " == 0"); in print_basic_set_c()
2172 for (i = 0; i < bset->n_ineq; ++i) in print_basic_set_c()
2173 p = print_constraint_c(p, ls, bset->ineq[i], ">=", &first); in print_basic_set_c()
2175 return p; in print_basic_set_c()
2178 static __isl_give isl_printer *print_set_c(__isl_take isl_printer *p, in print_set_c() argument
2184 return isl_printer_free(p); in print_set_c()
2186 if (set->n == 0) in print_set_c()
2187 p = isl_printer_print_str(p, "0"); in print_set_c()
2189 for (i = 0; i < set->n; ++i) { in print_set_c()
2191 p = isl_printer_print_str(p, " || "); in print_set_c()
2192 if (set->n > 1) in print_set_c()
2193 p = isl_printer_print_str(p, "("); in print_set_c()
2194 p = print_basic_set_c(p, space, set->p[i]); in print_set_c()
2195 if (set->n > 1) in print_set_c()
2196 p = isl_printer_print_str(p, ")"); in print_set_c()
2198 return p; in print_set_c()
2201 /* Print the piecewise quasi-polynomial "pwqp" to "p" in C format.
2204 __isl_take isl_printer *p, __isl_keep isl_pw_qpolynomial *pwqp) in print_pw_qpolynomial_c() argument
2210 if (pwqp->n == 1 && isl_set_plain_is_universe(pwqp->p[0].set)) { in print_pw_qpolynomial_c()
2211 p = print_qpolynomial_c(p, space, pwqp->p[0].qp); in print_pw_qpolynomial_c()
2213 return p; in print_pw_qpolynomial_c()
2216 for (i = 0; i < pwqp->n; ++i) { in print_pw_qpolynomial_c()
2217 p = isl_printer_print_str(p, "("); in print_pw_qpolynomial_c()
2218 p = print_set_c(p, space, pwqp->p[i].set); in print_pw_qpolynomial_c()
2219 p = isl_printer_print_str(p, ") ? ("); in print_pw_qpolynomial_c()
2220 p = print_qpolynomial_c(p, space, pwqp->p[i].qp); in print_pw_qpolynomial_c()
2221 p = isl_printer_print_str(p, ") : "); in print_pw_qpolynomial_c()
2225 p = isl_printer_print_str(p, "0"); in print_pw_qpolynomial_c()
2226 return p; in print_pw_qpolynomial_c()
2230 __isl_take isl_printer *p, __isl_keep isl_pw_qpolynomial *pwqp) in isl_printer_print_pw_qpolynomial() argument
2232 if (!p || !pwqp) in isl_printer_print_pw_qpolynomial()
2235 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_pw_qpolynomial()
2236 return print_pw_qpolynomial_isl(p, pwqp); in isl_printer_print_pw_qpolynomial()
2237 else if (p->output_format == ISL_FORMAT_C) in isl_printer_print_pw_qpolynomial()
2238 return print_pw_qpolynomial_c(p, pwqp); in isl_printer_print_pw_qpolynomial()
2239 isl_assert(p->ctx, 0, goto error); in isl_printer_print_pw_qpolynomial()
2241 isl_printer_free(p); in isl_printer_print_pw_qpolynomial()
2250 __isl_take isl_printer *p, __isl_keep isl_union_pw_qpolynomial *upwqp) in isl_printer_print_union_pw_qpolynomial() argument
2252 if (!p || !upwqp) in isl_printer_print_union_pw_qpolynomial()
2255 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_union_pw_qpolynomial()
2256 return print_union_pw_qpolynomial_isl(p, upwqp); in isl_printer_print_union_pw_qpolynomial()
2257 isl_die(p->ctx, isl_error_invalid, in isl_printer_print_union_pw_qpolynomial()
2261 isl_printer_free(p); in isl_printer_print_union_pw_qpolynomial()
2265 /* Print the quasi-polynomial reduction "fold" to "p" in C format,
2269 __isl_take isl_printer *p, __isl_keep isl_space *space, in print_qpolynomial_fold_c() argument
2279 return isl_printer_free(p); in print_qpolynomial_fold_c()
2280 for (i = 0; i < n - 1; ++i) in print_qpolynomial_fold_c()
2281 if (fold->type == isl_fold_min) in print_qpolynomial_fold_c()
2282 p = isl_printer_print_str(p, "min("); in print_qpolynomial_fold_c()
2283 else if (fold->type == isl_fold_max) in print_qpolynomial_fold_c()
2284 p = isl_printer_print_str(p, "max("); in print_qpolynomial_fold_c()
2290 p = isl_printer_print_str(p, ", "); in print_qpolynomial_fold_c()
2292 p = print_qpolynomial_c(p, space, qp); in print_qpolynomial_fold_c()
2294 p = isl_printer_print_str(p, ")"); in print_qpolynomial_fold_c()
2296 return p; in print_qpolynomial_fold_c()
2300 __isl_take isl_printer *p, __isl_keep isl_qpolynomial_fold *fold) in isl_printer_print_qpolynomial_fold() argument
2302 if (!p || !fold) in isl_printer_print_qpolynomial_fold()
2304 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_qpolynomial_fold()
2305 return qpolynomial_fold_print(fold, p); in isl_printer_print_qpolynomial_fold()
2306 else if (p->output_format == ISL_FORMAT_C) in isl_printer_print_qpolynomial_fold()
2307 return print_qpolynomial_fold_c(p, fold->dim, fold); in isl_printer_print_qpolynomial_fold()
2308 isl_die(p->ctx, isl_error_unsupported, "unsupported output format", in isl_printer_print_qpolynomial_fold()
2311 isl_printer_free(p); in isl_printer_print_qpolynomial_fold()
2315 /* Print the piecewise quasi-polynomial reduction "pwf" to "p" in C format.
2318 __isl_take isl_printer *p, __isl_keep isl_pw_qpolynomial_fold *pwf) in print_pw_qpolynomial_fold_c() argument
2324 if (pwf->n == 1 && isl_set_plain_is_universe(pwf->p[0].set)) { in print_pw_qpolynomial_fold_c()
2325 p = print_qpolynomial_fold_c(p, space, pwf->p[0].fold); in print_pw_qpolynomial_fold_c()
2327 return p; in print_pw_qpolynomial_fold_c()
2330 for (i = 0; i < pwf->n; ++i) { in print_pw_qpolynomial_fold_c()
2331 p = isl_printer_print_str(p, "("); in print_pw_qpolynomial_fold_c()
2332 p = print_set_c(p, space, pwf->p[i].set); in print_pw_qpolynomial_fold_c()
2333 p = isl_printer_print_str(p, ") ? ("); in print_pw_qpolynomial_fold_c()
2334 p = print_qpolynomial_fold_c(p, space, pwf->p[i].fold); in print_pw_qpolynomial_fold_c()
2335 p = isl_printer_print_str(p, ") : "); in print_pw_qpolynomial_fold_c()
2339 p = isl_printer_print_str(p, "0"); in print_pw_qpolynomial_fold_c()
2340 return p; in print_pw_qpolynomial_fold_c()
2344 __isl_take isl_printer *p, __isl_keep isl_pw_qpolynomial_fold *pwf) in isl_printer_print_pw_qpolynomial_fold() argument
2346 if (!p || !pwf) in isl_printer_print_pw_qpolynomial_fold()
2349 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_pw_qpolynomial_fold()
2350 return print_pw_qpolynomial_fold_isl(p, pwf); in isl_printer_print_pw_qpolynomial_fold()
2351 else if (p->output_format == ISL_FORMAT_C) in isl_printer_print_pw_qpolynomial_fold()
2352 return print_pw_qpolynomial_fold_c(p, pwf); in isl_printer_print_pw_qpolynomial_fold()
2353 isl_assert(p->ctx, 0, goto error); in isl_printer_print_pw_qpolynomial_fold()
2355 isl_printer_free(p); in isl_printer_print_pw_qpolynomial_fold()
2362 isl_printer *p; in isl_pw_qpolynomial_fold_print() local
2367 p = isl_printer_to_file(pwf->dim->ctx, out); in isl_pw_qpolynomial_fold_print()
2368 p = isl_printer_set_output_format(p, output_format); in isl_pw_qpolynomial_fold_print()
2369 p = isl_printer_print_pw_qpolynomial_fold(p, pwf); in isl_pw_qpolynomial_fold_print()
2371 isl_printer_free(p); in isl_pw_qpolynomial_fold_print()
2379 __isl_take isl_printer *p, in isl_printer_print_union_pw_qpolynomial_fold() argument
2382 if (!p || !upwf) in isl_printer_print_union_pw_qpolynomial_fold()
2385 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_union_pw_qpolynomial_fold()
2386 return print_union_pw_qpolynomial_fold_isl(p, upwf); in isl_printer_print_union_pw_qpolynomial_fold()
2387 isl_die(p->ctx, isl_error_invalid, in isl_printer_print_union_pw_qpolynomial_fold()
2391 isl_printer_free(p); in isl_printer_print_union_pw_qpolynomial_fold()
2395 /* Print the isl_constraint "c" to "p".
2397 __isl_give isl_printer *isl_printer_print_constraint(__isl_take isl_printer *p, in isl_printer_print_constraint() argument
2405 if (!p || !c) in isl_printer_print_constraint()
2410 return isl_printer_free(p); in isl_printer_print_constraint()
2412 p = print_param_tuple(p, space, &data); in isl_printer_print_constraint()
2413 p = isl_printer_print_str(p, "{ "); in isl_printer_print_constraint()
2414 p = isl_print_space(space, p, 0, &data); in isl_printer_print_constraint()
2415 p = isl_printer_print_str(p, " : "); in isl_printer_print_constraint()
2416 exists = need_exists(p, ls->div); in isl_printer_print_constraint()
2418 p = isl_printer_free(p); in isl_printer_print_constraint()
2420 p = open_exists(p, space, ls->div, 0); in isl_printer_print_constraint()
2421 p = print_affine_of_len(space, ls->div, p, c->v->el, c->v->size); in isl_printer_print_constraint()
2423 p = isl_printer_print_str(p, " = 0"); in isl_printer_print_constraint()
2425 p = isl_printer_print_str(p, " >= 0"); in isl_printer_print_constraint()
2427 p = isl_printer_print_str(p, s_close_exists[0]); in isl_printer_print_constraint()
2428 p = isl_printer_print_str(p, " }"); in isl_printer_print_constraint()
2432 return p; in isl_printer_print_constraint()
2434 isl_printer_free(p); in isl_printer_print_constraint()
2439 __isl_take isl_printer *p, __isl_keep isl_space *space) in isl_printer_print_space_isl() argument
2446 p = print_param_tuple(p, space, &data); in isl_printer_print_space_isl()
2448 p = isl_printer_print_str(p, "{ "); in isl_printer_print_space_isl()
2450 p = isl_printer_print_str(p, s_such_that[0]); in isl_printer_print_space_isl()
2452 p = isl_print_space(space, p, 0, &data); in isl_printer_print_space_isl()
2453 p = isl_printer_print_str(p, " }"); in isl_printer_print_space_isl()
2455 return p; in isl_printer_print_space_isl()
2457 isl_printer_free(p); in isl_printer_print_space_isl()
2461 __isl_give isl_printer *isl_printer_print_space(__isl_take isl_printer *p, in isl_printer_print_space() argument
2464 if (!p || !space) in isl_printer_print_space()
2465 return isl_printer_free(p); in isl_printer_print_space()
2466 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_space()
2467 return isl_printer_print_space_isl(p, space); in isl_printer_print_space()
2468 else if (p->output_format == ISL_FORMAT_OMEGA) in isl_printer_print_space()
2469 return print_omega_parameters(space, p); in isl_printer_print_space()
2473 return isl_printer_free(p)); in isl_printer_print_space()
2476 __isl_give isl_printer *isl_printer_print_local_space(__isl_take isl_printer *p, in isl_printer_print_local_space() argument
2486 p = print_param_tuple(p, ls->dim, &data); in isl_printer_print_local_space()
2487 p = isl_printer_print_str(p, "{ "); in isl_printer_print_local_space()
2488 p = isl_print_space(ls->dim, p, 0, &data); in isl_printer_print_local_space()
2490 p = isl_printer_print_str(p, " : "); in isl_printer_print_local_space()
2491 p = isl_printer_print_str(p, s_open_exists[0]); in isl_printer_print_local_space()
2492 p = print_div_list(p, ls->dim, ls->div, 0, 1); in isl_printer_print_local_space()
2493 p = isl_printer_print_str(p, s_close_exists[0]); in isl_printer_print_local_space()
2494 } else if (isl_space_is_params(ls->dim)) in isl_printer_print_local_space()
2495 p = isl_printer_print_str(p, s_such_that[0]); in isl_printer_print_local_space()
2496 p = isl_printer_print_str(p, " }"); in isl_printer_print_local_space()
2497 return p; in isl_printer_print_local_space()
2499 isl_printer_free(p); in isl_printer_print_local_space()
2523 static isl_size last_modulo(__isl_keep isl_printer *p, __isl_keep isl_aff *aff, in last_modulo() argument
2534 for (i = n - 1; i >= 0; --i) { in last_modulo()
2535 if (isl_int_is_zero(aff->v->el[1 + o_div + i])) in last_modulo()
2537 if (isl_int_is_divisible_by(aff->v->el[1 + o_div + i], in last_modulo()
2538 aff->ls->div->row[i][0])) in last_modulo()
2545 /* Print the numerator of the affine expression "aff" to "p",
2548 static __isl_give isl_printer *print_aff_num_base(__isl_take isl_printer *p, in print_aff_num_base() argument
2555 return isl_printer_free(p); in print_aff_num_base()
2556 p = print_affine_of_len(space, aff->ls->div, p, in print_aff_num_base()
2557 aff->v->el + 1, 1 + total); in print_aff_num_base()
2559 return p; in print_aff_num_base()
2562 static __isl_give isl_printer *print_aff_num(__isl_take isl_printer *p,
2565 /* Print the modulo term "c" * ("aff" mod "mod") to "p",
2569 static __isl_give isl_printer *print_mod_term(__isl_take isl_printer *p, in print_mod_term() argument
2577 p = isl_printer_free(p); in print_mod_term()
2581 p = isl_printer_print_str(p, is_neg ? " - " : " + "); in print_mod_term()
2585 p = isl_printer_free(p); in print_mod_term()
2587 p = isl_printer_print_val(p, c); in print_mod_term()
2588 p = isl_printer_print_str(p, "*("); in print_mod_term()
2590 p = isl_printer_print_str(p, "("); in print_mod_term()
2591 p = print_aff_num(p, space, aff); in print_mod_term()
2592 p = isl_printer_print_str(p, ")"); in print_mod_term()
2593 p = isl_printer_print_str(p, " mod "); in print_mod_term()
2594 p = isl_printer_print_val(p, mod); in print_mod_term()
2596 p = isl_printer_print_str(p, ")"); in print_mod_term()
2600 return p; in print_mod_term()
2603 /* Print the numerator of the affine expression "aff" to "p",
2613 * f(...) + a g - a (g mod m)
2617 * then write out "- a (g mod m)".
2619 static __isl_give isl_printer *print_aff_num_mod(__isl_take isl_printer *p, in print_aff_num_mod() argument
2639 p = isl_printer_free(p); in print_aff_num_mod()
2642 p = print_aff_num(p, space, aff); in print_aff_num_mod()
2644 p = print_mod_term(p, space, div, is_zero, isl_val_copy(a), m); in print_aff_num_mod()
2652 return p; in print_aff_num_mod()
2655 /* Print the numerator of the affine expression "aff" to "p",
2662 static __isl_give isl_printer *print_aff_num(__isl_take isl_printer *p, in print_aff_num() argument
2669 return isl_printer_free(p); in print_aff_num()
2670 mod = last_modulo(p, aff, n_div); in print_aff_num()
2672 return isl_printer_free(p); in print_aff_num()
2674 return print_aff_num_mod(p, space, aff, mod); in print_aff_num()
2676 return print_aff_num_base(p, space, aff); in print_aff_num()
2679 /* Print the (potentially rational) affine expression "aff" to "p",
2682 static __isl_give isl_printer *print_aff_body(__isl_take isl_printer *p, in print_aff_body() argument
2686 return isl_printer_print_str(p, "NaN"); in print_aff_body()
2688 p = isl_printer_print_str(p, "("); in print_aff_body()
2689 p = print_aff_num(p, space, aff); in print_aff_body()
2690 if (isl_int_is_one(aff->v->el[0])) in print_aff_body()
2691 p = isl_printer_print_str(p, ")"); in print_aff_body()
2693 p = isl_printer_print_str(p, ")/"); in print_aff_body()
2694 p = isl_printer_print_isl_int(p, aff->v->el[0]); in print_aff_body()
2697 return p; in print_aff_body()
2700 static __isl_give isl_printer *print_body_aff(__isl_take isl_printer *p, in print_body_aff() argument
2705 if (isl_space_is_params(aff->ls->dim)) in print_body_aff()
2708 p = print_tuple(aff->ls->dim, p, isl_dim_set, &data); in print_body_aff()
2709 p = isl_printer_print_str(p, " -> "); in print_body_aff()
2711 p = isl_printer_print_str(p, "["); in print_body_aff()
2712 p = print_aff_body(p, aff->ls->dim, aff); in print_body_aff()
2713 p = isl_printer_print_str(p, "]"); in print_body_aff()
2715 return p; in print_body_aff()
2718 static __isl_give isl_printer *print_aff_isl(__isl_take isl_printer *p, in print_aff_isl() argument
2726 p = print_param_tuple(p, aff->ls->dim, &data); in print_aff_isl()
2727 p = isl_printer_print_str(p, "{ "); in print_aff_isl()
2728 p = print_body_aff(p, aff); in print_aff_isl()
2729 p = isl_printer_print_str(p, " }"); in print_aff_isl()
2730 return p; in print_aff_isl()
2732 isl_printer_free(p); in print_aff_isl()
2740 static __isl_give isl_printer *print_ls_name_c(__isl_take isl_printer *p, in print_ls_name_c() argument
2744 p = isl_printer_print_str(p, "floord("); in print_ls_name_c()
2745 p = print_ls_affine_c(p, ls, ls->div->row[pos] + 1); in print_ls_name_c()
2746 p = isl_printer_print_str(p, ", "); in print_ls_name_c()
2747 p = isl_printer_print_isl_int(p, ls->div->row[pos][0]); in print_ls_name_c()
2748 p = isl_printer_print_str(p, ")"); in print_ls_name_c()
2752 name = isl_space_get_dim_name(ls->dim, type, pos); in print_ls_name_c()
2755 p = isl_printer_print_str(p, name); in print_ls_name_c()
2757 return p; in print_ls_name_c()
2760 static __isl_give isl_printer *print_ls_term_c(__isl_take isl_printer *p, in print_ls_term_c() argument
2765 if (!p || !ls) in print_ls_term_c()
2766 return isl_printer_free(p); in print_ls_term_c()
2769 return isl_printer_print_isl_int(p, c); in print_ls_term_c()
2774 p = isl_printer_print_str(p, "-"); in print_ls_term_c()
2776 p = isl_printer_print_isl_int(p, c); in print_ls_term_c()
2777 p = isl_printer_print_str(p, "*"); in print_ls_term_c()
2779 if (pos2type(ls->dim, &type, &pos) < 0) in print_ls_term_c()
2780 return isl_printer_free(p); in print_ls_term_c()
2781 p = print_ls_name_c(p, ls, type, pos); in print_ls_term_c()
2782 return p; in print_ls_term_c()
2786 __isl_take isl_printer *p, __isl_keep isl_local_space *ls, in print_ls_partial_affine_c() argument
2800 p = isl_printer_print_str(p, " - "); in print_ls_partial_affine_c()
2802 p = isl_printer_print_str(p, " + "); in print_ls_partial_affine_c()
2805 p = print_ls_term_c(p, ls, c[i], i); in print_ls_partial_affine_c()
2810 p = isl_printer_print_str(p, "0"); in print_ls_partial_affine_c()
2811 return p; in print_ls_partial_affine_c()
2814 static __isl_give isl_printer *print_ls_affine_c(__isl_take isl_printer *p, in print_ls_affine_c() argument
2820 return isl_printer_free(p); in print_ls_affine_c()
2821 return print_ls_partial_affine_c(p, ls, c, 1 + total); in print_ls_affine_c()
2824 static __isl_give isl_printer *print_aff_c(__isl_take isl_printer *p, in print_aff_c() argument
2831 return isl_printer_free(p); in print_aff_c()
2832 if (!isl_int_is_one(aff->v->el[0])) in print_aff_c()
2833 p = isl_printer_print_str(p, "("); in print_aff_c()
2834 p = print_ls_partial_affine_c(p, aff->ls, aff->v->el + 1, 1 + total); in print_aff_c()
2835 if (!isl_int_is_one(aff->v->el[0])) { in print_aff_c()
2836 p = isl_printer_print_str(p, ")/"); in print_aff_c()
2837 p = isl_printer_print_isl_int(p, aff->v->el[0]); in print_aff_c()
2839 return p; in print_aff_c()
2847 static __isl_give isl_printer *print_pw_aff_c(__isl_take isl_printer *p, in print_pw_aff_c() argument
2854 if (pwaff->n < 1) in print_pw_aff_c()
2855 isl_die(p->ctx, isl_error_unsupported, in print_pw_aff_c()
2857 return isl_printer_free(p)); in print_pw_aff_c()
2862 p = isl_printer_print_ast_expr(p, expr); in print_pw_aff_c()
2866 return p; in print_pw_aff_c()
2869 __isl_give isl_printer *isl_printer_print_aff(__isl_take isl_printer *p, in isl_printer_print_aff() argument
2872 if (!p || !aff) in isl_printer_print_aff()
2875 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_aff()
2876 return print_aff_isl(p, aff); in isl_printer_print_aff()
2877 else if (p->output_format == ISL_FORMAT_C) in isl_printer_print_aff()
2878 return print_aff_c(p, aff); in isl_printer_print_aff()
2879 isl_die(p->ctx, isl_error_unsupported, "unsupported output format", in isl_printer_print_aff()
2882 isl_printer_free(p); in isl_printer_print_aff()
2886 __isl_give isl_printer *isl_printer_print_pw_aff(__isl_take isl_printer *p, in isl_printer_print_pw_aff() argument
2889 if (!p || !pwaff) in isl_printer_print_pw_aff()
2892 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_pw_aff()
2893 return print_pw_aff_isl(p, pwaff); in isl_printer_print_pw_aff()
2894 else if (p->output_format == ISL_FORMAT_C) in isl_printer_print_pw_aff()
2895 return print_pw_aff_c(p, pwaff); in isl_printer_print_pw_aff()
2896 isl_die(p->ctx, isl_error_unsupported, "unsupported output format", in isl_printer_print_pw_aff()
2899 isl_printer_free(p); in isl_printer_print_pw_aff()
2907 /* Print the isl_union_pw_aff "upa" to "p".
2912 __isl_take isl_printer *p, __isl_keep isl_union_pw_aff *upa) in isl_printer_print_union_pw_aff() argument
2914 if (!p || !upa) in isl_printer_print_union_pw_aff()
2915 return isl_printer_free(p); in isl_printer_print_union_pw_aff()
2917 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_union_pw_aff()
2918 return print_union_pw_aff_isl(p, upa); in isl_printer_print_union_pw_aff()
2919 isl_die(isl_printer_get_ctx(p), isl_error_unsupported, in isl_printer_print_union_pw_aff()
2920 "unsupported output format", return isl_printer_free(p)); in isl_printer_print_union_pw_aff()
2923 /* Print dimension "pos" of data->space to "p".
2925 * data->user is assumed to be an isl_multi_aff.
2932 static __isl_give isl_printer *print_dim_ma(__isl_take isl_printer *p, in print_dim_ma() argument
2935 isl_multi_aff *ma = data->user; in print_dim_ma()
2939 if (data->type == isl_dim_out) { in print_dim_ma()
2940 p = print_aff_body(p, space, ma->u.p[pos]); in print_dim_ma()
2942 enum isl_dim_type type = data->type; in print_dim_ma()
2946 p = print_name(space, p, type, pos, data->latex); in print_dim_ma()
2950 return p; in print_dim_ma()
2953 static __isl_give isl_printer *print_body_multi_aff(__isl_take isl_printer *p, in print_body_multi_aff() argument
2960 return isl_print_space(maff->space, p, 0, &data); in print_body_multi_aff()
2963 static __isl_give isl_printer *print_multi_aff_isl(__isl_take isl_printer *p, in print_multi_aff_isl() argument
2971 p = print_param_tuple(p, maff->space, &data); in print_multi_aff_isl()
2972 p = isl_printer_print_str(p, "{ "); in print_multi_aff_isl()
2973 p = print_body_multi_aff(p, maff); in print_multi_aff_isl()
2974 p = isl_printer_print_str(p, " }"); in print_multi_aff_isl()
2975 return p; in print_multi_aff_isl()
2977 isl_printer_free(p); in print_multi_aff_isl()
2981 __isl_give isl_printer *isl_printer_print_multi_aff(__isl_take isl_printer *p, in isl_printer_print_multi_aff() argument
2984 if (!p || !maff) in isl_printer_print_multi_aff()
2987 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_multi_aff()
2988 return print_multi_aff_isl(p, maff); in isl_printer_print_multi_aff()
2989 isl_die(p->ctx, isl_error_unsupported, "unsupported output format", in isl_printer_print_multi_aff()
2992 isl_printer_free(p); in isl_printer_print_multi_aff()
3000 /* Print the unnamed, single-dimensional piecewise multi affine expression "pma"
3001 * to "p".
3004 __isl_take isl_printer *p, __isl_keep isl_pw_multi_aff *pma) in print_unnamed_pw_multi_aff_c() argument
3010 for (i = 0; i < pma->n - 1; ++i) { in print_unnamed_pw_multi_aff_c()
3011 p = isl_printer_print_str(p, "("); in print_unnamed_pw_multi_aff_c()
3012 p = print_set_c(p, space, pma->p[i].set); in print_unnamed_pw_multi_aff_c()
3013 p = isl_printer_print_str(p, ") ? ("); in print_unnamed_pw_multi_aff_c()
3014 p = print_aff_c(p, pma->p[i].maff->u.p[0]); in print_unnamed_pw_multi_aff_c()
3015 p = isl_printer_print_str(p, ") : "); in print_unnamed_pw_multi_aff_c()
3019 return print_aff_c(p, pma->p[pma->n - 1].maff->u.p[0]); in print_unnamed_pw_multi_aff_c()
3022 static __isl_give isl_printer *print_pw_multi_aff_c(__isl_take isl_printer *p, in print_pw_multi_aff_c() argument
3030 if (pma->n < 1) in print_pw_multi_aff_c()
3031 isl_die(p->ctx, isl_error_unsupported, in print_pw_multi_aff_c()
3036 return isl_printer_free(p); in print_pw_multi_aff_c()
3039 return print_unnamed_pw_multi_aff_c(p, pma); in print_pw_multi_aff_c()
3041 isl_die(p->ctx, isl_error_unsupported, in print_pw_multi_aff_c()
3045 p = isl_printer_print_str(p, name); in print_pw_multi_aff_c()
3047 isl_die(p->ctx, isl_error_unsupported, in print_pw_multi_aff_c()
3050 return p; in print_pw_multi_aff_c()
3052 isl_printer_free(p); in print_pw_multi_aff_c()
3057 __isl_take isl_printer *p, __isl_keep isl_pw_multi_aff *pma) in isl_printer_print_pw_multi_aff() argument
3059 if (!p || !pma) in isl_printer_print_pw_multi_aff()
3062 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_pw_multi_aff()
3063 return print_pw_multi_aff_isl(p, pma); in isl_printer_print_pw_multi_aff()
3064 if (p->output_format == ISL_FORMAT_C) in isl_printer_print_pw_multi_aff()
3065 return print_pw_multi_aff_c(p, pma); in isl_printer_print_pw_multi_aff()
3066 isl_die(p->ctx, isl_error_unsupported, "unsupported output format", in isl_printer_print_pw_multi_aff()
3069 isl_printer_free(p); in isl_printer_print_pw_multi_aff()
3078 __isl_take isl_printer *p, __isl_keep isl_union_pw_multi_aff *upma) in isl_printer_print_union_pw_multi_aff() argument
3080 if (!p || !upma) in isl_printer_print_union_pw_multi_aff()
3083 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_union_pw_multi_aff()
3084 return print_union_pw_multi_aff_isl(p, upma); in isl_printer_print_union_pw_multi_aff()
3085 isl_die(p->ctx, isl_error_unsupported, "unsupported output format", in isl_printer_print_union_pw_multi_aff()
3088 isl_printer_free(p); in isl_printer_print_union_pw_multi_aff()
3092 /* Print dimension "pos" of data->space to "p".
3094 * data->user is assumed to be an isl_multi_pw_aff.
3103 static __isl_give isl_printer *print_dim_mpa(__isl_take isl_printer *p, in print_dim_mpa() argument
3109 isl_multi_pw_aff *mpa = data->user; in print_dim_mpa()
3112 if (data->type != isl_dim_out) { in print_dim_mpa()
3113 enum isl_dim_type type = data->type; in print_dim_mpa()
3118 p = print_name(space, p, type, pos, data->latex); in print_dim_mpa()
3120 return p; in print_dim_mpa()
3123 pa = mpa->u.p[pos]; in print_dim_mpa()
3124 if (pa->n == 0) in print_dim_mpa()
3125 return isl_printer_print_str(p, "(0 : false)"); in print_dim_mpa()
3127 need_parens = pa->n != 1 || !isl_set_plain_is_universe(pa->p[0].set); in print_dim_mpa()
3129 p = isl_printer_print_str(p, "("); in print_dim_mpa()
3131 for (i = 0; i < pa->n; ++i) { in print_dim_mpa()
3134 p = isl_printer_print_str(p, "; "); in print_dim_mpa()
3135 p = print_aff_body(p, space, pa->p[i].aff); in print_dim_mpa()
3136 p = print_disjuncts(pa->p[i].set, space, p, 0); in print_dim_mpa()
3140 p = isl_printer_print_str(p, ")"); in print_dim_mpa()
3142 return p; in print_dim_mpa()
3145 /* Print "mpa" to "p" in isl format.
3147 * If "mpa" is zero-dimensional and has a non-trivial explicit domain,
3150 static __isl_give isl_printer *print_multi_pw_aff_isl(__isl_take isl_printer *p, in print_multi_pw_aff_isl() argument
3157 return isl_printer_free(p); in print_multi_pw_aff_isl()
3159 p = print_param_tuple(p, mpa->space, &data); in print_multi_pw_aff_isl()
3160 p = isl_printer_print_str(p, "{ "); in print_multi_pw_aff_isl()
3163 p = isl_print_space(mpa->space, p, 0, &data); in print_multi_pw_aff_isl()
3166 return isl_printer_free(p); in print_multi_pw_aff_isl()
3170 space = isl_space_domain(isl_space_copy(mpa->space)); in print_multi_pw_aff_isl()
3171 p = print_disjuncts_set(mpa->u.dom, space, p, 0); in print_multi_pw_aff_isl()
3174 p = isl_printer_print_str(p, " }"); in print_multi_pw_aff_isl()
3175 return p; in print_multi_pw_aff_isl()
3179 __isl_take isl_printer *p, __isl_keep isl_multi_pw_aff *mpa) in isl_printer_print_multi_pw_aff() argument
3181 if (!p || !mpa) in isl_printer_print_multi_pw_aff()
3182 return isl_printer_free(p); in isl_printer_print_multi_pw_aff()
3184 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_multi_pw_aff()
3185 return print_multi_pw_aff_isl(p, mpa); in isl_printer_print_multi_pw_aff()
3186 isl_die(p->ctx, isl_error_unsupported, "unsupported output format", in isl_printer_print_multi_pw_aff()
3187 return isl_printer_free(p)); in isl_printer_print_multi_pw_aff()
3190 /* Print dimension "pos" of data->space to "p".
3192 * data->user is assumed to be an isl_multi_val.
3197 static __isl_give isl_printer *print_dim_mv(__isl_take isl_printer *p, in print_dim_mv() argument
3200 isl_multi_val *mv = data->user; in print_dim_mv()
3202 if (data->type == isl_dim_out) in print_dim_mv()
3203 return isl_printer_print_val(p, mv->u.p[pos]); in print_dim_mv()
3205 return print_name(data->space, p, data->type, pos, data->latex); in print_dim_mv()
3208 /* Print the isl_multi_val "mv" to "p" in isl format.
3210 static __isl_give isl_printer *print_multi_val_isl(__isl_take isl_printer *p, in print_multi_val_isl() argument
3216 return isl_printer_free(p); in print_multi_val_isl()
3218 p = print_param_tuple(p, mv->space, &data); in print_multi_val_isl()
3219 p = isl_printer_print_str(p, "{ "); in print_multi_val_isl()
3222 p = isl_print_space(mv->space, p, 0, &data); in print_multi_val_isl()
3223 p = isl_printer_print_str(p, " }"); in print_multi_val_isl()
3224 return p; in print_multi_val_isl()
3227 /* Print the isl_multi_val "mv" to "p".
3232 __isl_take isl_printer *p, __isl_keep isl_multi_val *mv) in isl_printer_print_multi_val() argument
3234 if (!p || !mv) in isl_printer_print_multi_val()
3235 return isl_printer_free(p); in isl_printer_print_multi_val()
3237 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_multi_val()
3238 return print_multi_val_isl(p, mv); in isl_printer_print_multi_val()
3239 isl_die(p->ctx, isl_error_unsupported, "unsupported output format", in isl_printer_print_multi_val()
3240 return isl_printer_free(p)); in isl_printer_print_multi_val()
3243 /* Print dimension "pos" of data->space to "p".
3245 * data->user is assumed to be an isl_multi_id.
3250 static __isl_give isl_printer *print_dim_mi(__isl_take isl_printer *p, in print_dim_mi() argument
3253 isl_multi_id *mi = data->user; in print_dim_mi()
3255 if (data->type == isl_dim_out) in print_dim_mi()
3256 return isl_printer_print_id(p, mi->u.p[pos]); in print_dim_mi()
3258 return print_name(data->space, p, data->type, pos, data->latex); in print_dim_mi()
3261 /* Print the isl_multi_id "mi" to "p" in isl format.
3263 static __isl_give isl_printer *print_multi_id_isl(__isl_take isl_printer *p, in print_multi_id_isl() argument
3270 p = print_param_tuple(p, space, &data); in print_multi_id_isl()
3271 p = isl_printer_print_str(p, "{ "); in print_multi_id_isl()
3274 p = isl_print_space(space, p, 0, &data); in print_multi_id_isl()
3275 p = isl_printer_print_str(p, " }"); in print_multi_id_isl()
3276 return p; in print_multi_id_isl()
3279 /* Print the isl_multi_id "mi" to "p".
3284 __isl_take isl_printer *p, __isl_keep isl_multi_id *mi) in isl_printer_print_multi_id() argument
3286 if (!p || !mi) in isl_printer_print_multi_id()
3287 return isl_printer_free(p); in isl_printer_print_multi_id()
3289 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_multi_id()
3290 return print_multi_id_isl(p, mi); in isl_printer_print_multi_id()
3291 isl_die(isl_printer_get_ctx(p), isl_error_unsupported, in isl_printer_print_multi_id()
3292 "unsupported output format", return isl_printer_free(p)); in isl_printer_print_multi_id()
3295 /* Print dimension "pos" of data->space to "p".
3297 * data->user is assumed to be an isl_multi_union_pw_aff.
3303 static __isl_give isl_printer *print_union_pw_aff_dim(__isl_take isl_printer *p, in print_union_pw_aff_dim() argument
3306 isl_multi_union_pw_aff *mupa = data->user; in print_union_pw_aff_dim()
3310 p = print_body_union_pw_aff(p, upa); in print_union_pw_aff_dim()
3313 return p; in print_union_pw_aff_dim()
3316 /* Print the isl_multi_union_pw_aff "mupa" to "p" in isl format.
3318 * If "mupa" is zero-dimensional and has a non-trivial explicit domain,
3326 __isl_take isl_printer *p, __isl_keep isl_multi_union_pw_aff *mupa) in print_multi_union_pw_aff_isl() argument
3333 return isl_printer_free(p); in print_multi_union_pw_aff_isl()
3336 return isl_printer_free(p); in print_multi_union_pw_aff_isl()
3339 p = print_param_tuple(p, space, &data); in print_multi_union_pw_aff_isl()
3342 p = isl_printer_print_str(p, "("); in print_multi_union_pw_aff_isl()
3347 p = isl_print_space(space, p, 0, &data); in print_multi_union_pw_aff_isl()
3351 p = isl_printer_print_str(p, " : "); in print_multi_union_pw_aff_isl()
3352 p = isl_printer_print_union_set_isl_body(p, mupa->u.dom); in print_multi_union_pw_aff_isl()
3353 p = isl_printer_print_str(p, ")"); in print_multi_union_pw_aff_isl()
3356 return p; in print_multi_union_pw_aff_isl()
3359 /* Print the isl_multi_union_pw_aff "mupa" to "p" in isl format.
3364 __isl_take isl_printer *p, __isl_keep isl_multi_union_pw_aff *mupa) in isl_printer_print_multi_union_pw_aff() argument
3366 if (!p || !mupa) in isl_printer_print_multi_union_pw_aff()
3367 return isl_printer_free(p); in isl_printer_print_multi_union_pw_aff()
3369 if (p->output_format == ISL_FORMAT_ISL) in isl_printer_print_multi_union_pw_aff()
3370 return print_multi_union_pw_aff_isl(p, mupa); in isl_printer_print_multi_union_pw_aff()
3371 isl_die(isl_printer_get_ctx(p), isl_error_unsupported, in isl_printer_print_multi_union_pw_aff()
3372 "unsupported output format", return isl_printer_free(p)); in isl_printer_print_multi_union_pw_aff()