+static __isl_give isl_printer *str_print_double(__isl_take isl_printer *p,
+ double d)
+{
+ int left = p->buf_size - p->buf_n;
+ int need = snprintf(p->buf + p->buf_n, left, "%g", d);
+ if (need >= left) {
+ if (grow_buf(p, need))
+ goto error;
+ left = p->buf_size - p->buf_n;
+ need = snprintf(p->buf + p->buf_n, left, "%g", d);
+ }
+ p->buf_n += need;
+ return p;
+error:
+ isl_printer_free(p);
+ return NULL;
+}
+