+#define CASE_IMPLVAL_FLOAT_PRINTF(fun, to, ival, with_suffix) \
+ CASE_IMPLVAL_LD_PRINTF(fun, to, ival, with_suffix); \
+ case PSI_T_FLOAT: \
+ if (isinf(ival.dval)) { \
+ fun(to, "\\INF"); \
+ } else if (isnan(ival.dval)) { \
+ fun(to, "\\NAN"); \
+ } else { \
+ fun(to, "%" PRIfval "%s", ival.dval, (with_suffix) ? "F" : ""); \
+ } \
+ break; \
+ case PSI_T_DOUBLE: \
+ if (isinf(ival.dval)) { \
+ fun(to, "\\INF"); \
+ } else if (isnan(ival.dval)) { \
+ fun(to, "\\NAN"); \
+ } else { \
+ fun(to, "%" PRIdval, ival.dval); \
+ } \
+ break
+
+#define CASE_IMPLVAL_INT_PRINTF(fun, to, ival, with_suffix) \