isl_printer_print_qpolynomial: put parentheses around lone integer division
authorSven Verdoolaege <skimo@kotnet.org>
Tue, 21 Sep 2010 11:53:16 +0000 (13:53 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 21 Sep 2010 12:44:21 +0000 (14:44 +0200)
Otherwise, the integer division could be mistaken for a tuple.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl_output.c

index fc70284..64b4119 100644 (file)
@@ -1266,9 +1266,9 @@ static __isl_give isl_printer *print_pow(__isl_take isl_printer *p,
 
 static __isl_give isl_printer *upoly_print(__isl_keep struct isl_upoly *up,
        __isl_keep isl_dim *dim, __isl_keep isl_mat *div,
-       __isl_take isl_printer *p)
+       __isl_take isl_printer *p, int outer)
 {
-       int i, n, first;
+       int i, n, first, print_parens;
        struct isl_upoly_rec *rec;
 
        if (!p || !up || !dim || !div)
@@ -1281,7 +1281,8 @@ static __isl_give isl_printer *upoly_print(__isl_keep struct isl_upoly *up,
        if (!rec)
                goto error;
        n = upoly_rec_n_non_zero(rec);
-       if (n > 1)
+       print_parens = n > 1 || (outer && rec->up.var >= isl_dim_total(dim));
+       if (print_parens)
                p = isl_printer_print_str(p, "(");
        for (i = 0, first = 1; i < rec->n; ++i) {
                if (isl_upoly_is_zero(rec->p[i]))
@@ -1300,7 +1301,7 @@ static __isl_give isl_printer *upoly_print(__isl_keep struct isl_upoly *up,
                        if (!first)
                                p = isl_printer_print_str(p, " + ");
                        if (i == 0 || !isl_upoly_is_one(rec->p[i]))
-                               p = upoly_print(rec->p[i], dim, div, p);
+                               p = upoly_print(rec->p[i], dim, div, p, 0);
                }
                first = 0;
                if (i == 0)
@@ -1310,7 +1311,7 @@ static __isl_give isl_printer *upoly_print(__isl_keep struct isl_upoly *up,
                        p = isl_printer_print_str(p, " * ");
                p = print_pow(p, dim, div, rec->up.var, i);
        }
-       if (n > 1)
+       if (print_parens)
                p = isl_printer_print_str(p, ")");
        return p;
 error:
@@ -1323,7 +1324,7 @@ __isl_give isl_printer *isl_printer_print_qpolynomial(__isl_take isl_printer *p,
 {
        if (!p || !qp)
                goto error;
-       p = upoly_print(qp->upoly, qp->dim, qp->div, p);
+       p = upoly_print(qp->upoly, qp->dim, qp->div, p, 1);
        return p;
 error:
        isl_printer_free(p);
@@ -1627,7 +1628,7 @@ static __isl_give isl_printer *print_qpolynomial_c(__isl_take isl_printer *p,
                qp = isl_qpolynomial_mul(qp, f);
        }
        if (qp)
-               p = upoly_print(qp->upoly, qp->dim, qp->div, p);
+               p = upoly_print(qp->upoly, qp->dim, qp->div, p, 0);
        if (!isl_int_is_one(den)) {
                p = isl_printer_print_str(p, ")/");
                p = isl_printer_print_isl_int(p, den);